量化交易中文教材

第 17b 章 单整、单位根检验的非标准分布与协整

学习目标

读完本章,你应当能够:

  1. 定义 I(0)、I(1)、I(2) 和单整阶数,判断一个序列需要差分几次才平稳,并用「对差分序列做单位根检验」区分 I(1) 与 I(2)。
  2. 推导无截距 Dickey–Fuller 统计量分子的极限分布 \(\frac{\sigma_u^2}{2}(\chi^2_1-1)\),说明 DF 统计量为什么不服从正态、为什么必须用专门的临界值。
  3. 陈述协整的定义,写出向量误差修正模型(VECM),解释误差修正项的经济含义。
  4. 在协整系数已知和未知两种情形下检验协整:ADF 检验与 Engle–Granger ADF(EG-ADF)检验,并使用正确的临界值。
  5. 用动态 OLS(DOLS)估计协整系数并做有效的正态推断。
  6. 把以上工具用于配对交易:选对、估计对冲比、判断回复速度与半衰期,并知道协整检验在实务中的局限。

读前导读

这一章在解决什么问题

第 15b 章告诉你:价格有单位根,不要在价格水平上回归,要差分成收益。本章补上两块。

第一块是理论:为什么 Dickey–Fuller 统计量不服从正态分布。本章用一个只需要中学代数加中心极限定理的推导,证明 DF 回归分子的极限是「卡方减 1」,从而说明专用临界值表从何而来。如果你只想用检验,这部分可以只看结论;如果你想理解「为什么单位根这么特殊」,这是最短的路径。

第二块是实务的核心:协整。两只股票的价格各自都是随机游走,但某个组合(价差)可能是平稳的、会均值回复。这正是配对交易、期现套利、利率曲线交易的统计基础。你在 CFA 二级学过「两个都有单位根的序列,如果协整,回归才有意义」以及 Engle–Granger 检验的名字;本章讲清楚:协整系数已知时怎么检验,未知时为什么要用更严格的临界值,怎么得到对冲比的可靠标准误(DOLS),以及误差修正模型(VECM)里的调整系数如何告诉你「谁向谁回归、回得多快」。

需要先想起来的数学

  • 伸缩求和(telescoping sum):\(\sum_{t=1}^T(a_t-a_{t-1})=a_T-a_0\),中间项全部抵消。DF 分子推导的关键一步。例:\((a_1-a_0)+(a_2-a_1)+(a_3-a_2)=a_3-a_0\)。见 第 00 册第 04 章 级数与收敛。
  • 卡方分布:若 \(Z\sim N(0,1)\),则 \(Z^2\sim\chi^2_1\),均值 1、方差 2,取值非负、右偏。\(\chi^2_1-1\) 均值为 0,但下界为 −1、右尾很长。
  • 依分布收敛与 Slutsky 定理:\(\xrightarrow{d}\) 表示「分布越来越接近某个极限分布」;Slutsky 定理说,一个依分布收敛的量与一个依概率收敛到常数的量相加、相乘,结果的极限就按常数代入计算。连续映射定理说,依分布收敛的量经过连续函数(如平方),极限也跟着变换。见 第 00 册第 07 章 概率中的分析工具。
  • 收敛速度:「\(\sqrt T\) 一致」指估计误差约按 \(1/\sqrt T\) 缩小,「超一致」指按 \(1/T\) 缩小,后者快得多。样本扩大 4 倍,前者误差减半,后者降到四分之一。同见第 07 章的大 O 记号。
  • 线性组合与秩:三个变量最多两个「线性无关」的协整关系,用的是线性代数里「线性无关」和「秩」的概念。见 第 00 册第 06 章 线性代数速成。

怎么读这一章

核心必读:17.3.2(单整阶数,KC 17.4)、17.4.1–17.4.3(协整定义、VECM、EG-ADF 检验和表 17.1)、17.4.4 的 DOLS(至少读懂它为什么要加超前和滞后)。17.3.3 的推导建议跟着纸笔走一遍,约 15 分钟,能真正理解 DF 分布为何非标准;时间紧可以只读最后两段。17.4.5 的多变量推广第一次可以只看利率三期限的例子。量化实战的配对交易流程和示例二是本章最实用的部分。


17.3 单整阶数与单位根检验统计量的非正态性

17.3.1 比随机游走更平滑的趋势:I(2)

回顾第 15.6 节的带漂移随机游走:

\[Y_t=\beta_0+Y_{t-1}+u_t,\tag{17.16}\]
\(u_t\) 序列不相关。它有一个等于 1 的自回归根,即单位根(unit root)。

有些经济序列的趋势比随机游走更平滑,相邻两期的变化很小,例如价格水平的对数。一种描述平滑趋势的模型是:让序列的一阶差分服从随机游走,

\[\Delta Y_t=\beta_0+\Delta Y_{t-1}+u_t.\tag{17.17}\]
此时 \(\Delta Y_t\) 本身是随机游走,有单位根;要再差分一次,二阶差分(second difference)\(\Delta^2Y_t=\Delta Y_t-\Delta Y_{t-1}=\beta_0+u_t\) 才平稳。

为什么这种序列看起来「平滑」?因为 \(Y_t\) 是 \(\Delta Y_t\) 的累加,而 \(\Delta Y_t\) 本身已经是随机游走的累加。累加两次,高频的抖动被大幅平均掉,剩下缓慢变化的曲线。

白话解释:小提醒,开头「回顾第 15.6 节」应为原书 15.7 节(本册第 15b 章 15.7.2),15.6 节讲的是滞后阶数选择。

用物理类比理解 I(0)/I(1)/I(2):把 \(u_t\) 想成每期随机的「加速度」冲击。I(1) 序列是「位置 = 冲击的累加」,像醉汉走路,方向随时改;I(2) 序列是「速度 = 冲击的累加,位置 = 速度的累加」,像一艘有惯性的船,速度慢慢漂移,位置画出的是平滑曲线。价格指数(对数)就像那艘船:通胀率(速度)本身在漂移,价格水平(位置)平滑上升。

