第4章 协整理论入门:从相关到因果的跨越
说实话,我刚入行做配对交易那会儿,踩过最大的坑就是——把「相关」当「协整」。
那时候我看到两只股票走势图长得一模一样,兴奋得不行,直接开仓。结果呢?价差越走越远,亏得我怀疑人生。后来我才明白,相关不等于协整,这个坑,我希望你别再踩一次。
4.1 什么是协整?
协整(Cointegration),说白了就是:两个或多个非平稳的时间序列,它们的线性组合是平稳的。
听起来有点绕?我换个说法。
你想想看,一个醉汉牵着一条狗走路。醉汉走得东倒西歪(非平稳),狗也跑得忽左忽右(非平稳)。但狗绳的长度是固定的——所以狗和醉汉之间的距离,始终在一个范围内波动(平稳)。
这个「距离」就是协整关系。
在金融里,两只股票的价格可能各自随机游走(非平稳),但它们之间的价差可能是平稳的。这就是我们做配对交易的基础。
4.2 协整与相关的区别
这个区别太重要了,我专门做个表格给你看。
| 维度 | 相关性 | 协整性 |
|---|---|---|
| 关注点 | 短期同步性 | 长期均衡关系 |
| 数据要求 | 平稳序列即可 | 必须是非平稳序列 |
| 数学本质 | 线性相关程度 | 线性组合的平稳性 |
| 典型例子 | 两只股票同涨同跌 | 价差围绕均值回归 |
| 陷阱 | 伪相关(如冰淇淋销量与溺水人数) | 伪回归(两个无关的随机游走) |
我记得有一次,一个学员拿了两只银行股给我看,相关系数0.95,问我能不能做配对。我让他先做协整检验,结果发现根本不协整。为什么?因为两只股票虽然走势像,但价差一直在发散,没有回归的「拉力」。
相关是「看起来像」,协整是「本质上绑在一起」。 这个区别,值十万块钱。
4.3 Engle-Granger两步法
这是最经典的协整检验方法,也是我最早学会的方法。步骤很简单,就两步。
第一步:估计协整回归
假设我们要检验 X 和 Y 是否协整。先做回归:
Y_t = α + βX_t + ε_t
得到残差序列 ε_t。这个残差,就是「价差」的估计值。
第二步:检验残差的平稳性
对残差 ε_t 做 ADF 检验(单位根检验)。如果残差是平稳的,就说明 X 和 Y 协整。
import statsmodels.api as sm
import numpy as np
# 假设 X 和 Y 是价格序列
X = np.random.randn(100).cumsum() # 模拟随机游走
Y = 2 * X + np.random.randn(100) # 协整关系
# 第一步:回归
X_const = sm.add_constant(X)
model = sm.OLS(Y, X_const).fit()
residuals = model.resid
# 第二步:ADF检验
adf_result = sm.tsa.stattools.adfuller(residuals)
print(f'ADF统计量: {adf_result[0]:.4f}')
print(f'p值: {adf_result[1]:.4f}')
if adf_result[1] < 0.05:
print('残差平稳,存在协整关系')
else:
print('残差不平稳,不存在协整关系')
4.4 Johansen检验简介
EG两步法有个局限——它只能检验两个序列之间是否存在协整关系。如果你手里有三只、四只股票呢?这时候就要用Johansen检验了。
Johansen检验的核心思想是:基于向量自回归(VAR)模型,通过特征根检验来判断协整关系的个数。
说白了,EG是「一对一」,Johansen是「一对多」。
from statsmodels.tsa.vector_ar.vecm import coint_johansen
# 假设 data 是包含多只股票价格的DataFrame
# data = pd.DataFrame({'A': ..., 'B': ..., 'C': ...})
# Johansen检验
result = coint_johansen(data, det_order=0, k_ar_diff=1)
print('特征值:', result.eig)
print('迹统计量:', result.lr1)
print('5%临界值:', result.cvt)
# 判断协整关系个数
for i in range(len(result.lr1)):
if result.lr1[i] > result.cvt[i, 1]: # 5%显著性水平
print(f'拒绝H{i}: 至少有{i+1}个协整关系')
else:
print(f'不能拒绝H{i}: 最多有{i}个协整关系')
break
4.5 本章知识体系
下面这张图,是我自己总结的协整理论知识框架。每次做配对交易前,我都会过一遍这个流程。
这张图把整个协整理论串起来了。从核心概念出发,到区分相关与协整,再到两种检验方法,最后落到配对交易应用。我建议你把它保存下来,每次做策略前看一眼。
4.6 避坑指南
最后,分享几个我踩过的坑。
- 不要只看相关系数。 相关系数高不代表协整,我见过相关系数0.99但价差越走越远的案例。
- 注意数据频率。 日线数据协整,不代表分钟线也协整。我建议先用日线做筛选,再用小时线验证。
- 小心结构突变。 2015年股灾后,很多原本协整的股票对都「脱钩」了。定期重新检验协整关系,别一劳永逸。
- 样本外验证。 在样本内找到协整关系不难,难的是样本外依然有效。我习惯用前70%数据做检验,后30%做验证。
嗯,协整理论就讲到这里。记住一句话:协整是配对交易的灵魂,没有协整,就没有均值回归的保证。