第二章 配对交易理论基础:均值回归理论、协整性概念、平稳性与单位根检验、相关性 vs 协整性
做配对交易,说白了就是赌两兄弟会「和好」。
什么意思呢?你找两只股票,它们历史上一直走得很近。突然有一天,一个往东跑,一个往西跑。这时候你进场,做空那个跑太快的,做多那个掉队的。等它们重新走到一起,你就平仓赚钱。
听起来简单吧?但这里有个核心问题:你怎么知道它们一定会「和好」?
嗯,这就是我们今天要聊的理论基础。我做了这么多年量化,见过太多人死在这一步——看着两只股票走势图差不多就冲进去,结果亏得底裤都不剩。
2.1 均值回归理论
先说说均值回归。这个概念其实很朴素:价格偏离均值太远了,迟早会回来。
我举个例子。你想想看,一根橡皮筋,你拉得越长,它弹回来的力道就越大。价格也是一样。涨得太离谱了,总有回调的一天;跌得太狠了,也总有反弹的时候。
但这里有个坑——「迟早」是多久?
我曾经做过一个统计,有些配对偏离均值后,要等半年才回归。你想想看,半年时间,资金成本、机会成本,一般人扛得住吗?
所以均值回归理论告诉我们两件事:
- 回归是大概率事件——长期来看,价格确实会向均值靠拢
- 回归时间不确定——这才是真正的风险所在
核心要点:均值回归不是预测「什么时候回归」,而是相信「最终会回归」。这个信念,需要统计证据来支撑。
2.2 协整性概念
好,现在问题来了:怎么用数学来刻画「两兄弟会和好」这件事?
答案就是协整性。
我个人习惯把协整性理解为「长期均衡关系」。两只股票的价格可能各自乱跑,但它们之间的差距(或者某个线性组合)是稳定的。
举个例子:
- 股票A的价格:100, 102, 98, 105, 101...
- 股票B的价格:50, 51, 49, 52.5, 50.5...
你看,A和B的价格比例始终在2:1左右晃悠。这就是协整关系。
我的经验:选配对时,我一般先看行业。同行业的股票,业务模式相似,受同样的宏观因素影响,更容易有协整关系。跨行业的配对,除非你有特别强的逻辑,否则我建议慎重。
2.3 平稳性与单位根检验
说到协整,就绕不开平稳性。
什么是平稳性?简单说就是:统计性质不随时间变化。均值是常数,方差是常数,自相关结构也是稳定的。
你想想看,如果一只股票的均值一直在变,你怎么做均值回归?没法做。
所以我们需要检验平稳性。最常用的方法就是单位根检验。
这里我贴一段代码,是我项目中常用的ADF检验:
import statsmodels.api as sm
import numpy as np
def adf_test(series, name=''):
"""
单位根检验函数
返回:是否平稳、p值、检验统计量
"""
result = sm.tsa.stattools.adfuller(series, autolag='AIC')
p_value = result[1]
is_stationary = p_value < 0.05
print(f'{name} ADF检验结果:')
print(f' 检验统计量: {result[0]:.4f}')
print(f' p值: {p_value:.4f}')
print(f' 是否平稳: {is_stationary}')
return is_stationary, p_value, result[0]
# 使用示例
# 假设price_spread是价差序列
# adf_test(price_spread, '价差序列')
避坑指南:我曾经犯过一个错误——直接用价格序列做ADF检验,发现是平稳的,高兴得不行。后来才发现,那是因为数据量太小(只有30个样本)。ADF检验对样本量很敏感,我建议至少用200个以上的数据点。
2.4 相关性 vs 协整性
这是新手最容易搞混的地方。
相关性高,不代表有协整关系。反过来,协整关系存在,相关性可能并不高。
我画个图你就明白了:
左图:两只股票高度相关(走势几乎一样),但价差在不断扩大。这种配对做不了,因为价差不会回归。
右图:两只股票走势不完全一致,但价差始终在均值附近波动。这才是我们要的协整关系。
我整理了一个对比表,方便你理解:
| 维度 | 相关性 | 协整性 |
|---|---|---|
| 定义 | 两个变量之间的线性关系强度 | 两个或多个非平稳序列的线性组合是平稳的 |
| 关注点 | 短期同步性 | 长期均衡关系 |
| 数学要求 | 相关系数在[-1,1]之间 | 残差序列是平稳的(单位根检验通过) |
| 对配对交易的意义 | 参考价值有限 | 核心条件,必须满足 |
| 常见误区 | 认为高相关=好配对 | 认为协整=高相关 |
一句话总结:相关性看的是「一起动」,协整性看的是「分得开但回得来」。做配对交易,我们要的是后者。
2.5 我的实战流程
说了这么多理论,最后分享一下我实际做配对交易时的流程:
- 行业筛选——先圈定同行业、市值相近的股票池
- 相关性初筛——计算相关系数,保留相关性在0.7以上的对子
- 协整检验——对初筛后的对子做Engle-Granger两步法或Johansen检验
- 残差分析——确认残差序列是平稳的,且均值接近0
- 回测验证——用历史数据跑一遍,看策略表现
一个小技巧:我习惯在协整检验前,先做一下归一化处理。把两只股票的价格都除以它们的历史均值,这样能消除量纲影响,让检验结果更稳定。
嗯,以上就是配对交易的理论基础。这些概念看起来有点抽象,但做多了你就会发现,它们其实是在帮你回答一个核心问题:这个配对,到底能不能「和好」?