17.3.2 单整阶数

术语:含随机游走趋势的序列称为一阶单整(integrated of order one),记作 I(1);形如 (17.17) 的称为二阶单整,记作 I(2);没有随机趋势、平稳的序列记作 I(0)。单整阶数(order of integration)就是使序列平稳所需差分的次数。

Key Concept 17.4(单整阶数、差分与平稳性)

  • \(Y_t\) 为 I(1):\(Y_t\) 有单位自回归根,\(\Delta Y_t\) 平稳;
  • \(Y_t\) 为 I(2):\(\Delta Y_t\) 有单位自回归根,\(\Delta^2Y_t\) 平稳;
  • \(Y_t\) 为 I(\(d\)):须差分 \(d\) 次才能消除随机趋势,即 \(\Delta^dY_t\) 平稳。

如何检验 I(2) 与 I(1)。如果 \(Y_t\) 是 I(2),则 \(\Delta Y_t\) 是 I(1),有单位根;如果 \(Y_t\) 是 I(1),则 \(\Delta Y_t\) 平稳。所以只需对 \(\Delta Y_t\) 做第 15b 章的 ADF 单位根检验:拒绝「\(\Delta Y_t\) 有单位根」,就拒绝了 I(2),支持 I(1)。检验顺序是从高阶往低阶:先检验 \(\Delta Y_t\),再检验 \(Y_t\)。

例:价格水平与通胀。通胀是价格水平的增长率,季度数据年化后

\[Infl_t=400\times\Delta\ln(P_t)\]
(100 把小数变成百分点,4 把季度变成年率)。实证练习 15.1 用美国 PCE 价格指数得出:通胀很可能含随机游走趋势,即通胀为 I(1),\(\Delta Infl_t\) 平稳。于是有一串等价关系:

\[Infl_t\ \text{为 I(1)}\iff\Delta\ln P_t\ \text{为 I(1)}\iff\ln P_t\ \text{为 I(2)}.\]

原书图 17.1(1960–2017)印证了这一点:(a) PCE 价格指数的对数从约 2.75 平滑上升到约 4.75,长期趋势非常平滑;(b) 通胀率在约 \(-6\%\) 到 \(12\%\) 之间波动,趋势的起伏明显大得多。平滑的趋势是 I(2) 序列的典型外观。

对量化读者,一个直接的对应是:对数价格通常视为 I(1),收益(对数价格的差分)视为 I(0)。很少有资产价格表现为 I(2);如果你的检验说某只股票的对数价格是 I(2),多半是样本中有结构断点或检验设定有问题。

17.3.3 为什么单位根检验统计量不服从正态分布

第 15.7 节(本册第 15b 章)强调过:回归元非平稳时,大样本正态近似不适用。Dickey–Fuller 回归在单位根原假设下,回归元 \(Y_{t-1}\) 是随机游走,正好非平稳。这就是 DF 统计量分布非标准的根源。

看最简单的情形:\(\Delta Y_t\) 对 \(Y_{t-1}\) 回归,无截距,原假设下 \(\Delta Y_t=u_t\)。OLS 估计量 \(\hat\delta=\sum Y_{t-1}\Delta Y_t/\sum Y_{t-1}^2\),乘以 \(T\) 后写成

\[T\hat\delta=\frac{\frac1T\sum_{t=1}^TY_{t-1}\Delta Y_t}{\frac1{T^2}\sum_{t=1}^TY_{t-1}^2}.\tag{17.19}\]

注意这里的缩放:平稳回归中 \(\hat\delta\) 以 \(\sqrt T\) 速度收敛,这里却要乘 \(T\) 才有非退化的极限。这叫超一致(superconsistency),原因是随机游走的方差随时间线性增长,回归元的「信号」比平稳情形强得多。

推导拆解:为什么分母要除以 \(T^2\)、分子除以 \(T\)。

  1. 先看 (17.19) 本身:\(T\hat\delta=T\cdot\frac{\sum Y_{t-1}\Delta Y_t}{\sum Y_{t-1}^2}\),分子分母同除以 \(T^2\),分子变成 \(\frac1T\sum Y_{t-1}\Delta Y_t\),分母变成 \(\frac1{T^2}\sum Y_{t-1}^2\)。这只是代数变形。
  2. 为什么这样缩放才对:\(Y_{t-1}\) 的方差约为 \(t\sigma_u^2\),所以 \(E\sum_tY_{t-1}^2\approx\sigma_u^2\sum_tt\approx\sigma_u^2T^2/2\),按 \(T^2\) 增长。除以 \(T^2\) 才得到一个不发散、也不趋于 0 的量。
  3. 分子 \(\sum Y_{t-1}u_t\) 的方差约为 \(\sum_tE(Y_{t-1}^2)\sigma_u^2\approx\sigma_u^4T^2/2\),标准差按 \(T\) 增长,所以除以 \(T\)。
  4. 于是 \(\hat\delta\) 本身 \(\approx\frac{O(T)}{O(T^2)}=O(1/T)\),乘 \(T\) 才稳定。对比平稳情形:分母按 \(T\) 增长,分子按 \(\sqrt T\) 增长,\(\hat\delta=O(1/\sqrt T)\)。

这里 \(O(\cdot)\) 读作「量级为」。直观说法:随机游走的 \(Y_{t-1}\) 在样本中游走得很远,横轴拉得很宽,斜率自然估得很准。

分子。在附加假设 \(Y_0=0\) 下(原书习题 17.5),

\[\frac1T\sum_{t=1}^TY_{t-1}\Delta Y_t=\frac12\left[\left(\frac{Y_T}{\sqrt T}\right)^2-\frac1T\sum_{t=1}^T(\Delta Y_t)^2\right].\tag{17.20}\]

推导只用一个代数恒等式。由 \(Y_t=Y_{t-1}+\Delta Y_t\) 得 \(Y_t^2=Y_{t-1}^2+2Y_{t-1}\Delta Y_t+(\Delta Y_t)^2\),所以

