You are here:  Home » 量化交易与机器学习 » python statsmodels coint协整关系检验与结果分析

在满足数据的平稳性后,使用原时间序列进行coint协整检验。(如果前面有进行一阶差分,也不能用一阶差分的序列,切记)

statsmodels.tsa.stattools.coint

statsmodels.tsa.stattools.coint(y0,y1,trend ='c',method ='aeg',maxlag = None,autolag ='aic',return_results = None)

 

测试单变量方程的非协整

零假设不是协整。假设y0和y1中的变量是阶数1,I(1)的积分。

这使用增强的Engle-Granger两步协整检验。常数或趋势包括在第一阶段回归中,即在协整方程中。

警告:statsmodels 0.8相比,autolag默认值已更改。在0.8 autolag始终为None,没有使用关键字,默认为’aic’。使用autolag = None可以避免滞后搜索。

参数
y1 (array_like,1d)
协整向量中的第一个元素
y2 (array_like)
协整向量中的剩余元素
trend (str {‘c’,’ct’})
趋势项包括在回归中用于协整方程

  • ‘c’:不变
  • ‘ct’:恒定和线性趋势
  • 也有二次趋势’ctt’,没有常数’nc’
method (string)
目前只有“aeg”用于增强的Engle-Granger测试。默认可能会改变。
maxlag (无或int)
adfuller的关键字,最大或给定滞后数
autolag (string)
adfuller的关键字,滞后选择标准。

  • 如果为None,则使用maxlag滞后而不进行滞后搜索
  • 如果是’AIC’(默认值)或’BIC’,则选择滞后数以最小化相应的信息标准
  • 基于’t-stat’的maxlag选择。从maxlag开始并使用5%大小的测试来降低滞后,直到最后一个滞后长度的t统计量显着为止
return_results (bool)
为了将来的兼容性,目前只有元组可用。如果为True,则返回结果实例。否则,返回包含测试结果的元组。设置return_results = False以避免将来的更改返回。
返回
coint_t (float)
残差单位根检验的t统计量
pvalue (float)
MacKinnon基于MacKinnon的近似渐近p值(1994)
crit_value (dict)
基于回归曲线的1%,5%和10%水平的检验统计量的临界值。这取决于观察的数量。

 

coint(price_A, price_B)
(-3.5596060078230063, 0.0274647420557733, array([-3.89666127, -3.33625344, -3.04453569]))

statsmodels coint协整关系结果分析:

1、coint_t 值小于5%的临界值,说明有95%的把握拒绝原假设;

2、p-value的值也小于0.05也比较小;

可以判断两个时间序列协整关系。

 

协整关系
协整(Cointegration)理论是恩格尔(Engle)和格兰杰(Granger)在1978年提出的。平稳性是进行时间序列分析的一个很重要的前提,很多模型都是基于平稳下进行的,而现实中,很多时间序列都是非平稳的,所以协整是从分析时间序列的非平稳性入手的。

如果两组序列都是非平稳的,但是经过一阶差分后是平稳的,且这两组序列经过某种线性组合也是平稳的,则它们之间就存在协整关系。

协整理论的意义在于:

首先,因为或许单个序列是非平稳的,但是通过协整我们可以建立起两个或者多个序列之间的平稳关系,进而充分应用平稳性的性质。
其次,可以避免伪回归。如果一组非平稳的时间序列不存在协整关系,那么根据它们构造的回归模型就可能是伪回归。
区别变量之间长期均衡关系和短期波动关系。