第三章 统计套利入门:均值回归、协整关系、配对交易基础
说实话,我刚入行那会儿,对统计套利是有点敬畏的。
总觉得这东西太数学了,离实战很远。直到有一次,我在做商品期货的策略回测时,发现两个品种的价差走势特别有意思——它们就像被一根无形的绳子牵着,分开了总会拉回来。嗯,这就是我们今天要聊的核心:均值回归。
3.1 均值回归:金融世界的万有引力
什么叫均值回归?说白了,就是一个价格序列,涨多了会跌,跌多了会涨。它不会永远偏离某个中心值。
你想想看,如果一只股票今天涨停,明天又涨停,后天呢?大概率要回调。这不是玄学,是统计规律。我个人的经验是,均值回归策略最适合震荡市,单边行情里用它会死得很惨。
核心假设:金融时间序列在长期内会围绕某个均值波动,偏离越大,回归的概率越高。
但这里有个坑——你怎么知道当前价格是“偏离”了?
我曾经犯过一个错误:拿过去一年的均值当基准,结果市场结构变了,均值也跟着漂移。后来我学乖了,用滚动窗口来计算动态均值。
3.2 协整关系:比相关性更靠谱
很多人以为,两个股票相关系数高就能做配对交易。错!
相关系数高,只能说明它们走势像,但万一哪天走散了,就再也回不来了。协整关系才是真正的“灵魂伴侣”——它要求两个序列的线性组合是平稳的。
我举个例子:
- 相关性:你和你的影子,步调一致,但影子不会自己动。
- 协整性:你和你的狗,虽然有时你走快它走慢,但绳子牵着,总会拉回来。
在量化里,我们常用Engle-Granger两步法来检验协整。第一步,用OLS回归估计协整系数;第二步,对残差做单位根检验(ADF检验)。
实战技巧:我建议先用相关性筛选一遍,再跑协整检验。别上来就全量跑,计算量太大,而且伪协整的概率会升高。
3.3 配对交易:从理论到代码
好了,理论说完了,咱们来点实在的。配对交易的流程其实就四步:
- 选对:找到协整关系稳定的品种对
- 建模:计算价差和回归系数
- 开仓:价差偏离到一定程度时入场
- 平仓:价差回归时出场,或者止损
下面是我个人习惯用的一个Python示例,用statsmodels库做协整检验:
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller
# 假设我们有两支股票的日收益率数据
# df['A'] 和 df['B'] 是价格序列
def cointegration_test(series1, series2):
# 第一步:OLS回归
series1 = sm.add_constant(series1)
model = sm.OLS(series2, series1).fit()
residuals = model.resid
# 第二步:ADF检验残差平稳性
adf_result = adfuller(residuals, maxlag=1)
p_value = adf_result[1]
return p_value, model.params[1] # 返回p值和协整系数
# 使用示例
p_val, hedge_ratio = cointegration_test(df['A'], df['B'])
if p_val < 0.05:
print(f"协整关系成立,对冲比率: {hedge_ratio:.2f}")
else:
print("没有发现协整关系")
代码很简单,但要注意几点:
- ADF检验的滞后阶数怎么选?我一般用AIC准则自动选。
- 对冲比率不是一成不变的,建议定期重估。
- 别只看p值,还要看残差的标准差,这决定了你的开仓阈值。
3.4 开仓与止损:别让利润变成亏损
有了协整关系,接下来就是怎么交易了。我常用的方法是Z-score:
# 计算价差
spread = df['A'] - hedge_ratio * df['B']
# 计算Z-score
z_score = (spread - spread.rolling(window=60).mean()) / spread.rolling(window=60).std()
# 交易信号
entry_threshold = 2.0 # 开仓阈值
exit_threshold = 0.5 # 平仓阈值
# 当Z-score > 2时,做空价差(卖A买B)
# 当Z-score < -2时,做多价差(买A卖B)
# 当Z-score回到0.5以内时,平仓
避坑指南:我曾经把阈值设得太小(比如1.5),结果频繁交易,手续费吃掉了所有利润。后来我改成2.0,虽然交易次数少了,但每笔的胜率和盈亏比都上去了。
另外,止损怎么设?我个人的经验是:如果Z-score超过3.0还没回归,说明协整关系可能已经破裂了。这时候别犹豫,直接止损离场。
3.5 知识体系总览
下面这张图,是我自己整理的知识框架。你可以把它当成一张地图,随时回来看看:
3.6 写在最后
统计套利不是万能药。它最怕的就是趋势行情——如果两个品种一起涨,价差可能越拉越大,你的止损单会被反复打掉。
我个人的建议是:先用历史数据做一遍回测,看看最大回撤你能不能接受。别一上来就实盘,那是在给市场送钱。
嗯,今天就聊到这儿。记住一句话:协整是基础,均值回归是信仰,止损是底线。