Estimating Daily Hurst Exponents with Rolling Windows
Summary
The document asks how to produce a daily series of Hurst exponent estimates for stock returns, rather than a single estimate for an entire time series. It includes a Python function that estimates one exponent by calculating variability across lagged differences, fitting a line to the log lag and log variability values, and scaling the fitted slope. The question is how to adapt that single-sample calculation to update through time.
No answer or adaptation is supplied, and the text gives no rolling-window length, daily estimation procedure, or evidence about the reliability of daily values. Consequently, it introduces a way to estimate an overall Hurst exponent but does not resolve how to obtain or interpret daily estimates. Any time-varying implementation would need to specify its data window and account for estimation noise; those choices are outside the document’s discussion.
Key ideas
- The document seeks a Hurst exponent estimate for each day of a stock-return series.
- The included method fits a line to log lag lengths and log variability of lagged differences.
- The slope of that fit is scaled to produce a single Hurst exponent estimate.
- The text does not explain how to convert the single estimate into a daily rolling series.
- Window selection and the reliability of frequently updated estimates remain unaddressed.
Tags
Full text
# Daily Hurst Exponent
# Daily Hurst Exponent
I am trying to estimate daily Hurst exponent values of a stock returns (e.g. for each day to have also Hurst exponent - something like that: https://www.quandl.com/data/PE/CKEC_HURST-Hurst-Exponent-of-Carmike-Cinemas-Inc-Common-Stock-CKEC-NASDAQ).
I am using tis Python code (taken from https://www.quantstart.com/articles/Basics-of-Statistical-Mean-Reversion-Testing), but I do not how to accomodate it for daily Hurst values instead of just one value:
```
from numpy import cumsum, log, polyfit, sqrt, std, subtract
from numpy.random import randn
def hurst(ts):
"""Returns the Hurst Exponent of the time series vector ts"""
# Create the range of lag values
lags = range(2, 100)
# Calculate the array of the variances of the lagged differences
tau = [sqrt(std(subtract(ts[lag:], ts[:-lag]))) for lag in lags]
# Use a linear fit to estimate the Hurst Exponent
poly = polyfit(log(lags), log(tau), 1)
# Return the Hurst exponent from the polyfit output
return poly[0]*2.0
```Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.