\[Y_{t-1}\Delta Y_t=\tfrac12\left[Y_t^2-Y_{t-1}^2-(\Delta Y_t)^2\right].\]
对 \(t=1,\dots,T\) 求和,\(Y_t^2-Y_{t-1}^2\) 伸缩相消只剩 \(Y_T^2-Y_0^2=Y_T^2\),再除以 \(T\) 即得 (17.20)。

现在逐项取极限:

  • 第二项:原假设下 \(\Delta Y_t=u_t\) 序列不相关、方差有限,由大数定律 \(\frac1T\sum(\Delta Y_t)^2\xrightarrow{p}\sigma_u^2\)。
  • 第一项:\(Y_T/\sqrt T=\sqrt T\cdot\frac1T\sum_{t=1}^Tu_t\),由中心极限定理 \(\xrightarrow{d}N(0,\sigma_u^2)\),可写成 \(\sigma_uZ\),\(Z\) 为标准正态。

由连续映射定理和 Slutsky 定理(18.2 节),方括号 \(\xrightarrow{d}\sigma_u^2(Z^2-1)\)。而 \(Z^2\sim\chi^2_1\),因此

\[\frac1T\sum_{t=1}^TY_{t-1}\Delta Y_t\xrightarrow{d}\frac{\sigma_u^2}{2}(\chi_1^2-1).\tag{17.21}\]

分子的极限是「卡方减 1」的倍数,不是正态。它偏斜:\(\chi^2_1-1\) 的取值下界是 \(-1\),右尾很长,而且有约 68% 的概率为负(\(\Pr(\chi^2_1<1)\approx0.683\))。

白话解释:这个结果直观上说的是什么?\((Y_T/\sqrt T)^2\) 是「终点离起点有多远」的平方,\(\frac1T\sum(\Delta Y_t)^2\) 是「每步步长的平方的平均」。随机游走大多数时候终点离起点不太远(\(Z^2<1\) 的概率 68%),所以分子多半为负,\(\hat\delta\) 多半为负,即 \(\hat\beta_1=1+\hat\delta\) 多半小于 1。这就是第 15b 章所说「单位根下 AR 系数向下偏」的数学来源,也解释了 DF 分布为何整体左移:即使真值恰好是 1,估计值也倾向于看起来「有点均值回复」。

金融直觉:这对研究者是一个系统性的陷阱。拿任意一条价格序列跑 AR(1),大概率会得到 \(\hat\beta_1<1\),看上去「会回归」。如果用正态临界值判断,很容易得出「这个价格均值回复、可以做反转」的错误结论。

分母同样异常。平稳情形下 \(\frac1T\sum Y_{t-1}^2\) 收敛到常数;随机游走下它不收敛,要除以 \(T^2\) 才有极限,而 \(\frac1{T^2}\sum Y_{t-1}^2\) 即使在大样本中仍是随机变量,并与分子联合依分布收敛(极限可以用布朗运动的积分表示,属于高级时间序列内容,见 Hamilton 1994 第 17 章)。

分子分母的这种非常规联合分布,导致 DF 统计量的分布非标准,所以 ADF 检验需要专门的临界值表(原书表 15.4:含截距时 10%、5%、1% 临界值为 \(-2.57\)、\(-2.86\)、\(-3.43\);含截距和时间趋势时为 \(-3.12\)、\(-3.41\)、\(-3.96\))。最常见的错误是把 DF 的 t 统计量拿去和 \(\pm1.96\) 或 \(-1.645\) 比较。本章示例一会用模拟显示这样做的真实拒绝率高达 46%。

原书习题 17.7 是同一现象的另一个版本:\(\Delta Y_t=u_t\) 为 i.i.d. \(N(0,1)\),把 \(Y_t\) 对 \(X_t=\Delta Y_{t+1}\) 回归,可以证明 \(\hat\beta\xrightarrow{d}\frac12(\chi_1^2-1)\)。


17.4 协整

17.4.1 共同随机趋势

两个或多个含随机趋势的序列,有时长期紧密同行,像是共享同一个趋势成分。原书图 15.3:90 天与 10 年期美国国债利率在 1960 年代都低,1970 年代都上升,1980 年代初同时见顶,1990 年代同时下降。但两者之差(期限利差,图 15.3b)看不出趋势。相减能消掉各自的趋势,说明它们有共同随机趋势(common stochastic trend)。

Key Concept 17.5(协整) 设 \(X_t,Y_t\) 都是 I(1)。若对某个系数 \(\theta\),\(Y_t-\theta X_t\) 为 I(0),则称 \(X_t\) 与 \(Y_t\) 协整(cointegrated),\(\theta\) 称为协整系数(cointegrating coefficient)。协整意味着两者有相同的随机趋势,作差 \(Y_t-\theta X_t\) 把共同趋势消掉。

这个正式定义来自 Clive Granger。用一个简单模型可以看清结构:

\[X_t=X_{t-1}+v_{2t},\qquad Y_t=\theta X_t+v_{1t},\]
其中 \(v_{1t},v_{2t}\) 平稳。\(X_t\) 是随机游走,\(Y_t\) 继承了 \(X_t\) 的随机趋势,而 \(Y_t-\theta X_t=v_{1t}\) 平稳。这正是原书习题 17.10 的出发点。

17.4.2 向量误差修正模型

若 \(X_t,Y_t\) 协整,第 15b 章的建议「对 I(1) 变量差分后建模」就丢掉了信息:差分消去了趋势,也消去了两者水平之间的长期关系。正确做法是对一阶差分建 VAR,同时把 \(Y_{t-1}-\theta X_{t-1}\) 作为额外回归元加进去:

\[\Delta Y_t=\beta_{10}+\beta_{11}\Delta Y_{t-1}+\cdots+\beta_{1p}\Delta Y_{t-p}+\gamma_{11}\Delta X_{t-1}+\cdots+\gamma_{1p}\Delta X_{t-p}+\alpha_1(Y_{t-1}-\theta X_{t-1})+u_{1t},\tag{17.22}\]
\[\Delta X_t=\beta_{20}+\beta_{21}\Delta Y_{t-1}+\cdots+\beta_{2p}\Delta Y_{t-p}+\gamma_{21}\Delta X_{t-1}+\cdots+\gamma_{2p}\Delta X_{t-p}+\alpha_2(Y_{t-1}-\theta X_{t-1})+u_{2t}.\tag{17.23}\]

\(Y_t-\theta X_t\) 称为误差修正项(error correction term)。两变量共享趋势,若某一期相距过远,预期会随时间靠拢,「误差」被「修正」。(17.22)(17.23) 合称向量误差修正模型(vector error correction model,VECM)。在 VECM 中,误差修正项的过去值帮助预测 \(\Delta Y_t\) 和/或 \(\Delta X_t\)。

系数 \(\alpha_1,\alpha_2\) 称为调整系数或载荷。若 \(Y_{t-1}-\theta X_{t-1}\) 偏高(\(Y\) 相对太贵),要恢复均衡,需要 \(Y\) 下跌或 \(X\) 上涨,所以通常 \(\alpha_1<0\) 和/或 \(\alpha_2>0\)。\(\alpha\) 的大小决定回复速度:\(|\alpha|\) 越大,偏离消失越快。

推导拆解:调整系数与价差回复速度的关系。记价差 \(z_t=Y_t-\theta X_t\)。忽略差分滞后项,用 (17.22) 减去 \(\theta\) 倍的 (17.23):

\[\Delta z_t=\Delta Y_t-\theta\Delta X_t=(\alpha_1-\theta\alpha_2)z_{t-1}+\text{噪声}.\]
所以 \(z_t=(1+\alpha_1-\theta\alpha_2)z_{t-1}+\text{噪声}\),价差是 AR(1),系数 \(\phi=1+\alpha_1-\theta\alpha_2\)。要平稳,需要 \(\phi<1\),即 \(\alpha_1-\theta\alpha_2<0\)。半衰期 \(=\ln0.5/\ln\phi\)。

金融直觉:\(\alpha_1\) 和 \(\alpha_2\) 分别回答「谁来修正偏离」。在期现套利中,若 \(\alpha_{期货}\) 显著、\(\alpha_{现货}\approx0\),说明价格发现在现货、期货跟随;反之亦然。这在研究 ADR 与原股、A 股与 H 股谁主导定价时是标准分析。在配对交易中,若只有一只股票在调整,那么持仓风险主要集中在那一条腿上。

把习题 17.10 的简单模型代入可以亲手推出 VECM。\(\Delta X_t=v_{2t}\),而

\[\Delta Y_t=\theta\Delta X_t+\Delta v_{1t}=\theta v_{2t}+v_{1t}-v_{1,t-1}=-(Y_{t-1}-\theta X_{t-1})+\theta v_{2t}+v_{1t}.\]
若 \(v_{1t}\) 是白噪声,这就是 \(\alpha_1=-1\)、\(\alpha_2=0\) 的 VECM:所有调整都由 \(Y\) 完成,偏离在一期内完全消除。

17.4.3 如何判断两个变量是否协整

原书强调三种手段应同时使用:专业知识与经济理论、作图看是否有共同随机趋势、统计检验。

理论例:利率期限结构的预期理论。它认为 10 年期国债利率等于未来 10 年 3 个月国库券利率预期值的平均(加一个期限溢价)。所以若 3 个月利率有随机游走趋势,10 年利率会继承这一趋势(原书习题 17.2)。具体地,设 \(k\) 期利率 \(R_{kt}=\frac1k\sum_{i=0}^{k-1}R1_{t+i|t}+e_t\),\(e_t\) 为 I(0) 的期限溢价。若 \(R1_t\) 是随机游走,则对所有 \(i\) 有 \(R1_{t+i|t}=R1_t\),于是 \(R_{kt}=R1_t+e_t\),两利率协整,协整系数为 1。图上两利率看起来是 I(1)、利差看起来是 I(0),与理论吻合。

检验原理。若协整系数为 \(\theta\),则 \(Y_t-\theta X_t\) 平稳;否则它是 I(1)。于是「不协整」的原假设等价于「\(Y_t-\theta X_t\) 有单位根」,拒绝即可视为协整。细节取决于 \(\theta\) 是否已知。

情形一:\(\theta\) 已知。直接构造 \(z_t=Y_t-\theta X_t\),对它做 ADF 单位根检验,使用普通 ADF 临界值。

例:1962–2017 年 10 年期与 90 天利率之差(\(\theta=1\)),含截距、AIC 选 6 阶滞后,ADF \(=-4.13<-3.43\)(表 15.4 的 1% 临界值),在 1% 水平拒绝「无协整」。

情形二:\(\theta\) 未知——Engle–Granger ADF 检验(Engle & Granger 1987)。两步:

  1. 用 OLS 估计协整回归
    \[Y_t=\alpha+\theta X_t+z_t;\tag{17.24}\]
  2. 对残差 \(\hat z_t\) 做含截距、无时间趋势的 DF t 检验(实际中常加差分滞后,即 ADF)。

由于第一步估计了 \(\theta\),第二步要用不同的临界值。原因是 OLS 会挑选使残差方差最小的 \(\hat\theta\),这让残差看起来比真实的 \(z_t\) 更「平稳」,DF 统计量系统性地偏负。如果仍用普通 ADF 临界值,就会太容易拒绝「无协整」。

白话解释:设想两只其实不协整的股票。OLS 在所有可能的对冲比里,挑出那个让价差在样本内波动最小、看上去最「贴着均值」的。这相当于「在很多条曲线中挑一条最像平稳的」——和第 15b 章「看图挑日期」是同一类数据窥探。即使原假设为真,被挑出来的残差也比随便一条随机游走更像平稳序列,所以 ADF 统计量更负。表 17.1 的临界值就是在原假设下模拟「挑过之后」的 DF 分布得到的。X 越多,可挑的组合越多,临界值越负。

表 17.1 EG-ADF 统计量的临界值(取自 Fuller 1976、Phillips & Ouliaris 1990,按 Hansen 1992 的建议使其对 \(X,Y\) 是否含漂移都适用):

(17.24) 中 X 的个数 10% 5% 1%
1 −3.12 −3.41 −3.96
2 −3.52 −3.80 −4.36
3 −3.84 −4.16 −4.73
4 −4.20 −4.49 −5.07

第一行用于两个变量的情形,其余行用于多个协整变量。所有临界值都比普通 ADF 更负,X 越多越负。

17.4.4 协整系数的估计:动态 OLS

若变量协整,(17.24) 的 OLS 估计量 \(\hat\theta\) 一致,而且是超一致的(以 \(T\) 而非 \(\sqrt T\) 的速度收敛)。但它一般不服从正态分布,基于它的 t 统计量,无论是否用 HAC 标准误,推断都可能误导。原因与上一节相同:回归元 \(X_t\) 是 I(1);而且 \(X_t\) 的变化可能与 \(z_t\) 相关,带来二阶偏差。

为此发展出若干估计量,最简便的是动态 OLS(dynamic OLS,DOLS,Stock & Watson 1993):在 (17.24) 中加入 \(\Delta X_t\) 的过去、当期和未来值(超前与滞后,leads and lags):

\[Y_t=\beta_0+\theta X_t+\sum_{j=-p}^{p}\delta_j\Delta X_{t-j}+u_t.\tag{17.25}\]
回归元是 \(X_t,\Delta X_{t+p},\dots,\Delta X_{t-p}\),DOLS 估计量就是这个回归中 \(\theta\) 的 OLS 估计。

白话解释:为什么要加未来的 \(\Delta X\)?协整回归的误差 \(z_t\) 可能与 \(X\) 的新息在不同时间相关:既可能与过去的 \(\Delta X\) 相关(\(Y\) 对 \(X\) 的变化反应有滞后),也可能与未来的 \(\Delta X\) 相关(\(Y\) 先动、\(X\) 后跟,比如期货领先现货)。这和第 16 章「严格外生」的问题是一回事。DOLS 的做法是:把 \(z_t\) 中能被 \(\Delta X\) 过去、现在、未来解释的部分都显式放进回归,剩下的 \(u_t\) 与 \(X\) 的整个路径无关,相当于人为造出了严格外生,于是标准的正态推断恢复有效。

直觉:\(z_t\) 与 \(\Delta X\) 的相关性是 OLS 非正态的来源,加入 \(\Delta X\) 的超前和滞后,把这部分相关「吸收」进回归,剩下的误差 \(u_t\) 与 \(X\) 的整个路径近似无关。若变量协整,DOLS 估计量在大样本中有效,基于 HAC 标准误的 \(\theta\) 和 \(\delta\) 的推断有效,t 统计量大样本服从标准正态。注意 \(u_t\) 一般序列相关,HAC 不可省略。

例:90 天利率对 10 年利率的 DOLS,\(p=4\),\(\hat\theta=1.02\),HAC 标准误(\(m=5\))为 0.05,在 10% 水平不能拒绝 \(\theta=1\)。这与「利差平稳」的发现一起,与期限结构的预期理论一致。

原书习题 17.6 帮助理解 DOLS 的结构:把 \(Y_t=2.0+1.5X_{t+1}+0.9X_t-0.3X_{t-1}+u_t\) 改写成 (17.25) 的形式。利用 \(X_{t+1}=X_t+\Delta X_{t+1}\)、\(X_{t-1}=X_t-\Delta X_t\),得 \(Y_t=2.0+2.1X_t+1.5\Delta X_{t+1}+0.3\Delta X_t+u_t\),所以 \(\theta=1.5+0.9-0.3=2.1\),\(\delta_{-1}=1.5\),\(\delta_0=0.3\),\(\delta_1=0\)。协整系数是各期水平系数之和,即长期乘数。

17.4.5 推广到多个协整变量

三个 I(1) 变量 \(Y_t,X_{1t},X_{2t}\),若 \(Y_t-\theta_1X_{1t}-\theta_2X_{2t}\) 平稳,则它们协整。三个及以上变量可能存在多个协整关系。

例:3 个月(R3m)、1 年(R1y)、10 年(R10y)利率。若三者都是 I(1),期限结构理论表明它们协整,协整关系为 \(R10y_t-R3m_t\) 与 \(R1y_t-R3m_t\)。\(R10y_t-R1y_t\) 也是协整关系,但它是前两者之差,完全共线,不提供新信息。三个变量最多两个线性无关的协整关系,对应一个共同随机趋势。

白话解释:一个计数规则:\(n\) 个 I(1) 变量,若有 \(r\) 个线性无关的协整关系,就有 \(n-r\) 个共同随机趋势。直观上,每个协整关系「消掉」一个独立的随机趋势。\(r\) 不可能等于 \(n\):如果 \(n\) 个变量的 \(n\) 个独立组合都平稳,那每个变量本身(作为这些组合的线性组合)也平稳,与 I(1) 矛盾。

三个利率、两个协整关系、一个共同趋势,对应「整条曲线一起上下平移」的水平因子;两个平稳的利差对应斜率和曲率。这与第 14 章利率 PCA 的「水平、斜率、曲率」是同一幅图的两种视角。

多变量 EG-ADF:第一步回归同时放入 \(X_{1t},X_{2t}\),第二步临界值按表 17.1 中对应 X 个数的行。多变量 DOLS:每个 X 的水平值,加上各自一阶差分的超前和滞后。多个协整关系的系统估计(Johansen 方法等)见 Hamilton(1994);第 06 册(Tsay)第 08b 章从多元时间序列角度介绍协整 VAR 与 Johansen 检验,可与本章对照。

17.4.6 实践提醒

即使理论没有给出协整系数,也要检查估计出的协整关系在实际中说不说得通。原书特别提醒:协整检验可能误导。它既可能过多地错误拒绝「无协整」,也常常在应该拒绝时拒绝不了(功效低,尤其是回复很慢、样本较短时)。因此尤其要依靠经济理论、制度知识和常识。


专栏:2003 年诺贝尔奖与协整

