4. 协整概念
在量化研究与时间序列建模中,协整(Cointegration)是连接“长期均衡关系”与“短期动态调整”的核心桥梁。很多初学者会把协整与相关性混为一谈,结果在配对交易、价差回归、指数增强等策略中反复踩坑。本节将围绕四个关键词展开:协整的定义、与相关性的区别、协整向量、误差修正模型(ECM),并给出可落地的检验与建模流程。
一、协整的定义:非平稳序列的“长期绑定”
先回顾平稳性。若一个时间序列的均值、方差和自协方差不随时间变化,则称其为平稳序列,记为 I(0)。若一个序列需要经过 d 次差分才平稳,则记为 I(d)。金融价格、股价、汇率通常是非平稳的 I(1) 序列,而收益率往往是 I(0)。
协整的定义是:若两个或多个 I(1) 序列的某个线性组合是 I(0),则称这些序列之间存在协整关系。用公式表达:设 Xt 与 Yt 均为 I(1),若存在非零向量 β,使得
Z_t = Y_t - β * X_t 是 I(0)
则称 Xt 与 Yt 协整,β 称为协整向量。直观理解:两个各自“到处乱走”的非平稳序列,在长期中被某种经济力量绑定,短期可以偏离,但偏离不会无限扩大,最终会被拉回均衡。这个“拉回”正是均值回归策略的统计基础。
核心要点:协整不是“两个序列一起涨跌”,而是“它们的线性组合是平稳的”。前者是相关性,后者是协整。协整关系可以存在负相关,也可以存在正相关,甚至相关性很弱。
二、协整与相关性的区别:别把“同涨同跌”当“长期均衡”
相关性衡量的是两个序列收益率(或差分)之间的同步程度,取值在 -1 到 1 之间。它关注的是“短期共同波动”,不要求序列非平稳,也不保证价差会回归。协整关注的是价格水平之间的长期均衡关系,要求序列本身非平稳,但线性组合平稳。
| 维度 | 相关性 | 协整 |
|---|---|---|
| 对象 | 收益率或差分序列 | 价格水平序列 |
| 平稳性要求 | 无 | 要求 I(1) 且线性组合 I(0) |
| 核心含义 | 短期同步波动 | 长期均衡与均值回归 |
| 是否保证回归 | 不保证 | 保证价差平稳,偏离会收敛 |
| 策略用途 | 分散化、因子暴露 | 配对交易、统计套利 |
一个经典反例:两只股票收益率相关性高达 0.9,但价格水平可能一个持续上涨、一个持续下跌,价差发散,无法做均值回归。相反,某些相关性只有 0.2 的品种,若存在协整关系,价差反而稳定可交易。因此,做配对交易时,先看协整,再看相关性,顺序不能反。
常见误区:用价格序列直接计算相关系数,得到“高相关”就认为可以配对。价格序列非平稳,相关系数估计不稳定,且高相关不代表价差平稳。正确做法是先做单位根检验,再做协整检验。
三、协整向量:如何估计与检验
协整向量 β 是长期均衡关系的系数。最常用的估计方法有两种:Engle-Granger 两步法与 Johansen 检验。
- Engle-Granger 两步法:第一步,用 OLS 回归 Yt = α + βXt + εt,得到残差 εt;第二步,对残差做 ADF 单位根检验。若残差平稳,则存在协整关系,β 即为协整向量估计。
- Johansen 检验:基于向量自回归(VAR)框架,通过迹检验或最大特征值检验判断协整秩,并同时估计多个协整向量。适合多变量、多协整关系场景。
下面给出 Python 示例,使用 statsmodels 完成 Engle-Granger 检验:
import numpy as np
import pandas as pd
from statsmodels.tsa.stattools import coint, adfuller
# 假设 df 包含两列价格序列 y 和 x
y = df['y'].values
x = df['x'].values
# 协整检验
score, pvalue, _ = coint(y, x)
print(f"协整检验 p-value: {pvalue:.4f}")
# 若 pvalue < 0.05,拒绝“不存在协整”的原假设
# 估计协整向量:OLS 回归 y = alpha + beta * x
import statsmodels.api as sm
X = sm.add_constant(x)
model = sm.OLS(y, X).fit()
alpha, beta = model.params
resid = model.resid
# 对残差做 ADF 检验
adf_stat, adf_p, _, _, _, _ = adfuller(resid)
print(f"残差 ADF p-value: {adf_p:.4f}")
print(f"协整向量: beta = {beta:.4f}, alpha = {alpha:.4f}")
参数解读:协整检验 p 值小于 0.05,说明在 5% 显著性水平下存在协整关系;残差 ADF 检验同样应拒绝单位根原假设。β 的经济含义是“长期均衡比例”,例如 β=1.2 表示 X 每变动 1 单位,Y 长期均衡变动 1.2 单位。
实操建议:Engle-Granger 对回归方向敏感,交换 Y 与 X 可能得到不同结果。稳健做法是双向检验,或直接使用 Johansen 检验。样本量建议不少于 200 个观测,且尽量使用同一频率、同一时段的数据。
四、误差修正模型:短期偏离如何被修正
协整只告诉我们“长期有均衡”,但短期价格如何向均衡调整?答案在误差修正模型(Error Correction Model, ECM)。ECM 将短期差分与长期误差项结合起来:
ΔY_t = α + γ * (Y_{t-1} - β * X_{t-1}) + δ * ΔX_t + ε_t
其中,括号内是上一期的“误差修正项”(即偏离均衡的程度),γ 是调整速度系数。若 γ 显著为负,说明当 Y 高于均衡时,下一期 Y 会下降,向均衡回归;γ 的绝对值越大,回归速度越快。δ 捕捉 X 的短期变化对 Y 的即时影响。
ECM 的价值在于:它同时刻画了长期均衡与短期动态,避免了直接对非平稳序列做回归导致的伪回归问题。在配对交易中,ECM 的误差修正项可以直接作为交易信号:当价差偏离超过阈值时开仓,等待回归。
流程总结:① 单位根检验确认 I(1);② 协整检验确认长期关系;③ 估计协整向量 β;④ 构建 ECM 估计调整速度 γ;⑤ 基于残差或价差设计均值回归策略;⑥ 滚动窗口监控协整关系是否失效。
五、案例与复盘:从“高相关”到“真协整”
假设我们研究某两只银行股 A 与 B。初步计算收益率相关性为 0.85,看起来很适合配对。但直接对价格做回归后,残差 ADF 检验 p 值为 0.32,无法拒绝单位根,说明价差非平稳,不存在协整关系。进一步检查发现,A 在样本期内发生了一次重大并购,基本面结构改变,长期均衡关系断裂。
复盘结论:相关性高只是“表面同步”,协整检验才是“长期绑定”的统计证据。若忽略结构突变,强行做均值回归,价差可能持续发散,导致巨大亏损。正确做法是:在协整检验前先做结构突变检验(如 Chow 检验、Bai-Perron 检验),或使用滚动窗口动态监控协整关系。
常见误区清单:
- 用价格序列算相关系数代替协整检验。
- 只做一次协整检验,不滚动监控,忽略关系失效。
- 忽略交易成本与滑点,理论上价差回归,实际无法覆盖成本。
- 样本内过拟合协整向量,样本外表现崩溃。
- 把 ECM 的 γ 当作固定常数,忽略时变特征。