Rescaled range

The rescaled range is a statistical measure of the variability of a time series introduced by the British hydrologist Harold Edwin Hurst (1880–1978). Its purpose is to provide an assessment of how the apparent variability of a series changes with the length of the time-period being considered.

The rescaled range of time series is calculated from dividing the range of its mean adjusted cumulative deviate series (see the Calculation section below) by the standard deviation of the time series itself. For example, consider a time series {1,3,1,0,2,5}, which has a mean m = 2 and standard deviation S = 1.79. Subtracting m from each value of the series gives mean adjusted series {-1,1,-1,-2,0,3}. To calculate cumulative deviate series we take the first value -1, then sum of the first two values -1+1=0, then sum of the first three values and so on to get {-1,0,-1,-3,-3,0}, range of which is R = 3, so the rescaled range is R/S = 1.68.

If we consider the same time series, but increase the number of observations of it, the rescaled range will generally also increase. The increase of the rescaled range can be characterized by making a plot of the logarithm of R/S vs. the logarithm of the number of samples. The slope of this line gives the Hurst exponent, H. If the time series is generated by a random walk (or a Brownian motion process) it has the value of H =1/2. Many physical phenomena that have a long time series suitable for analysis exhibit a Hurst exponent greater than 1/2. For example, observations of the height of the Nile River measured annually over many years gives a value of H = 0.77.

Several researchers (including Peters, 1991) have found that the prices of many financial instruments (such as currency exchange rates, stock values, etc.) also have H > 1/2. This means that they have a behavior that is distinct from a random walk, and therefore the time series is not generated by a stochastic process that has the nth value independent of all of the values before this. According to model of Fractional Brownian motion this is referred to as long memory of positive linear autocorrelation. However it has been shown that this measure is correct only for linear evaluation: complex nonlinear processes with memory need additional descriptive parameters. Several studies using Lo's modified rescaled range statistic have contradicted Peters' results as well.

Calculation

 * The Rescaled Range is calculated for a time series, $$X=X_1,X_2,\dots, X_n \, $$, as follows:


 * 1) Calculate the mean
 * $$m=\frac{1}{n} \sum_{i=1}^{n} X_i \,$$
 * 1) Create a mean adjusted series
 * $$Y_t=X_{t}-m \text{ for } t=1,2, \dots ,n \, $$
 * 1) Calculate the cumulative deviate series Z;
 * $$Z_t= \sum_{i=1}^{t} Y_{i} \text{  for }  t=1,2, \dots ,n \, $$
 * 1) Create a range series R;
 * $$ R_t = \max\left (Z_1, Z_2, \dots, Z_t \right )- \min\left (Z_1, Z_2, \dots, Z_t  \right ) \text{  for } t=1,2, \dots, n \, $$
 * 1) Create a standard deviation series S;
 * $$S_{t}= \sqrt{\frac{1}{t} \sum_{i=1}^{t}\left ( X_{i} - m(t) \right )^{2}} \text{  for } t=1,2, \dots ,n \, $$
 * Where m(t) is the mean for the time series values through time $$t$$ $$X_1,X_2, \dots, X_t \, $$
 * 1) Calculate the rescaled range series (R/S)
 * $$\left ( R/S \right )_{t} = \frac{R_{t}}{S_{t}} \text{ for } t=1,2, \dots, n \, $$

Lo (1991) advocates adjusting the standard deviation $$S$$ for the expected increase in range $$R$$ resulting from short-range autocorrelation in the time series. This involves replacing $$S$$ by $$ \hat{S} $$, which is the square root of

$$ \hat{S}^2 = S^2 + 2 \sum_{j=1}^{q} \left( 1 - \frac{j}{q + 1} \right) C(j), $$

where $$q$$ is some maximum lag over which short-range autocorrelation might be substantial and $$C(j)$$ is the sample autocovariance at lag $$j$$. Using this adjusted rescaled range, he concludes that stock market return time series show no evidence of long-range memory.

Implementations

 * Matlab code for computing R/S, DFA, periodogram regression and wavelet estimates of the Hurst exponent and their corresponding confidence intervals is available from RePEc: https://ideas.repec.org/s/wuu/hscode.html
 * Implementation in Python: https://github.com/Mottl/hurst