2003 年诺贝尔经济学奖授予 Robert Engle 与 Clive Granger。Granger 的贡献之一是研究随机趋势:两个毫无关系、各自含随机趋势的序列,按 t 统计量和 \(R^2\) 看可能显著相关,这就是伪回归(spurious regression,见第 14、15 章)。

白话解释:这里「第 14、15 章」指原书编号;在本册中伪回归的讨论在第 15b 章 15.7.3 节,第 14 章是大数据预测,与伪回归无关。他进一步发现,当变量确实共享共同趋势时,用误差修正模型可以揭示有意义的长期关系。协整分析如今是宏观计量的标准工具。Engle 的贡献 ARCH 见 17c 章。


量化实战

1. 本章内容在量化中的用途

配对交易与统计套利的理论基础。 两只股票的对数价格都是 I(1),若某个线性组合(价差)是 I(0),价差就会均值回复:偏离过大时做空贵的、做多便宜的,等待回归。标准筛选流程正是 Engle–Granger 两步法:

  1. 用 OLS 估计 \(\ln P^A_t=\alpha+\theta\ln P^B_t+z_t\),\(\hat\theta\) 就是对冲比;
  2. 对残差 \(\hat z_t\) 做 ADF 检验,用表 17.1 的临界值(或软件给出的 MacKinnon 协整临界值),不能用普通 ADF 临界值;
  3. 用 DOLS 得到 \(\theta\) 的可靠标准误,判断对冲比是否稳定、是否等于理论值(例如期现套利中 \(\theta=1\));
  4. 用 VECM 的 \(\alpha\) 或价差 AR(1) 系数 \(\phi\) 估计回复速度,半衰期 \(=\ln0.5/\ln\phi\)。半衰期决定持仓周期和信号窗口。

协整检验的局限在实务中更突出。 在几千只股票里两两做协整检验,\(5\%\) 的假阳性意味着成千上万个「伪配对」;样本内协整的配对样本外常常失效(结构变化、并购、行业轮动)。原书「依靠经济理论和常识」的提醒对应实务中的做法:只在同行业、同产业链、同一标的的不同合约(期现、跨期、ADR 与原股)之间找对,并做样本外检验。

利率曲线交易。 期限结构的协整关系(各期限利率共享一个随机趋势,利差平稳)是曲线陡峭化/平坦化交易的基础;三个利率的两个协整关系对应「斜率」和「曲率」。

伪回归的警示。 把两个价格水平直接回归、看 t 值和 \(R^2\) 来「发现关系」,是新手最常犯的错误。价格水平之间的回归,除非协整,否则没有意义;应该用收益(差分)或先检验协整。

2. 示例一:用模拟看清 Dickey–Fuller 分布

import numpy as np
rng = np.random.default_rng(1)
T, nsim = 500, 20000
Td, tstat, tstat_c = np.empty(nsim), np.empty(nsim), np.empty(nsim)
for k in range(nsim):
    u = rng.standard_normal(T)
    Y = np.cumsum(u)                     # 随机游走,Y_0 = 0
    ylag, dy = np.r_[0.0, Y[:-1]], u
    # 无截距 DF 回归 dY_t = delta * Y_{t-1} + e
    d = (ylag @ dy) / (ylag @ ylag)
    e = dy - d * ylag
    se = np.sqrt(e @ e / (T - 1) / (ylag @ ylag))
    Td[k], tstat[k] = T * d, d / se
    # 含截距 DF 回归
    X = np.c_[np.ones(T), ylag]
    b, *_ = np.linalg.lstsq(X, dy, rcond=None)
    e = dy - X @ b
    V = (e @ e / (T - 2)) * np.linalg.inv(X.T @ X)
    tstat_c[k] = b[1] / np.sqrt(V[1, 1])
q = [0.01, 0.05, 0.10, 0.50]
print("分位数            1%     5%     10%    50%")
print("T*delta       ", np.round(np.quantile(Td, q), 2))
print("DF t(无截距)  ", np.round(np.quantile(tstat, q), 2))
print("DF t(含截距)  ", np.round(np.quantile(tstat_c, q), 2))
print("N(0,1)        ", [-2.33, -1.64, -1.28, 0.0])
print("含截距时用 -1.64 作单侧 5% 临界值的真实拒绝率:", np.mean(tstat_c < -1.645).round(3))

输出:

分位数            1%     5%     10%    50%
T*delta        [-13.38  -8.07  -5.7   -0.88]
DF t(无截距)   [-2.56 -1.95 -1.62 -0.51]
DF t(含截距)   [-3.46 -2.88 -2.57 -1.57]
N(0,1)         [-2.33, -1.64, -1.28, 0.0]
含截距时用 -1.64 作单侧 5% 临界值的真实拒绝率: 0.464

模拟得到的含截距 DF 分位数 \(-3.46/-2.88/-2.57\) 与原书表 15.4 的 \(-3.43/-2.86/-2.57\) 几乎一致。整个分布明显左移,中位数是 \(-1.57\) 而不是 0。用正态临界值 \(-1.645\) 做检验,即使序列真的是随机游走,也有 46% 的概率得出「平稳」的错误结论。\(T\hat\delta\) 的中位数为负、左尾长,正是 (17.21) 中 \(\chi^2_1-1\) 偏斜性的体现。

3. 示例二:配对交易的完整流程

模拟两只股票:\(x\) 是共同随机趋势,价差 \(z\) 是 \(\phi=0.95\) 的 AR(1)(真实半衰期约 13.5 天),真实对冲比 \(\theta=1.3\)。另有一只与之无关的股票 \(w\)。

import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller, coint
from statsmodels.tsa.vector_ar.vecm import VECM

rng = np.random.default_rng(7)
T = 1000
# 两只股票的对数价格:共享随机趋势 x,价差 z 是 AR(1)(phi=0.95,半衰期约 13.5 天)
x = np.cumsum(0.0002 + 0.015 * rng.standard_normal(T)) + np.log(20)
z = np.zeros(T)
for t in range(1, T):
    z[t] = 0.95 * z[t-1] + 0.01 * rng.standard_normal()
