Hurst exponent in Python

In this tutorial, we will learn about using the Hurst exponent in Python. The Hurst exponent is a useful parameter in dealing with time-series. It is a measure of a time-series to either regress near a mean or to tend in a particular direction.

We look at a simple implementation of finding the Hurst exponent in Python with the help of the Hurst module.

Inferences from the Hurst Exponent

1. H = 0.5
This is indicative of a Brownian series. There is no correlation between current observations and future observations. It is difficult to predict values in the future.
2. H > 0.5
This is indicative of a Persistent time-series. In the short term, values will tend to follow their existing trends. That is, those values which are increasing are predicted to increase and vice-versa.
3. H < 0.5
This is indicative of an Anti-Persistent time-series. In, the short term, values will tend to go against their existing trends. That is, those values which are increasing are predicted to decrease and vice-versa.

Implementation of the Hurst Exponent in Python

The Hurst module makes it very simple for us to find the Hurst exponent of a time-series. Here are the steps involved.

First, we need to install the Hurst module. We also need to import the necessary libraries and modules into our code.

```!pip install hurst

import numpy as np
import matplotlib.pyplot as plt
from hurst import compute_Hc, random_walk
```

Secondly, we need to have a time-series to work with. We can create such a series using the random_walk() function.

```# Use random_walk() function to generate a random walk series
s = random_walk(10000) # the parameter passed must be 100 or more```

Next, we use the compute_Hc() function to compute the values of the Hurst exponent (H) and the constant (c).

```# compute_Hc returns a tuple of 3 values
H, c, val = compute_Hc(s)```

This step is optional. We can plot a logarithmic graph of Rescaled Range (R/S) vs Time interval.

```# Plot the graph
axes = plt.subplots()[1]
axes.plot(val[0], c*val[0]**H, color="blue")
axes.scatter(val[0], val[1], color="red")
axes.set_xscale('log')
axes.set_yscale('log')
axes.set_xlabel('Time interval')
axes.set_ylabel('R/S ratio')
axes.grid(True)
plt.show()```

Sample Output:

Finally, we display the value of the Hurst exponent.

```# printing the Hurst exponent to 4 decimal places
print("Hurst exponent = {:.4f}".format(H))```

Sample Output:

`Hurst exponent = 0.5071`

Conclusion

In this tutorial, we learned how to find the Hurst exponent for a time-series using Python. We did this with the help of the Hurst module.

2 responses to “Hurst exponent in Python”

1. Christian Vaiana says:

how can you read and explicate this chart?

2. bbh says: