Engle和Granger观察到了一个相当有趣的现象。尽管两个时间序列是非平稳的,但在某些情况下,两者的特定线性组合实际上是平稳的;也就是说,这两个序列在某种程度上是步调一致的。Engle和Granger创造了“协整”(cointegration)一词,并在一篇文章中提出了这一概念(参考文献Engle, Robert F. and C. W. Granger. “Co-integration and Error Correction: Representation, Estimation and Testing.” Econometrica 55, no. 2 (March 1987) 251–276.)。值得注意的是,这是他们2003年获得诺贝尔经济学奖的其中一个理念。

协整检验代码 python 协整检验的数据要求_时间序列协整检验代码 python 协整检验的数据要求_时间序列_02是两个非平稳的序列,存在特定的值协整检验代码 python 协整检验的数据要求_金融_03,使得序列协整检验代码 python 协整检验的数据要求_ci_04是平稳的,那么就说协整检验代码 python 协整检验的数据要求_时间序列协整检验代码 python 协整检验的数据要求_时间序列_02是协整的。

协整的变化情况可以被误差修正(error correction)的这个概念所描述。误差修正背后的思想是,协整系统有一个长期均衡值;即两个时间序列的线性组合的长期平均值。如果与长期均值存在偏差,则一个或两个时间序列会自行调整以恢复长期均衡。认为误差修正和协整本质上是等价的定理称为Granger representation theorem。

协整检验代码 python 协整检验的数据要求_协整检验代码 python_07表示时间序列协整检验代码 python 协整检验的数据要求_ci_08的白噪声过程。用协整检验代码 python 协整检验的数据要求_时间序列_09表示时间序列协整检验代码 python 协整检验的数据要求_时间序列的白噪声过程。误差修正表示为:

协整检验代码 python 协整检验的数据要求_方差_11

 式子的左侧是每个时间步长的时间序列增量。右侧是两个表达式的总和,即修正部分和白噪声部分。我们来看看修正部分协整检验代码 python 协整检验的数据要求_时间序列_12,其中协整检验代码 python 协整检验的数据要求_金融_13表示与长期均值的偏离(本例子中长期均值是0),协整检验代码 python 协整检验的数据要求_金融_03表示协整系数(coefficient of cointegration)。协整检验代码 python 协整检验的数据要求_时间序列_15误差修正率(error correction rate),表示时间序列校正回长期均值的速度。协整检验代码 python 协整检验的数据要求_协整检验代码 python_07以及协整检验代码 python 协整检验的数据要求_时间序列_09表示两个独立的白噪声,它们都服从均值为0,方差为1的正态分布。其它参数协整检验代码 python 协整检验的数据要求_时间序列_18协整检验代码 python 协整检验的数据要求_协整检验代码 python_19协整检验代码 python 协整检验的数据要求_金融_20。注意,在误差修正这个种情况下,协整检验代码 python 协整检验的数据要求_时间序列_15协整检验代码 python 协整检验的数据要求_金融_22要设置成相反的符号。那时间序列协整检验代码 python 协整检验的数据要求_ci_08以及时间序列协整检验代码 python 协整检验的数据要求_ci_24就根据这些参数生成。如下图为两个时间序列:

协整检验代码 python 协整检验的数据要求_协整检验代码 python_25

协整的两个时间序列  根据

协整检验代码 python 协整检验的数据要求_时间序列_26

,可以继续计算spread价差时序,如下两图,从价差时序的自相关函数可以看出,价差是一个平稳的时间序列。

协整检验代码 python 协整检验的数据要求_协整检验代码 python_27

价差

 

协整检验代码 python 协整检验的数据要求_金融_28

价差时序的自相关函数

 


一种协整建模的方法是Stock and Watson方法,又称为共同趋势模型(commond trends model).这个模型把时间序列表示成两部分组成:平稳部分和非平稳部分。如果两个时间序列是协整的,那么协整线性组合将抵消非平稳部分,只留下平稳部分。

考虑一下两个时间序列:

协整检验代码 python 协整检验的数据要求_时间序列_29

 其中协整检验代码 python 协整检验的数据要求_时间序列_30协整检验代码 python 协整检验的数据要求_协整检验代码 python_31是随机游走,即非平稳部分。协整检验代码 python 协整检验的数据要求_时间序列_09以及协整检验代码 python 协整检验的数据要求_协整检验代码 python_07是平稳的部分。线性组合协整检验代码 python 协整检验的数据要求_时间序列_34是协整组合来的时间序列,这个序列是平稳的。我们有:

协整检验代码 python 协整检验的数据要求_方差_35

 如果上式是平稳的,那么非平稳的部分是0,即协整检验代码 python 协整检验的数据要求_协整检验代码 python_36,也就是说一个时间序列的趋势部分是另一个时间序列趋势部分的协整检验代码 python 协整检验的数据要求_金融_03倍。所以,对于两个时间序列,如果他们协整,那么他们的趋势是某种程度(倍数的关系)是相同的。