theta_true = 1.3
y = 0.5 + theta_true * x + z
w = np.cumsum(0.015 * rng.standard_normal(T)) + np.log(20)   # 一只无关股票

# 1) 伪回归:两条独立随机游走
spur = sm.OLS(w, sm.add_constant(x)).fit()
print(f"伪回归 w~x: slope={spur.params[1]:.2f}, t={spur.tvalues[1]:.1f}, R2={spur.rsquared:.2f}")

# 2) Engle-Granger 两步法
step1 = sm.OLS(y, sm.add_constant(x)).fit()
zhat = step1.resid
adf_stat = adfuller(zhat, regression="c", autolag="AIC", result_object=False)[0]
print(f"EG 第一步 theta_hat={step1.params[1]:.4f}; 残差 ADF={adf_stat:.2f}"
      f"(EG 5% 临界值 -3.41,普通 ADF 5% 临界值 -2.86)")
t_eg, p_eg, cv = coint(y, x, trend="c")
print(f"statsmodels.coint: t={t_eg:.2f}, p={p_eg:.4f}, 5%临界值={cv[1]:.2f}")
t_w, p_w, _ = coint(w, x, trend="c")
print(f"无关股票 w 与 x: EG t={t_w:.2f}, p={p_w:.2f}")

# 3) DOLS:加入 dx 的 p 个超前与滞后,HAC 标准误
p = 4
d = pd.DataFrame({"y": y, "x": x})
d["dx"] = d["x"].diff()
for j in range(-p, p + 1):
    d[f"dx_{j}"] = d["dx"].shift(j)      # shift(-j) 是超前
d = d.dropna()
Xd = sm.add_constant(d[["x"] + [f"dx_{j}" for j in range(-p, p + 1)]])
dols = sm.OLS(d["y"], Xd).fit(cov_type="HAC", cov_kwds={"maxlags": 10})
th, se = dols.params["x"], dols.bse["x"]
print(f"DOLS theta={th:.4f}, HAC se={se:.4f}, 检验 theta=1.3 的 t={(th-1.3)/se:.2f}")

# 4) VECM:误差修正系数与半衰期
data = np.c_[y, x]
vecm = VECM(data, k_ar_diff=1, coint_rank=1, deterministic="ci").fit()
alpha = vecm.alpha.ravel()
beta = vecm.beta.ravel()
print("VECM beta(归一化):", np.round(beta / beta[0], 4), " alpha:", np.round(alpha, 4))
# 价差 z 的 AR(1) 系数与半衰期
phi = sm.OLS(zhat[1:], sm.add_constant(zhat[:-1])).fit().params[1]
print(f"价差 AR(1) phi={phi:.3f}, 半衰期 = ln(0.5)/ln(phi) = {np.log(0.5)/np.log(phi):.1f} 天")

输出:

伪回归 w~x: slope=-0.04, t=-5.3, R2=0.03
EG 第一步 theta_hat=1.2872; 残差 ADF=-4.98(EG 5% 临界值 -3.41,普通 ADF 5% 临界值 -2.86)
statsmodels.coint: t=-4.98, p=0.0002, 5%临界值=-3.34
无关股票 w 与 x: EG t=-2.50, p=0.28
DOLS theta=1.2865, HAC se=0.0092, 检验 theta=1.3 的 t=-1.46
VECM beta(归一化): [ 1.     -1.2833]  alpha: [-0.0532 -0.0032]
价差 AR(1) phi=0.952, 半衰期 = ln(0.5)/ln(phi) = 14.0 天

逐项解读:

  • 伪回归:两条独立随机游走,斜率的 t 值竟有 \(-5.3\)。这就是 Granger 警告的现象。但 EG 检验正确地不拒绝「无协整」(\(p=0.28\))。
  • EG 检验:残差 ADF \(=-4.98\),远低于表 17.1 的 \(-3.41\)。statsmodels.coint 给出的 5% 临界值 \(-3.34\) 来自 MacKinnon 的响应面,未做 Hansen 的漂移调整,所以比原书表 17.1 略宽松;两者差别不大,保守起见可用原书数值。
  • DOLS:\(\hat\theta=1.2865\),HAC 标准误 0.0092,检验真值 1.3 的 \(t=-1.46\),不拒绝,推断有效。
  • VECM:归一化后协整向量 \((1,-1.283)\)。调整系数 \(\alpha_y=-0.053\) 显著为负、\(\alpha_x\approx0\):价差偏高时由 \(y\) 下跌来修正,与模拟设定一致(\(x\) 是纯随机游走)。
  • 半衰期:价差 AR(1) 系数 0.952,半衰期 14 天,与真实值 13.5 天吻合。\(\alpha_y\approx\phi-1=-0.05\),两种度量是一致的。

实盘中,下一步是用 \(\hat z_t\) 的滚动均值和标准差构造 z 分数,设定开平仓阈值,并在样本外检验。注意对冲比和均值标准差都必须只用当时可得的数据估计,否则会引入前视偏差。


本章小结

单整阶数是使序列平稳所需的差分次数:随机游走为 I(1),其差分为随机游走的序列为 I(2),对数价格水平常为 I(2)(宏观价格指数)或 I(1)(资产价格),检验 I(2) 对 I(1) 只需对差分序列做单位根检验。DF 统计量不服从正态,根源在于非平稳回归元:分子收敛到 \(\frac{\sigma^2}{2}(\chi^2_1-1)\),分母不收敛到常数,必须使用专门临界值。两个 I(1) 序列若存在平稳的线性组合 \(Y_t-\theta X_t\),就是协整的,意味着共享随机趋势;协整变量用 VECM 建模,误差修正项帮助预测差分。\(\theta\) 已知时对 \(Y-\theta X\) 做 ADF;\(\theta\) 未知时用 EG-ADF 两步法和表 17.1 的临界值;\(\theta\) 的推断用 DOLS 加 HAC 标准误。协整检验在实践中既会误拒也会漏拒,应以经济理论和常识为依托。

