5. 统计套利基础:均值回归理论、平稳性检验(ADF)、自相关与偏自相关分析
各位同学,欢迎来到第五章。这一章我们聊点硬核的——统计套利的数学地基。
说实话,我刚入行那会儿,觉得统计套利就是“买便宜的,卖贵的”,简单粗暴。后来在实盘里被市场狠狠教育了几次,才明白:没有统计检验支撑的套利,跟赌博没什么区别。
今天我们就来拆解三个核心概念:均值回归理论、平稳性检验(ADF)、自相关与偏自相关分析。这三板斧,是基差交易套利模型的入门必修课。
5.1 均值回归理论:套利的底层信仰
均值回归,说白了就是一句话:价格涨多了会跌,跌多了会涨。听起来像废话?但背后有严谨的数学逻辑。
在金融时间序列里,如果一个序列是均值回归的,那它就会围绕某个长期均值上下波动。偏离均值越远,回归的概率越大。
核心公式(简化版):
Δyt = θ(μ - yt-1) + εt
其中:θ 是回归速度,μ 是长期均值,εt 是随机扰动。
θ 越大,回归越快;θ 为负,说明序列发散——那套利就危险了。
我在项目中遇到过一种情况:两个相关性很高的品种,价差看起来在均值附近来回摆动。我兴冲冲地建了套利头寸,结果价差一路狂奔不回头。后来复盘才发现——那个“均值”早就变了。
所以,均值回归不是万能的。你得先确认:
- 这个均值是稳定的,不是漂移的
- 回归速度θ是显著非零的
- 偏离程度在统计上显著,而不是随机波动
我的个人习惯:在实盘前,先用滚动窗口计算均值,看看它是不是随时间变化。如果均值本身在漂移,那这套利模型大概率会亏钱。
5.2 平稳性检验(ADF):套利的“体检报告”
你想想看,如果价差序列不平稳,均值回归就无从谈起。所以,平稳性检验是套利模型的第一道门槛。
最常用的就是ADF检验(Augmented Dickey-Fuller Test)。它的原假设是:序列存在单位根(即非平稳)。
如果p值小于0.05,我们就拒绝原假设,认为序列是平稳的。嗯,这里要注意:p值不是越小越好,而是越小越有信心。
5.2.1 ADF检验的Python实现
import numpy as np
import pandas as pd
from statsmodels.tsa.stattools import adfuller
# 模拟一个均值回归序列
np.random.seed(42)
n = 500
theta = 0.3 # 回归速度
mu = 100 # 长期均值
y = np.zeros(n)
y[0] = 105
for t in range(1, n):
y[t] = y[t-1] + theta * (mu - y[t-1]) + np.random.normal(0, 2)
# ADF检验
result = adfuller(y, autolag='AIC')
print(f'ADF统计量: {result[0]:.4f}')
print(f'p值: {result[1]:.6f}')
print(f'临界值:')
for key, value in result[4].items():
print(f' {key}: {value:.4f}')
if result[1] < 0.05:
print('✅ 序列平稳,可以继续套利分析')
else:
print('❌ 序列非平稳,需要差分或寻找其他配对')
输出结果大概长这样:
| 指标 | 值 |
|---|---|
| ADF统计量 | -4.8721 |
| p值 | 0.000042 |
| 1%临界值 | -3.4435 |
| 5%临界值 | -2.8673 |
| 10%临界值 | -2.5699 |
我曾经踩过的坑:有一次,ADF检验p值0.03,我以为是平稳的。结果实盘跑了两个月,价差突然“起飞”,亏了不少。后来发现——样本量太小,只有100个数据点。ADF检验在小样本下功效很低,建议至少用500个以上的数据点。
5.3 自相关与偏自相关分析:找“记忆”的工具
平稳性只是第一步。接下来我们要问:这个序列有没有“记忆”?也就是说,今天的价差和昨天的价差有没有关系?
这就引出了两个工具:
- 自相关函数(ACF):衡量yt和yt-k之间的相关性
- 偏自相关函数(PACF):剔除中间变量后,yt和yt-k的“净”相关性
为什么重要?因为ACF和PACF能帮你确定均值回归模型的阶数。比如,如果PACF在滞后1期后截尾,那可能是个AR(1)过程——也就是一阶自回归。
5.3.1 画图看ACF和PACF
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8))
plot_acf(y, lags=30, ax=ax1, alpha=0.05)
ax1.set_title('自相关函数 (ACF)')
plot_pacf(y, lags=30, ax=ax2, alpha=0.05, method='ywm')
ax2.set_title('偏自相关函数 (PACF)')
plt.tight_layout()
plt.show()
你会看到类似这样的图形:
- ACF:缓慢衰减,像“拖尾”一样
- PACF:在滞后1期后突然截尾,掉到置信区间内
这说明什么?序列可以用AR(1)模型描述。也就是说,今天的价差主要受昨天的影响,更早的历史影响不大。
我的经验:在实盘里,我很少看到完美的截尾或拖尾。市场数据总有噪声。我的做法是:看前5-10个滞后的模式,如果PACF在滞后2-3期后基本都在置信区间内,那就用AR(2)或AR(3)试试。别过度拟合。
5.4 知识体系总览
下面这张图,是我自己整理的知识框架。你可以把它当作本章的“地图”:
5.5 实战中的注意事项
讲完了理论,我分享几个实战中的“血泪教训”:
- 不要只看p值。p值显著不代表模型能赚钱。还要看回归速度θ的大小——θ太小,回归太慢,资金占用成本可能吃掉利润。
- 滚动检验。市场结构会变。我习惯每100个数据点重新做一次ADF检验,如果发现序列变得不平稳,立刻平仓。
- ACF/PACF的置信区间。默认的95%置信区间在样本量小时会偏窄。我一般用99%的置信区间,宁可漏掉一些信号,也不要被假信号骗进去。
- 小心“伪回归”。两个非平稳序列的回归,即使R²很高,也可能是假的。一定要先做协整检验(下一章会讲)。
我曾经犯过的错:有一次,我看到ACF在滞后10期还有显著的相关性,就自作聪明地建了一个AR(10)模型。结果过拟合严重,样本外预测一塌糊涂。后来才明白——ACF的“拖尾”可能是长记忆性的表现,不一定需要高阶模型。有时候,简单就是最好的。
5.6 本章小结
这一章我们聊了三件事:
- 均值回归理论:套利的底层逻辑,但要注意均值是否稳定
- ADF平稳性检验:判断序列是否适合套利,p值不是唯一标准
- ACF与PACF分析:帮你找到序列的“记忆长度”,确定模型阶数
这三者环环相扣。没有平稳性,均值回归就是空中楼阁;没有ACF/PACF,你就不知道回归模型该用几阶。说白了,统计套利不是拍脑袋,而是用数据说话。
下一章,我们会把这些工具串起来,构建一个完整的基差交易套利模型。到时候,你会看到这些理论是怎么在代码里落地的。
公众号:蓝海资料掘金营,微信deep3321