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两步法,是检验协整最经典的方法。步骤很简单,就两步:

  1. 第一步:用OLS回归估计长期均衡关系。比如对两个序列Y和X做回归:Y = α + βX + ε,得到残差序列ε。
  2. 第二步:对残差序列ε做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检验 单位根检验、p值判断 EG两步法 OLS回归 + 残差ADF 与相关性的区别 短期 vs 长期、伪相关 配对交易应用

这张图展示了协整理论的四个核心模块:直观理解是基础,ADF检验是工具,EG两步法是方法,与相关性的区别是避坑指南。把这四个点吃透了,协整就算入门了。

个人建议:刚开始学协整,别急着上复杂模型。先找两只股票,画个价差图,用ADF检验看看残差是否平稳。亲手跑一遍代码,比看十遍理论都管用。


公众号:蓝海资料掘金营,微信deep3321