概念 公式 / 要点
I(\(d\)) \(\Delta^dY_t\) 平稳;I(2) vs I(1):对 \(\Delta Y_t\) 做 ADF
DF 分子极限 \(\frac1T\sum Y_{t-1}\Delta Y_t\xrightarrow{d}\frac{\sigma_u^2}{2}(\chi^2_1-1)\)
DF 临界值(含截距) 10%/5%/1%:\(-2.57/-2.86/-3.43\)
协整 \(X,Y\sim\) I(1),\(Y-\theta X\sim\) I(0)
VECM \(\Delta Y_t=\cdots+\alpha_1(Y_{t-1}-\theta X_{t-1})+u_{1t}\)
EG-ADF OLS 协整回归 → 残差 DF;两变量 5% 临界值 \(-3.41\)
DOLS \(Y_t=\beta_0+\theta X_t+\sum_{j=-p}^p\delta_j\Delta X_{t-j}+u_t\),HAC 标准误
半衰期 \(\ln0.5/\ln\phi\),\(\phi\) 为价差 AR(1) 系数
多变量 \(n\) 个 I(1) 变量最多 \(n-1\) 个独立协整关系

练习

基础

  1. 什么是单位根?如何检验?如果 ADF 检验不拒绝单位根,能否断定序列有单位根?(原书复习题 17.5) 提示:不能,可能是功效不足;尤其根接近 1(如 0.98)时。
  2. 永久收入理论认为对数 GDP 与对数消费协整,协整系数为 1。说明如何用作图和统计检验考察这一点。(原书复习题 17.3) 答案要点:画 \(\ln Y\)、\(\ln C\) 和 \(\ln Y-\ln C\);\(\theta=1\) 已知,对 \(\ln Y-\ln C\) 做 ADF,用普通 ADF 临界值。
  3. 验证式 (17.20)。(原书习题 17.5) 提示:\(Y_{t-1}\Delta Y_t=\frac12[Y_t^2-Y_{t-1}^2-(\Delta Y_t)^2]\),求和伸缩。
  4. (原书习题 17.6)把 \(Y_t=2.0+1.5X_{t+1}+0.9X_t-0.3X_{t-1}+u_t\) 写成 DOLS 形式,求 \(\theta,\delta_{-1},\delta_0,\delta_1\)。若 \(X\) 为 I(1)、\(u\) 为 I(0),\(X,Y\) 是否协整?若 \(u\) 为 I(1) 呢? 答案要点:\(\theta=2.1\),\(\delta_{-1}=1.5\),\(\delta_0=0.3\),\(\delta_1=0\);前者协整,后者不协整。
  5. 某研究员对两只股票的对数价格做 EG 两步法,残差 ADF \(=-3.0\),他按普通 ADF 5% 临界值 \(-2.86\) 宣布协整。错在哪里? 提示:应用表 17.1 第一行,5% 临界值 \(-3.41\),不能拒绝无协整。

进阶

  1. (原书习题 17.2)期限结构:\(R_{kt}=\frac1k\sum_{i=0}^{k-1}R1_{t+i|t}+e_t\)。(a) \(R1\) 为随机游走时证明 \(R_{kt}=R1_t+e_t\),二者协整,协整系数为 1。(b) 若 \(\Delta R1_t=0.5\Delta R1_{t-1}+u_t\),是否仍协整?(c) 若 \(R1_t=0.5R1_{t-1}+u_t\) 呢? 提示:(b) \(R1_{t+i|t}\) 等于 \(R1_t\) 加上一项依赖 \(\Delta R1_t\) 的平稳项,仍协整、系数为 1;(c) \(R1\) 平稳,协整概念不适用。
  2. (原书习题 17.10)由 \(Y_t=\theta X_t+v_{1t}\)、\(X_t=X_{t-1}+v_{2t}\) 推导 VECM,写出 \(\alpha_1,\alpha_2\)。若 \(v_{1t}\) 是 AR(1):\(v_{1t}=\rho v_{1,t-1}+\varepsilon_t\),\(\alpha_1\) 变成多少? 提示:白噪声时 \(\alpha_1=-1,\alpha_2=0\);AR(1) 时 \(\alpha_1=\rho-1\)。
  3. (原书习题 17.7)\(\Delta Y_t=u_t\) i.i.d. \(N(0,1)\),\(Y_t\) 对 \(X_t=\Delta Y_{t+1}\) 回归(无截距)。证明 \(\hat\beta\xrightarrow{d}\frac12(\chi^2_1-1)\)。 提示:\(\hat\beta=\sum Y_tu_{t+1}/\sum u_{t+1}^2\),分子用 (17.20) 的技巧,分母除以 \(T\) 收敛到 1。
  4. 修改示例二:把价差的 AR 系数改为 0.995(半衰期约 140 天),\(T=500\),重复 500 次,统计 EG 检验在 5% 水平拒绝「无协整」的比例。结论说明了什么? 提示:功效很低,多数情况下检验不出真实存在的协整,这正是原书「协整检验可能误导」的一面。
  5. 在 100 只互相独立的随机游走股票中两两做 EG 检验(4950 对),预计会有多少对在 5% 水平「通过」?这对配对交易选股有什么启示? 提示:约 250 对;需要经济先验、多重检验调整和样本外验证。

原书推荐习题:17.2(期限结构推导协整)、17.5、17.7(单位根下非标准极限分布)、17.6(DOLS 结构)、17.10(推导 VECM);复习题 17.3、17.5。


原书对照

本章内容 原书章节 PDF 页码
单整阶数、单位根检验统计量的非正态性(Key Concept 17.4,式 17.16–17.21,图 17.1) 17.3 p.659–663
协整、VECM、EG-ADF 检验、DOLS、多个协整变量(Key Concept 17.5,式 17.22–17.25,表 17.1) 17.4 p.664–668
专栏:时间序列计量经济学的诺贝尔奖得主 17.6 后 p.681–682
习题 17.2、17.5、17.6、17.7、17.10,复习题 17.3、17.5 第 17 章末 p.684–688
配对交易流程、MacKinnon 临界值对照(本教材补充) — —

注:原书页码 = PDF 页码 − 1。