4. 统计套利与风险:配对交易与协整模型
统计套利,说白了就是找两个长得像的股票,赌它们之间的价差会回归。我刚开始做量化那会儿,觉得这招简直完美——市场中性、回测漂亮、收益稳定。后来嘛...嗯,被市场教育了几次,才明白里面的坑有多深。
今天咱们就聊聊统计套利的核心:配对交易与协整模型。我会把我在实战中踩过的雷、总结的经验,一股脑倒出来。
4.1 配对交易的核心逻辑
配对交易的基本思路很简单:找到两只相关性高的股票,当它们的价差偏离均值时,做多被低估的那只,做空被高估的那只。等价差回归,两边平仓,赚取差价。
但这里有个关键问题——相关性不等于协整性。我见过太多人拿相关系数0.9以上的股票做配对,结果亏得底裤都不剩。为什么?因为相关性只能说明它们走势相似,不能保证价差会回归。
核心区别:
- 相关性:两只股票走势相似,但可能越走越远
- 协整性:两只股票的价差是平稳的,会围绕均值波动
举个例子。茅台和五粮液,相关性很高吧?但如果你在2021年初做多茅台、做空五粮液,到现在可能还在亏。因为它们的价差并没有回归,而是走出了新的趋势。
4.2 协整模型:怎么判断价差会回归?
协整检验,说白了就是看两个时间序列的线性组合是不是平稳的。最常用的方法是Engle-Granger两步法。
第一步,用OLS回归估计协整系数:
import statsmodels.api as sm
import numpy as np
# 假设 y 和 x 是两个价格序列
y = np.array([...]) # 股票A
x = np.array([...]) # 股票B
# 回归:y = alpha + beta * x + epsilon
x_with_const = sm.add_constant(x)
model = sm.OLS(y, x_with_const).fit()
beta = model.params[1]
alpha = model.params[0]
# 计算残差(价差)
spread = y - (alpha + beta * x)
第二步,对残差做ADF检验,看是否平稳:
from statsmodels.tsa.stattools import adfuller
# ADF检验
result = adfuller(spread)
p_value = result[1]
if p_value < 0.05:
print("残差平稳,存在协整关系")
else:
print("残差不平稳,不能做配对交易")
我的经验:ADF检验的p值最好小于0.01,而不是0.05。我在项目中遇到过p值0.03的配对,回测很漂亮,实盘却亏了。后来发现是样本内过拟合,换了个时间段就不行了。
4.3 统计套利的风险敞口
很多人以为统计套利是市场中性的,其实不然。我总结了三个主要风险敞口:
4.3.1 残差风险
残差风险,就是价差本身的不确定性。即使协整关系成立,价差也可能在短期内大幅偏离均值。你想想看,如果价差偏离了3个标准差,你敢加仓吗?
我曾经做过一个能源股的配对,协整检验p值0.001,看起来完美。结果遇到一次行业政策调整,价差直接偏离了5个标准差,亏了20%才止损。嗯,从那以后我学会了设置硬止损。
避坑指南:不要迷信协整关系。协整只能说明长期会回归,但短期可能让你爆仓。一定要设置止损线,我一般用2.5个标准差作为平仓信号。
4.3.2 因子暴露
配对交易不是完全市场中性的。两只股票可能在某个因子上有不同暴露,比如行业因子、市值因子、动量因子等。
举个例子。你做多招商银行、做空工商银行。表面上是对冲了银行板块风险,但实际上招商银行对利率更敏感,工商银行对经济周期更敏感。如果利率突然变化,你的配对就会暴露风险。
| 因子 | 股票A(做多) | 股票B(做空) | 净暴露 |
|---|---|---|---|
| 行业因子 | 0.8 | 0.7 | 0.1 |
| 市值因子 | 0.3 | 0.5 | -0.2 |
| 动量因子 | 0.2 | -0.1 | 0.3 |
你看,净暴露并不为零。这就是为什么我建议在做配对之前,先做因子归因分析,确保净暴露在可控范围内。
4.4 策略回测中的过拟合风险
过拟合,是统计套利最大的敌人。我见过太多人把回测曲线做得像火箭一样,实盘却像死鱼。为什么会这样?
说白了,就是你在回测中找到了太多「巧合」——特定的参数、特定的时间段、特定的股票组合,刚好表现很好。但换一个时间段,这些「规律」就消失了。
我总结了几种常见的过拟合表现:
- 参数敏感:稍微改一下协整检验的p值阈值,结果就天差地别
- 时间段依赖:在2018-2020年表现很好,但2021-2023年就崩了
- 股票选择偏差:只选那些回测中表现好的配对,忽略了整体
我的建议:做回测时,一定要做样本外测试。我习惯把数据分成三段:训练集(60%)、验证集(20%)、测试集(20%)。只在训练集上选参数,在验证集上调参,最后在测试集上做最终评估。
4.5 样本内外表现差异
样本内表现好,样本外表现差,这是统计套利最常见的死法。我给大家看一个真实案例:
我曾经开发过一个配对交易策略,样本内夏普比率2.8,最大回撤只有5%。当时觉得稳了,直接上了实盘。结果呢?样本外夏普比率只有0.3,最大回撤25%。亏了三个月才止损。
后来复盘发现,问题出在三个方面:
- 协整关系不稳定:样本内的协整关系在样本外就破裂了
- 交易成本被低估:回测时用了万分之三的佣金,实盘加上滑点成本是万分之八
- 流动性问题:样本内选的小盘股,实盘时根本没法按回测价格成交
避坑指南:我现在的做法是,在回测中主动加入「惩罚因子」——比如把交易成本提高50%,把滑点设为0.1%。如果这样还能赚钱,再考虑实盘。另外,一定要做滚动回测,看看策略在不同时间段的表现是否稳定。
4.6 知识体系总览
下面这张图,是我对统计套利风险控制的理解。你可以把它当作一个检查清单:
这张图的核心逻辑是:配对交易不是简单的「买低卖高」,而是一个系统工程。你需要同时管理残差风险、因子暴露和过拟合风险,缺一不可。
好了,关于统计套利与风险,今天就聊到这儿。记住一句话:回测是历史,实盘是未来。别让过去的数据骗了你。