一、统计套利概述
什么是统计套利?
统计套利,说白了就是利用数学模型找价格偏差。我刚开始接触这个领域时,觉得它特别像在赌场里找规律——但后来发现,它比赌博严谨得多。
举个例子:假设贵州茅台和五粮液,历史上它们的价格总是保持一定比例。突然有一天,茅台涨了5%,五粮液只涨了1%。按照统计规律,这个价差大概率会回归。这时候,你就可以做多五粮液、做空茅台,等它们回归后平仓获利。
嗯,这里要注意:统计套利不是无风险的。它基于概率,不是确定性。你赚的是大概率事件的钱。
统计套利 vs 无风险套利
这两者的区别,我经常用一句话概括:
- 无风险套利:同一资产在不同市场的价差。比如A股和港股都上市的股票,价格不一样,你同时买卖,锁死利润。这是教科书式的套利,现实中机会极少。
- 统计套利:相关资产之间的价差。比如螺纹钢和热卷,它们价格走势高度相关,但偶尔会偏离。你赌它们会回归。
我在项目中遇到过不少新手,把统计套利当成无风险套利来做。结果价差没回归,反而越拉越大,最后爆仓。所以,一定要搞清楚:统计套利是有风险的,只是风险相对可控。
核心区别一览:
| 维度 | 无风险套利 | 统计套利 |
|---|---|---|
| 风险 | 理论上为零 | 存在模型风险、尾部风险 |
| 机会频率 | 极低 | 较高 |
| 持仓时间 | 极短(秒级) | 数小时到数天 |
| 资金容量 | 小 | 大 |
| 依赖条件 | 市场效率低下 | 统计规律稳定 |
统计套利的数学基础
做统计套利,绕不开两个核心概念:均值回归和协整。
均值回归
什么意思?就是价格偏离均值后,会像橡皮筋一样被拉回来。我个人的习惯是,先看价差序列的均值,然后设定上下轨。比如价差超过2倍标准差,我就进场。
但这里有个坑:不是所有资产都均值回归。趋势性很强的品种,比如比特币,你去做均值回归,大概率亏钱。我曾经在原油上吃过这个亏——2014年油价暴跌,我以为会回归,结果它跌了整整一年。
避坑指南:做均值回归前,先做平稳性检验。常用的方法是ADF检验。如果p值小于0.05,说明序列平稳,可以做均值回归。
协整
协整比均值回归更高级。它说的是:两个非平稳的时间序列,它们的线性组合是平稳的。你想想看,两个随机游走的序列,单独看都没规律,但组合起来却有稳定的关系——这就是协整的魅力。
举个例子:沪深300和中证500,单独看都是随机游走,但它们的价差可能是平稳的。这就是协整关系。
检验协整,我常用Engle-Granger两步法:
# 第一步:回归
import statsmodels.api as sm
y = df['asset1']
x = df['asset2']
x = sm.add_constant(x)
model = sm.OLS(y, x).fit()
residuals = model.resid
# 第二步:对残差做ADF检验
from statsmodels.tsa.stattools import adfuller
result = adfuller(residuals)
print(f'ADF统计量: {result[0]}')
print(f'p值: {result[1]}')
# p值小于0.05,说明残差平稳,存在协整关系
注意:协整关系会随时间变化。我建议每3个月重新检验一次。别指望一个模型用三年,市场会变的。
统计套利的核心流程
做统计套利,我一般分四步走。这四步缺一不可:
- 筛选配对:找相关性高、有经济逻辑的品种。比如豆粕和菜粕、螺纹钢和热卷。别乱配对,要有基本面支撑。
- 检验协整:用ADF检验确认价差是否平稳。不平稳的配对,做不了统计套利。
- 设计交易信号:设定开仓、平仓、止损的阈值。我习惯用Z-score,超过2倍标准差开仓,回归到0.5倍平仓。
- 回测与风控:用历史数据验证策略,设置最大回撤和止损。这一步很多人偷懒,结果实盘亏得很惨。
下面这张图,是我自己总结的统计套利核心逻辑:
嗯,以上就是统计套利的基础框架。我个人觉得,最难的不是数学,而是心态。你建仓后价差继续扩大,你敢不敢加仓?你平仓后价差又回归了,你后悔不后悔?这些心理层面的东西,比模型更重要。
记住一句话:统计套利赚的是耐心的钱。别想着每笔都赚,只要胜率超过60%,长期下来就是好策略。