The Hurst Exponent

5 min read

By Vibhu Singh, Varun Divakar and Ashish Garg

In this blog, we will be discussing an important concept in time series analysis: The Hurst Exponent. We will learn how to calculate it with the help of an example.

First, let us understand what Hurst exponent is.


Hurst Exponent Definition

The Hurst exponent is used as a measure of long-term memory of time series. It relates to the autocorrelations of the time series and the rate at which these decrease as the lag between pairs of values increases.


Hurst Value

Hurst Value is more than 0.5

If the Hurst value is more than 0.5 then it would indicate a persistent time series (roughly translates to a trending market).

Hurst Value is less than 0.5

If the Hurst Value is less than 0.5 then it can be considered as an anti-persistent time series (roughly translates to sideways market).

Hurst Value is 0.5

If the Hurst value is 0.5 then it would indicate a random walk or a market where prediction of future based on past data is not possible.


How To Calculate The Hurst Exponent

To calculate the Exponent, we need to divide the data into different chunks. For example, if you have the return data of BTC/USD for the past 8 days’ data, then you divide it into halves as follows.

Following the example of 8 observations for illustrative purposes only1:

Data Chunk 1
0.04
0.02
0.05
0.08
0.02
-0.17
0.05
0

1Length of the subseries in practical applications is usually much longer and affects the mean and standard deviation of the R/S statistic.

Then, we divide the data into 3 different chinks as follows:

  1. Division 1 - one chunk of 8 observations
  2. Division 2 - two chunks of 4 observations each
  3. Division 3 - four chunks of 2 observations each
Data Chunk 1
0.04
0.02
0.05
0.08
0.02
-0.17
0.05
0
Data Chunk 2 Chunk 3
0.04 0.02
0.02 -0.17
0.05 0.05
0.08 0
Data Chunk 4 Chunk 5 Chunk 6 Chunk 7
0.04 0.05 0.02 0.05
0.02 0.08 -0.17 0

After dividing the data into chunks, we perform the following calculations on each chunk:

Step 1

First we calculate the mean of the chunk, with say n observations,

M = (1/n) [ h(1)+h(2)+...+h(n) ]
Data Chunk 1
0.04
0.02
0.05
0.08
0.02
-0.17
0.05
0
Data Chunk 2 Chunk 3
0.04 0.02
0.02 -0.17
0.05 0.05
0.08 0
Data Chunk 4 Chunk 5 Chunk 6 Chunk 7
0.04 0.05 0.02 0.05
0.02 0.08 -0.17 0

Step 2

Then we calculate the standard deviation (S) of the n observations

s(n) = STD( h(1)+h(2)+...+h(n))
Mean  0.011
Std 0.072
Mean   0.048 -0.025
Std 0.022 0.099
Mean 0.030 0.065 -0.075 0.025
Std 0.0141 0.021 0.134 0.035

Step 3

Then we create a mean centered series by subtracting the mean from the observations,

x(1) = h(1) - M x(2) = h(2) - M ... x(n) = h(n) - M
Mean-Centred Series (h(n)-M) 0.029
Std 0.009
Mean-Centred Series (h(n)-M) -0.008 0.045
Std -0.028 -0.145
Mean-Centred Series (h(n)-M) 0.010 -0.015 0.095 0.025
Std -0.010 0.015 -0.095 -0.025

Step 4

Then we calculate the cumulative deviation by summing up the mean centred values,

Y(1) = x(1) Y(2) = x(1) + x(2) ... Y(n) = x(1) + x(2) + ...+ x(n)
Mean-Centred Series (h(n)-M) 0.029
Std 0.009
Mean-Centred Series (h(n)-M) -0.008 0.045
Std -0.028 -0.145
Mean-Centred Series (h(n)-M) 0.010 -0.015 0.095 0.025
Std -0.010 0.015 -0.095 -0.025

Step 5

Next, we calculate the Range (R), which is the difference between the maximum value of the cumulative deviation and the minimum value of the cumulative deviation,

R(n) = MAX[Y(1),Y(2)...Y(n)] - MIN[Y(1),Y(2)...Y(n)]
Cumulative sum of Mean-centred series 0.029
0.038
0.076
0.145
0.154
-0.028
0.011
0.000
Cumulative sum of Mean-centred series -0.008 0.045
-0.035 -0.100
-0.033 -0.025
0.000 0.000
Cumulative sum of Mean-centred series 0.010 -0.015 0.095 0.025
0.000 0.000 0.000 0.000

Step 6

And finally, we compute the ratio of the range R to the standard deviation S. This also known as the rescaled range.

Range 0.173
R/S (Range/ Std) 2.390
Average R/S 2.390
Range 0.035 0.145
R/S (Range/ Std) 1.617 1.467
Average R/S 1.542  
Range 0.010 0.015 0.095 0.025
R/S (Range/ Std) 0.707 0.707 0.707 0.707
Average R/S 0.707      

Step 7

Once we have the rescaled range for all the chunks, we compute the mean of each Division and note it along with the number of samples in each chunk of that Division as shown.

Hurst Exponent 10
Range 0.173
R/S (Range/ Std) 2.390
Average R/S 2.390
Range 0.035 0.145
R/S (Range/ Std) 1.617 1.467
Average R/S 1.542  
Range 0.010 0.015 0.095 0.025
R/S (Range/ Std) 0.707 0.707 0.707 0.707
Average R/S 0.707      

Step 8

Next, we calculate the logarithmic values for the size of each region and for each region’s rescaled range.

Summary
Size R/S Log of Size Log of R/S
8 2.390 2.079 0.871
4 1.542 1.386 0.433
2 0.707 0.693 -0/347

Result

The Hurst exponent ‘H’ is nothing but the slope of the plot of each range’s log(R/S) versus each range’s log(size).

Here log(R/S) is the dependent or the y variable and log(size) is the independent or the x variable:

Hurst Exponent 0.878

Conclusion

This hurst exponent value is indicating that our data is a persistent one, but we have to keep in mind that our data set is too small to draw such a conclusion.

For example, if you want to calculate hurst exponent in python using the ‘hurst’ library, it requires you to give at least 100 data points.

We hope you have learnt how to calculate the Hurst exponent from this blog. In our advanced course on cryptocurrencies, we have demonstrated how hurst exponent along with another technical indicator can yield optimized trading signals.


Disclaimer: All investments and trading in the stock market involve risk. Any decisions to place trades in the financial markets, including trading in stock or options or other financial instruments is a personal decision that should only be made after thorough research, including a personal risk and financial assessment and the engagement of professional assistance to the extent you believe necessary. The trading strategies or related information mentioned in this article is for informational purposes only.

Crypto Trading Advanced Strategies Course