统计套利基础:均值回归理论、平稳性概念、相关性 vs 协整性
各位同学,欢迎来到第二章。
上一章我们聊了配对交易的基本概念,说白了就是「买强卖弱」的对冲玩法。但有个问题一直没解决:凭什么相信价差一定会回来?
嗯,这就是本章要讲的核心——统计套利的理论基础。
我个人习惯把这一章称为「地基工程」。地基没打好,后面盖的房子再漂亮也得塌。我在项目中见过太多人,上来就搞协整检验,跑出一堆伪回归结果还当宝贝……那场面,啧,不忍直视。
好,我们开始。
一、均值回归理论
均值回归,英文叫 Mean Reversion。这个概念其实不复杂:
一个时间序列,如果它总是围绕某个长期均值上下波动,偏离远了就会被「拉」回来——这就是均值回归。
你想想看,股票价格长期看是上涨的,但短期呢?涨多了会跌,跌多了会涨。为什么?因为市场情绪会过度反应,然后理性会慢慢纠正它。
核心要点:
- 均值回归是配对交易的底层逻辑
- 我们赌的不是方向,而是「偏离会修复」
- 没有均值回归,配对交易就是空中楼阁
我记得有一次做 A 股银行股配对,招商银行和兴业银行。价差拉到 3 个标准差以上,我按模型开了仓。结果价差继续扩大,一周浮亏 8%。当时压力很大,但我知道均值回归只是迟到,不会缺席。果然,第 8 天价差开始收敛,最后盈利出局。
这个故事告诉我们什么?均值回归有效,但时间尺度不确定。所以仓位管理和止损纪律,比模型本身更重要。
二、平稳性概念
好,现在问题来了:怎么判断一个序列有没有均值回归特性?
答案就是——平稳性。
平稳性,Stationarity。简单说:一个序列的统计性质(均值、方差)不随时间变化。
我画个图帮你理解:
看到了吗?平稳序列像弹簧,上下波动有边界。非平稳序列像醉汉走路,走到哪算哪。
检验平稳性,最常用的方法是 ADF 检验(Augmented Dickey-Fuller Test)。
代码很简单:
from statsmodels.tsa.stattools import adfuller
# 假设 price_spread 是价差序列
result = adfuller(price_spread)
p_value = result[1]
if p_value < 0.05:
print("价差序列平稳,适合配对交易")
else:
print("价差不平稳,别急着开仓")
避坑指南:
我曾经犯过一个错:用日线数据做 ADF 检验,p 值 0.03,觉得稳了。结果实盘发现价差根本不回归。后来才发现,样本量太小(只有 60 个交易日),检验结果不可靠。
建议:至少用 250 个交易日(约 1 年)的数据做检验。
三、相关性 vs 协整性
好,这是本章最容易被搞混的地方。我直接说结论:
相关性 ≠ 协整性
相关性衡量的是两个变量线性关系的强度。协整性衡量的是两个变量长期均衡关系。
举个例子:
| 指标 | 相关性 | 协整性 |
|---|---|---|
| 衡量什么 | 短期同步性 | 长期均衡关系 |
| 典型例子 | 茅台和五粮液,同涨同跌 | 两只股票价差稳定 |
| 陷阱 | 两个随机游走也可能高相关 | 低相关但可能协整 |
| 配对交易用哪个 | ❌ 不够 | ✅ 必须 |
我见过最经典的案例:有人拿可口可乐和百事可乐做配对,相关性 0.85,觉得稳了。结果价差越走越远,亏到怀疑人生。
为什么?因为这两只股票虽然同涨同跌,但价差并没有稳定的均值——它们只是「一起走」,不是「互相拉着走」。
协整性检验,常用 Engle-Granger 两步法:
from statsmodels.tsa.stattools import coint
import numpy as np
# 假设 stock1, stock2 是价格序列
score, p_value, _ = coint(stock1, stock2)
if p_value < 0.05:
print("存在协整关系,可以做配对")
else:
print("没有协整关系,放弃这对")
⚠️ 重要提醒:
协整关系会随时间变化!我建议每 3 个月重新检验一次。别指望「一次检验,终身有效」。
另外,协整不等于因果关系。两只股票协整,不代表一只涨另一只就一定涨。它只说明价差会回归。
四、知识体系总览
最后,我用一张图把本章的核心逻辑串起来:
这张图我建议你保存下来。每次做配对交易前,对着它问自己三个问题:
- 价差有均值回归特性吗?
- 价差序列平稳吗?
- 两只股票协整吗?
三个答案都是「是」,再开仓。少一个,就别动手。
好,本章就到这里。下一章我们开始实战——怎么选股票对、怎么跑协整检验、怎么构建交易信号。到时候我会拿真实数据一步步演示。
记住:理论是地图,实战是走路。地图画错了,走得再快也是南辕北辙。