PART4.Modelling


平稳性检验-如果一个时间序列(或随机过程)的联合概率分布在时间或空间平移下不变,则它被定义为强平稳。特别重要的是,对交易员来说,这个过程的均值和方差不会随时间或空间而变化,而且它们都不会跟随趋势。

平稳价格序列的一个重要特征是,序列内的价格从初始值扩散的速度比GBM慢。通过测量这种扩散行为的速率,我们可以确定时间序列的性质,从而检测它是否是均值回归。现在我们将概述一个算法,即赫斯特指数,它帮助我们描述时间序列的平稳性。

赫斯特指数-Hurst指数的目标是为我们提供一个标量值,它将帮助我们识别(在统计估计的范围内)一个序列是均值回归、随机游走还是趋势。

赫斯特指数计算背后的思想是,我们可以使用对数价格序列的方差来评估扩散行为的速率。任意时间滞后τ,τ的方差是由:

大括号中的内容指的是所有t的均值。

其目的是将扩散速率与GBM进行比较。在GBM的情况下,在大的时间(即τ较大时)τ的方差与τ成正比:

如果我们发现与这种关系不同的行为,那么我们就确定了是趋势或均值回归序列。关键的观点是,如果任何连续的价格走势具有非零相关性(称为自相关性),那么上述关系是无效的。相反,可以将其修改为包含一个指数值“2H”,得到Hurst指数值H:

因此,可以看出,如果H = 0.5,我们有一个GBM,因为它只是变成了之前的关系。然而,如果h

0.5,则有趋势或均值恢复行为。特别是:

● H < 0.5 -时间序列为均值回复

● H = 0.5 -时间序列是一个几何布朗运动

● H > 0.5 -时间序列是趋势

除了描述时间序列的特征外,赫斯特指数还描述了范围。以分类的方式表现的系列。例如,接近0的H值是一个高度平均的恢复序列,而接近1的H值则是一个强烈的趋势。

要计算Amazon price系列的Hurst指数,如上文解释ADF时所使用的,我们可以使用以下Python代码:


from __future__ import print_function 
from numpy import cumsum, log, polyfit, sqrt, std, subtract 
from numpy.random import randn 
def hurst(ts): 
"""返回时间序列向量t的Hurst指数""" 
# 创建滞后值的范围
lags = range(2, 100) 
# 计算滞后差的方差数组s 
tau = [sqrt(std(subtract(ts[lag:], ts[:-lag]))) for lag in lags] 
# 使用线性拟合估计赫斯特指数
poly = polyfit(log(lags), log(tau), 1) 
# 从polyfit输出返回Hurst指数 
return poly[0]*2.0 
# 创建一个Gometric brown Motion, Mean-Reverting and trends序列
gbm = log(cumsum(randn(100000))+1000) 
mr = log(randn(100000)+1000) 
tr = log(cumsum(randn(100000)+1)+1000) 
# 输出上述每个序列的Hurst指数
# 以及亚马逊的价格(调整后的收盘价) 
# 本文给出的ADF测试
print("Hurst(GBM): %s" % hurst(gbm)) 
print("Hurst(MR): %s" % hurst(mr)) 
print("Hurst(TR): %s" % hurst(tr))
# 假设您已经运行了上面的代码来获得' amzn ' !
print("Hurst(AMZN): %s" % hurst(amzn[Adj Close])) 


Hurst指数的Python代码输出在下方给出:


Hurst(GBM): 0.502051910931 
Hurst(MR): 0.000166110248967 
Hurst(TR): 0.957701001252 
Hurst(AMZN): 0.454337476553 


从这个输出我们可以看到,GBM的赫斯特指数H几乎正好是0.5。回归序列的平均H几乎等于零,而趋势序列的H接近于1。

有趣的是,Amazon的H也接近0.5,这表明它类似于GBM,至少在我们使用的样本期间是这样!


 


更多内容请关注公众号【火象】~