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:

Hurst exponent in Python

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.

Also read: Display various Datetime formats using Python

Leave a Reply

Your email address will not be published. Required fields are marked *