3、协整理论入门:从直觉到实战
协整这个概念,我第一次接触是在做配对交易策略的时候。当时我盯着两只股票的走势图,发现它们虽然各自上蹿下跳,但长期来看总像被一根无形的绳子牵着。嗯,这就是协整的直观感觉。
3.1 协整的直观理解
说白了,协整描述的是两个或多个时间序列之间的长期均衡关系。你想想看,一个醉汉牵着一条狗散步——醉汉走的是随机路线,狗也到处乱跑,但狗绳的长度是固定的。所以不管它们怎么晃,距离总会在某个范围内。
在金融里,协整就是那根「狗绳」。两只股票的价格可能各自随机游走,但它们的价差(或某种线性组合)却是平稳的。这就是协整的核心思想。
核心要点:协整 ≠ 相关性。相关性看的是短期同向变动,协整看的是长期均衡关系。两只股票可能相关系数很低,但协整关系很强——我就在一个能源股和科技股的组合里遇到过这种情况。
3.2 平稳性与单位根检验(ADF检验)
要理解协整,必须先搞懂平稳性。平稳的时间序列,说白了就是它的统计性质(均值、方差)不随时间变化。比如白噪声就是平稳的,而股价通常是非平稳的——因为它没有固定的均值。
怎么判断一个序列是否平稳?最常用的就是单位根检验,其中ADF检验是标配。
ADF检验的原假设:序列存在单位根(即非平稳)。
备择假设:序列平稳。
如果p值小于0.05,我们就拒绝原假设,认为序列是平稳的。反之,则非平稳。
我曾经在回测一个策略时,因为没做ADF检验,直接用了两个非平稳序列做回归,结果伪回归现象严重,回测曲线漂亮得不像话,实盘却一塌糊涂。嗯,从那以后我再也不敢跳过这一步了。
# Python实现ADF检验
from statsmodels.tsa.stattools import adfuller
import numpy as np
# 模拟一个随机游走(非平稳)
np.random.seed(42)
random_walk = np.cumsum(np.random.randn(100))
# 进行ADF检验
result = adfuller(random_walk)
print(f'ADF统计量: {result[0]:.4f}')
print(f'p值: {result[1]:.4f}')
print(f'临界值: {result[4]}')
# 判断是否平稳
if result[1] < 0.05:
print('序列平稳')
else:
print('序列非平稳,存在单位根')
避坑指南:我曾经在数据量不足时做ADF检验,结果p值忽大忽小。建议至少用100个以上的样本点,否则检验功效会大打折扣。
3.3 协整关系的检验方法:Engle-Granger两步法
Engle-Granger两步法,简称EG两步法,是检验协整最经典的方法。步骤很简单,就两步:
- 第一步:用OLS回归估计长期均衡关系。比如对两个序列Y和X做回归:Y = α + βX + ε,得到残差序列ε。
- 第二步:对残差序列ε做ADF检验。如果残差是平稳的,就说明Y和X存在协整关系。
为什么这么做?因为如果Y和X真的存在协整关系,它们的线性组合(即残差)应该是平稳的。说白了,就是看那根「狗绳」的长度是否稳定。
# Engle-Granger两步法实现
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller
# 模拟两个协整序列
np.random.seed(42)
n = 200
# 共同趋势
trend = np.cumsum(np.random.randn(n))
# 两个序列共享趋势,但各有噪声
Y = trend + np.random.randn(n) * 0.5
X = trend + np.random.randn(n) * 0.5
# 第一步:OLS回归
X_const = sm.add_constant(X)
model = sm.OLS(Y, X_const).fit()
residuals = model.resid
# 第二步:对残差做ADF检验
result = adfuller(residuals)
print(f'残差ADF检验p值: {result[1]:.4f}')
if result[1] < 0.05:
print('存在协整关系')
else:
print('不存在协整关系')
注意:EG两步法有个小缺陷——第一步的OLS回归会引入估计误差,导致第二步的ADF检验临界值需要调整。实际应用中,我建议使用专门的协整检验包(如coint函数),它已经帮你处理了这些细节。
3.4 协整与相关性的区别
很多人容易把协整和相关性搞混。我刚开始做量化时也犯过这个错——看到两只股票相关系数高就以为它们能配对,结果亏得挺惨。
它们的区别,我用一个表格来说明:
| 维度 | 相关性 | 协整 |
|---|---|---|
| 关注点 | 短期同向变动 | 长期均衡关系 |
| 数学基础 | 皮尔逊相关系数 | 单位根检验、线性组合平稳性 |
| 适用场景 | 资产配置、风险对冲 | 配对交易、统计套利 |
| 对非平稳数据的处理 | 可能产生伪相关 | 专门处理非平稳序列 |
| 举例 | 茅台和五粮液短期同涨同跌 | 两只股票价差长期回归均值 |
你想想看,两只完全不相关的股票,如果它们都是随机游走的,它们的价差可能看起来有规律,但那只是巧合。而协整关系是经过统计检验的,有数学上的保证。
我记得有一次,一个朋友拿了两只银行股给我看,说它们相关系数高达0.9,肯定能配对。我做了协整检验后发现,p值高达0.4——根本不存在协整关系。后来果然,那两只股票的价差越走越远,如果按相关性去做配对,早就爆仓了。
3.5 本章知识体系
下面这张图,帮你理清协整理论的整体脉络:
这张图展示了协整理论的四个核心模块:直观理解是基础,ADF检验是工具,EG两步法是方法,与相关性的区别是避坑指南。把这四个点吃透了,协整就算入门了。
个人建议:刚开始学协整,别急着上复杂模型。先找两只股票,画个价差图,用ADF检验看看残差是否平稳。亲手跑一遍代码,比看十遍理论都管用。
公众号:蓝海资料掘金营,微信deep3321