统计套利入门:均值回归理论、协整关系、平稳性检验(ADF检验)

各位同学,今天我们来聊聊统计套利的底层逻辑。说实话,我刚入行那会儿,觉得统计套利就是「买低卖高」四个字。后来在实盘里摔了几次跟头,才明白事情没那么简单。

统计套利的核心,说白了就一句话:找到两个会「相互拉扯」的资产,在它们偏离太远时下注,等它们回归。这背后的数学支撑,就是均值回归理论、协整关系,以及平稳性检验。

核心观点:统计套利不是预测价格涨跌,而是预测「价差」会回归均值。你赚的是市场短期定价错误的钱。

1. 均值回归理论:价格会「回家」吗?

均值回归,听起来玄乎,其实特简单。你想想看,一根橡皮筋拉长了,松手就会弹回去。价格也一样——当它偏离历史均值太远,就有往回走的倾向。

我在2018年做过一个股指期货的统计套利策略。当时IF和IC的价差拉到了历史极值,我按均值回归的逻辑进场,结果价差继续扩大,差点爆仓。后来复盘发现:均值回归不是必然发生的,它只在「协整关系」成立时才有效

所以,别看到价格偏离均值就无脑冲。你得先问自己三个问题:

  • 这个价差序列是平稳的吗?
  • 两个资产之间真的有长期均衡关系吗?
  • 回归的时间窗口我能扛得住吗?

我的习惯:每次做均值回归策略前,我都会先画一张价差走势图,肉眼看看它是不是「上下乱窜但总回到中间」。如果价差像脱缰野马一样越跑越远,那均值回归就不适用。

2. 协整关系:两个资产之间的「隐形锁链」

协整,这个词听起来高大上,其实就一个意思:两个非平稳的时间序列,它们的线性组合是平稳的

举个例子。茅台和五粮液,单看价格都是随机游走的(非平稳),但它们的价差可能很稳定(平稳)。为什么?因为基本面相似,市场情绪同步,机构资金在两者之间来回搬砖。这就是协整。

我记得有一次,一个实习生跑来问我:「老师,两个相关性很高的股票,是不是就能做配对交易?」我说:「不一定。相关性高不代表协整。你想想,两个股票都跟着大盘涨跌,相关性当然高,但它们的价差可能越拉越大——这就是伪回归。」

协整和相关性,区别在哪?我整理了一张表:

概念 定义 对交易的意义
相关性 两个变量线性相关的程度 高相关不代表价差稳定,可能伪回归
协整 两个非平稳序列的线性组合平稳 价差有均值回归特性,适合统计套利

所以,做统计套利的第一步,不是算相关系数,而是做协整检验。

3. 平稳性检验(ADF检验):你的价差「稳」吗?

平稳性,说白了就是序列的统计性质(均值、方差)不随时间变化。一个平稳的价差序列,才能用均值回归策略。

ADF检验,全称Augmented Dickey-Fuller检验,是检验平稳性的标准工具。它的逻辑很简单:

  • 原假设H0:序列存在单位根(非平稳)
  • 备择假设H1:序列不存在单位根(平稳)
  • 判断标准:p值 < 0.05,拒绝H0,认为序列平稳

嗯,这里要注意:ADF检验的p值不是万能的。我见过很多新手,看到p值小于0.05就兴奋地冲进去,结果亏得一塌糊涂。为什么?因为ADF检验对滞后阶数很敏感,选错了阶数,结果可能完全相反。

避坑指南:我曾经在回测中用了默认的ADF参数,结果策略表现完美。实盘一跑,直接崩了。后来发现是滞后阶数选得太小,导致检验结果不可靠。建议用AIC或BIC准则自动选择滞后阶数,别偷懒用默认值。

下面是一个完整的ADF检验代码示例,我习惯用statsmodels库:

import numpy as np
import pandas as pd
from statsmodels.tsa.stattools import adfuller
import yfinance as yf

# 1. 获取数据
ticker1 = 'AAPL'
ticker2 = 'MSFT'
data = yf.download([ticker1, ticker2], start='2020-01-01', end='2023-12-31')['Adj Close']

# 2. 计算价差(这里用简单线性回归的残差)
import statsmodels.api as sm
X = sm.add_constant(data[ticker2])
model = sm.OLS(data[ticker1], X).fit()
spread = data[ticker1] - model.params[1] * data[ticker2] - model.params[0]

# 3. ADF检验
result = adfuller(spread, autolag='AIC')
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}')

# 4. 判断
if result[1] < 0.05:
    print('✅ 价差序列平稳,适合统计套利')
else:
    print('❌ 价差序列非平稳,需要重新选择配对')

这段代码里,我用了autolag='AIC',让模型自动选择最优滞后阶数。这是我在实战中踩坑后养成的习惯。

4. 知识体系总览

说了这么多,我画了一张图,帮你把本章的知识点串起来:

统计套利入门知识体系 统计套利 均值回归理论 协整关系 平稳性检验(ADF) 价格偏离均值后回归 需要协整关系支撑 线性组合平稳 ≠ 相关性 p值 < 0.05 为平稳 注意滞后阶数选择 三者缺一不可,共同构成统计套利的基础

从这张图你能看到,均值回归、协整关系、平稳性检验,三者是环环相扣的。没有协整,均值回归就是空中楼阁;没有平稳性检验,你根本不知道价差会不会「一去不回头」。

5. 实战中的几个要点

最后,分享几个我在实战中总结的经验:

  1. 别只看p值,要看ADF统计量。p值告诉你是否平稳,统计量告诉你「有多平稳」。统计量越负,平稳性越强。
  2. 多品种组合的协整。不一定是两个品种,三个、四个也可以。我做过一个能源板块的统计套利,用了原油、天然气、煤炭三个品种,效果比两两配对好得多。
  3. 协整关系会漂移。别以为一次检验通过就万事大吉。我建议每3个月重新检验一次,防止关系失效。
  4. 交易成本是隐形杀手。价差回归需要时间,如果交易成本太高,可能还没等到回归,你的账户先扛不住了。

一个小技巧:在做ADF检验前,先对价差序列做一次可视化。如果价差看起来像「白噪声」一样围绕0轴上下波动,那大概率是平稳的。如果看起来像「随机游走」一样没有中心,那基本没戏。肉眼判断虽然不精确,但能帮你快速过滤掉明显不合适的配对。

好了,这一章的内容就到这里。统计套利的入门,说白了就是搞懂「均值回归、协整、平稳性」这三个词。下一章我们会深入讲如何构建一个完整的配对交易策略,包括进场信号、止损止盈、仓位管理等实战细节。


公众号:蓝海资料掘金营,微信deep3321