Hurst Exponent金融时间序列分析以及在股票上的运用

 

定义:  

Hurst Exponent是用来衡量时间序列是否存记忆性的指标,所谓记忆性,即是指当前时间序列的取值对未来的取值存在一定的影响,而不仅仅是随机游走。

  它的英文解释:

The Hurst exponent is used as a measure of long-term memory of time series. It relates to the autocorrelations of the time series and the rate at which these decrease as the lag between pairs of values increases.

  取值:

通常用来和0.5做比较,并分成三个区间,如下:

1. H < 0.5,说明时间序列趋向于回归均值,mean reverting;

2. H = 0.5,越接近0.5,说明时间序列只是随机游走,即布朗运动;

3. H > 0.5,越大,说明时间序列具有一定的趋势。

 

Python中有已经有封装Package,pip install hurst 安装即可。

 

 

在金融股票上的运用

  我们常常用Hurst指标去判断一只股票是否存在mean version,这对于分析股票的走势有很大帮助。

  当一只股票近来的表现不同于其历史平均,这往往是该股对应的公司信息发生某些改变,也就是触发了mean version。

(我的理解其实就是价格围绕价值上下波动)

 

用代码实现提取沪深300的股票信息,并列举出存在mean version的股票

 

from statsmodels.tsa.stattools import adfuller
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import tushare as ts
import pandas_datareader as web
from hurst import compute_Hc, random_walk

hs300 = ts.get_hs300s() #获取沪深300股票代码

symbols = hs300['code'] #获取股票的symbol


#把沪深300的近几年的所有历史数据下载,并保存为csv文档在指定文件夹下
def getCode(code):
    for i in range(len(code)):
        df = ts.get_hist_data(code[i])
        df.to_csv('./data_300/'+code[i]+'.csv')

getCode(symbols )


i = 0
res = []
for symbol in symbols:
    data = pd.read_csv('./data_300/'+symbol+'.csv')  #读取股票数据

    H, c, data = compute_Hc(data['close'], kind='random_walk', simplified=True) #调用API计算H值

    if H< 0.5:
        print("Stock Code:%s %s"%(symbol,H))
        res.append((symbol,H))
        i+=1
print(i)



#获取宁德时代 2019.9.1 到 2020.2.7日的历史交易数据
ningde = web.DataReader('300750.sz',data_source='yahoo',start='9/1/2019', end='2/7/2020')

H, c, data = compute_Hc(ningde['Adj Close'], kind='random_walk', simplified=True)

H返回值:0.8481060556993751

Hurst Exponent金融时间序列分析以及在股票上的运用_第1张图片

这是这段时间宁德的K线图,结合H值,还是很能说明趋势。

 

你可能感兴趣的:(数据分析)