第4章 统计套利基础:均值回归理论、协整关系入门、平稳性概念、相关性不等于因果性
各位同学,欢迎来到统计套利的世界。
前面我们聊了价差套利的基本思路,说白了就是找两个品种之间的“不合理”关系。但怎么定义“不合理”?怎么判断这个关系是真实的,而不是瞎猫碰上死耗子?
这一章,我们就来啃下统计套利的几块硬骨头。我个人觉得,这是整个量化交易里最“性感”的部分——用数学去捕捉市场的“错误”。
4.1 均值回归:市场为什么总爱“回家”
先问大家一个问题:为什么价格不会一直涨,也不会一直跌?
嗯,除了基本面因素,背后有一个强大的统计力量——均值回归。
这个概念很简单:价格偏离均值太远了,它就有往回走的倾向。就像一根被拉长的橡皮筋,松手就会弹回去。
核心思想: 极端事件之后,往往跟着反向运动。
我在项目中遇到过不少新手,看到价差拉得特别大,就急着进场做回归。结果呢?价差继续扩大,爆仓了。
为什么?因为均值回归不是“一定会回归”,而是“有回归的倾向”。这个倾向需要时间,也可能被更强的趋势打破。
举个例子:
# 模拟一个均值回归过程
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(42)
mu = 0 # 均值
theta = 0.3 # 回归速度
sigma = 0.1 # 波动率
T = 200
x = np.zeros(T)
x[0] = 2 # 初始偏离
for t in range(1, T):
dx = -theta * (x[t-1] - mu) + sigma * np.random.randn()
x[t] = x[t-1] + dx
plt.plot(x)
plt.axhline(y=0, color='r', linestyle='--')
plt.title('均值回归过程模拟')
plt.show()
你看,虽然价格会来回震荡,但始终围绕着均值(红线)转。这就是均值回归的数学本质。
我的经验: 判断一个品种是否适合做均值回归,先看它的历史走势。如果它经常“抽风”后迅速回来,那就是好标的。如果它一去不回头,那可能是趋势品种,别硬做回归。
4.2 平稳性:你的数据“靠谱”吗?
做统计套利,最怕什么?最怕你用的数据本身就不稳定。
想象一下,你拿一把尺子去量一个不断变长的东西,量出来的结果有意义吗?
这就是平稳性要解决的问题。
一个平稳的时间序列,它的统计性质(均值、方差)不会随时间改变。说白了,它的“脾气”是稳定的。
我刚开始做策略时,犯过一个低级错误:直接用两个非平稳的价格序列做回归,结果发现“相关性”高得吓人。后来一查,两个序列都是随机游走,纯粹是伪回归。
避坑指南: 千万不要直接用价格做回归!一定要先检验平稳性。
常用的检验方法是ADF检验(Augmented Dickey-Fuller Test)。
from statsmodels.tsa.stattools import adfuller
# 假设 price_series 是你的价格序列
result = adfuller(price_series)
print(f'ADF统计量: {result[0]}')
print(f'p值: {result[1]}')
if result[1] < 0.05:
print('序列平稳,可以放心使用')
else:
print('序列非平稳,需要差分或寻找协整关系')
p值小于0.05,说明序列平稳。否则,你就得想办法让它变平稳——比如做一阶差分。
4.3 协整关系:两个“不靠谱”的品种,凑一起就靠谱了
好,问题来了:如果两个品种单独看都不平稳,但它们之间的价差却是平稳的,这算怎么回事?
这就是协整的精髓。
协整关系,说白了就是两个非平稳序列的线性组合,变成了平稳序列。它们之间有一个长期均衡关系,短期可能会偏离,但长期一定会回来。
我记得有一次做螺纹钢和热卷的套利。单独看,两个价格都在涨,都不平稳。但它们的价差却非常稳定,一直在±50点内波动。这就是典型的协整关系。
协整 vs 相关性: 相关性看的是短期同向变动,协整看的是长期均衡关系。两个完全不相关的品种,也可能有协整关系。
检验协整的经典方法是Engle-Granger两步法:
- 第一步:用OLS回归估计协整系数
- 第二步:对残差做ADF检验,看是否平稳
from statsmodels.tsa.stattools import coint
import pandas as pd
# 假设有两个价格序列
price_a = pd.Series(...)
price_b = pd.Series(...)
score, pvalue, _ = coint(price_a, price_b)
print(f'协整检验p值: {pvalue}')
if pvalue < 0.05:
print('存在协整关系,可以做配对交易')
else:
print('没有协整关系,别硬做')
我的习惯: 我一般会同时跑多个协整检验方法(EG、Johansen),交叉验证。单一方法有时候会误判。
4.4 相关性 ≠ 因果性:别被数字骗了
这是整个量化交易里最容易被忽视的坑。
两个品种相关系数0.9,就代表它们有关系吗?不一定。
我给你讲个经典笑话:美国离婚率和缅因州的人造黄油消费量,相关系数高达0.99。难道离婚是因为黄油吃多了?
当然不是。这就是伪相关——两个变量同时受第三个因素影响,或者纯粹是巧合。
在套利交易中,我见过太多人犯这个错。比如发现A和B相关性很高,就以为可以做配对。结果一进场,相关性就消失了。
我曾经... 用相关性筛选过一批品种,回测漂亮得不行。实盘一个月,亏了15%。后来发现,那些高相关性纯粹是因为同涨同跌,根本没有套利空间。
怎么避免?记住三点:
- 相关性不等于因果性——高相关不代表一个能预测另一个
- 协整比相关性更可靠——协整检验的是长期均衡,不是短期波动
- 加入经济逻辑——两个品种为什么会有关系?比如螺纹钢和铁矿石,上下游关系,逻辑通顺
4.5 知识体系总览
下面这张图,帮你理清本章的核心逻辑:
这张图把四个概念串起来了。你想想看,均值回归是目标,平稳性是前提,协整是工具,相关性是陷阱。每一步都不能少。
总结一下:
- 均值回归:价格会回到均值附近,但需要耐心
- 平稳性:数据要稳定,否则分析结果不可靠
- 协整:两个非平稳序列的组合可以变平稳
- 相关性≠因果性:别被数字骗了,要有逻辑支撑
嗯,这一章的内容就到这里。记住,统计套利不是玄学,是数学。但数学只是工具,真正的判断力来自你对市场的理解。