1 def Hurst(data): 2 n = 6 3 data = pd.Series(data).pct_change()[1:] 4 ARS = list() 5 lag = list() 6 for i in range(n): 7 m = 2 ** i 8 size = np.size(data) // m 9 lag.append(size) 10 panel = {} 11 for j in range(m): 12 panel[str(j)] = data[j*size:(j+1)*size].values 13 14 panel = pd.DataFrame(panel) 15 mean = panel.mean() 16 Deviation = (panel - mean).cumsum() 17 maxi = Deviation.max() 18 mini = Deviation.min() 19 sigma = panel.std() 20 RS = maxi - mini 21 RS = RS / sigma 22 ARS.append(RS.mean()) 23 24 lag = np.log10(lag) 25 ARS = np.log10(ARS) 26 hurst_exponent = np.polyfit(lag, ARS, 1) 27 hurst = hurst_exponent[0] 28 29 return hurst
注意:Hurst指數描述的記憶性僅對線性過程有效;對於復雜非線性過程,其記憶性需要除Hurst指數之外的其他參數來描述(Kamenshchikov 2014)。而投資品價格和收益率變化是非線性過程。