统计套利的数学基础:均值回归、协整性、平稳性(ADF检验)
各位同学,欢迎来到统计套利的数学基础部分。
说实话,很多做量化交易的朋友,一听到「数学基础」四个字就头疼。我当年刚入行时也一样,觉得策略能赚钱就行,管它什么平稳不平稳。结果呢?实盘跑了一个月,回测曲线漂亮得像教科书,实盘却亏得我怀疑人生。后来我才明白——统计套利的根基,就扎在这三个概念上:均值回归、协整性、平稳性。
今天,我就带你把这三块硬骨头啃下来。放心,我会用最接地气的方式讲,代码也会手把手给你看。
1. 均值回归:统计套利的灵魂
什么叫均值回归?说白了就是:价格涨多了会跌,跌多了会涨,最终围绕一个均值来回摆动。
你想想看,如果两只高度相关的股票,比如茅台和五粮液,它们的价差突然拉得很大。这时候,市场情绪迟早会纠正这个偏差。价差会像被一根无形的橡皮筋拉回来。
我个人习惯把均值回归比作「遛狗」——狗(价格)会跑远,但绳子(均值)总会把它拽回来。绳子有多长、弹性多大,就是我们后面要算的东西。
2. 平稳性:你的数据「靠谱」吗?
平稳性,是统计套利的入场券。
一个时间序列如果是平稳的,意味着它的均值、方差、自协方差都不随时间变化。换句话说,它的统计性质是稳定的,我们可以用历史数据去推断未来。
我在项目中遇到过最坑的事:用非平稳数据做回测,结果跑出来年化收益50%,夏普比率3.0。我当时高兴坏了,结果一查——那序列是随机游走,根本不能用来做均值回归策略。嗯,这里要注意:非平稳数据会给你虚假的统计显著性。
怎么判断平稳性?最常用的就是ADF检验(Augmented Dickey-Fuller Test)。
ADF检验实战代码
import numpy as np
import pandas as pd
from statsmodels.tsa.stattools import adfuller
import yfinance as yf
# 下载两只股票数据
tickers = ['600519.SS', '000858.SZ'] # 茅台和五粮液
data = yf.download(tickers, start='2020-01-01', end='2023-12-31')['Adj Close']
# 计算价差
spread = data['600519.SS'] - data['000858.SZ']
# ADF检验
result = adfuller(spread.dropna())
print(f'ADF统计量: {result[0]:.4f}')
print(f'p值: {result[1]:.4f}')
print(f'临界值:')
for key, value in result[4].items():
print(f' {key}: {value:.4f}')
# 判断
if result[1] < 0.05:
print('✅ 价差序列平稳,可以进行统计套利')
else:
print('❌ 价差不平稳,需要差分或换标的')
3. 协整性:两只股票之间的「隐形纽带」
协整性,是统计套利最核心的概念。没有之一。
两只股票各自可能都是非平稳的(比如随机游走),但它们之间存在一个线性组合,这个组合是平稳的。这个线性组合,就是我们说的价差。
我曾经犯过一个错误:用相关性去选配对。结果发现两只股票相关性高达0.95,但价差根本不回归。为什么?因为相关性只衡量线性关系的强度,而协整性衡量的是长期均衡关系。两码事。
Engle-Granger两步法
这是最经典的协整检验方法。我带你走一遍:
- 第一步: 用OLS回归估计协整系数。比如 y = α + βx + ε,残差ε就是价差。
- 第二步: 对残差做ADF检验,看是否平稳。
import statsmodels.api as sm
# 准备数据
y = data['600519.SS']
x = data['000858.SZ']
x = sm.add_constant(x)
# 第一步:OLS回归
model = sm.OLS(y, x).fit()
residuals = model.resid
# 第二步:对残差做ADF检验
result_resid = adfuller(residuals.dropna())
print(f'残差ADF p值: {result_resid[1]:.4f}')
if result_resid[1] < 0.05:
print('✅ 两只股票存在协整关系')
print(f'对冲比率 β = {model.params[1]:.4f}')
else:
print('❌ 没有协整关系,换一对试试')
4. 知识体系框架图
下面这张图,是我自己总结的统计套利数学基础框架。你看一遍,心里就有谱了。
5. 实战中的常见坑
讲完理论,我跟你聊聊实战中我踩过的坑。这些经验,比书本上值钱多了。
| 常见问题 | 我的经历 | 解决方案 |
|---|---|---|
| 协整关系突然失效 | 2020年疫情时,我持有的配对价差偏离了5个标准差,我以为会回归,结果越走越远。亏了8%。 | 设置硬止损,价差超过3个标准差就平仓。不要迷信回归。 |
| ADF检验结果不稳定 | 同样的数据,用不同滞后阶数,p值从0.01跳到0.15。我当时懵了。 | 用AIC或BIC自动选择滞后阶数,不要手动设。代码里加个循环。 |
| 样本内完美,样本外崩溃 | 回测3年数据,夏普2.5。实盘第一周就亏了5%。 | 做滚动窗口检验:每半年重新估计协整系数,看是否稳定。 |
6. 总结
好了,今天的内容就到这里。
均值回归是目标,平稳性是前提,协整性是桥梁。这三者缺一不可。我见过太多人,只看了相关性就冲进去,结果亏得底裤都不剩。记住:统计套利不是简单的「买低卖高」,而是建立在严谨的数学检验之上的。
代码我已经给你了,框架图也画好了。剩下的,就是你自己去跑数据、去验证、去踩坑。嗯,踩坑是好事,踩过了就记住了。
公众号:蓝海数据掘金营,微信deep3321