2. 跨品种套利原理:相关性分析、价差回归、统计套利框架
各位,咱们今天聊点实在的。跨品种套利,说白了就是找两个关系密切的品种,利用它们之间暂时的价格失衡来赚钱。我做了这么多年,发现很多人一上来就盯着波动率曲面看,却忽略了最基础的套利逻辑——嗯,地基没打牢,房子盖再高也悬。
2.1 相关性分析:别只看皮尔逊
做跨品种套利,第一步肯定是看相关性。但我得提醒你,千万别迷信皮尔逊相关系数。我在项目中遇到过好几次,两个品种的皮尔逊系数高达0.95,结果一开仓就亏钱。为什么?因为皮尔逊只捕捉线性关系,而金融数据哪有那么乖?
我个人习惯用三种方法综合判断:
- 皮尔逊相关系数:快速筛选,但只做参考
- 斯皮尔曼秩相关系数:对异常值更稳健,适合非正态分布
- 肯德尔相关系数:小样本下表现更好,我常用它做最终验证
举个例子,螺纹钢和热卷。这两个品种基本面高度相关,但它们的相关性会随着季节、政策、库存周期变化。你拿一年的数据算出来0.9,但最近三个月可能只有0.6。所以,我建议用滚动窗口计算动态相关性,窗口大小我一般选60个交易日。
# 滚动相关性计算示例
import pandas as pd
import numpy as np
def rolling_corr(series1, series2, window=60):
return series1.rolling(window).corr(series2)
# 螺纹钢和热卷的日收益率
rb_returns = rb_prices.pct_change()
hc_returns = hc_prices.pct_change()
rolling_corr_rb_hc = rolling_corr(rb_returns, hc_returns)
2.2 价差回归:均值回归是核心信仰
跨品种套利能赚钱,本质上赌的是价差会回归均值。但这里有个坑——你得先确认这个价差是平稳的。我曾经吃过这个亏,用两个非平稳序列做套利,结果价差越走越远,亏得我头皮发麻。
检验平稳性,我一般用ADF检验。但注意,ADF检验的p值要小于0.01我才敢用,0.05我都觉得悬。为什么?因为金融数据的噪声太大,0.05的显著性水平下,假阳性的概率比你想象的高得多。
价差的计算方式也有讲究。最简单的就是直接相减:
spread = price_A - hedge_ratio * price_B
这个hedge_ratio怎么定?我建议用OLS回归,但要注意:
- 回归前先检查残差是否平稳
- 如果残差不平稳,试试用对数价格回归
- 实在不行,考虑用协整检验(Johansen检验)
你想想看,如果两个品种的价差长期偏离均值,要么是基本面变了,要么是你选错了配对。这时候硬着头皮做套利,跟接飞刀没什么区别。
2.3 统计套利框架:从信号到执行
好了,前面铺垫了那么多,现在说说完整的框架。我把它分成四步:
- 配对筛选:用相关性+协整检验选出候选组合
- 价差建模:确定价差的计算方式和回归阈值
- 信号生成:当价差偏离均值超过N个标准差时开仓
- 风险管理:设置止损、仓位控制、动态调整
这里我画了一张流程图,把整个逻辑串起来:
这张图看着简单,但每个环节都有坑。我重点说说信号生成这一步。
2.4 信号生成:阈值怎么定?
最常见的做法是用均值±N倍标准差作为开仓信号。N取多少?我见过有人用1.5,有人用2,有人用3。说实话,没有标准答案。我的经验是:
- 高流动性品种(如股指期货):N=2,因为价差回归快
- 低流动性品种(如某些商品):N=2.5或3,防止假突破
- 波动率高的市场:动态调整N,比如用滚动标准差
另外,开仓后不是傻等回归。我一般会设一个止损线,比如价差继续扩大到3σ就止损。为什么?因为价差可能已经发生了结构性变化,继续扛单就是等死。
2.5 实战中的细节
最后说几个实战中容易忽略的点:
| 环节 | 常见问题 | 我的建议 |
|---|---|---|
| 数据频率 | 用日线还是分钟线? | 日线做长周期套利,分钟线做高频。我一般先用日线筛选,再用分钟线执行 |
| 手续费 | 忽略手续费导致策略失效 | 把手续费算进价差里,开仓阈值要覆盖双边成本 |
| 滑点 | 回测完美,实盘亏损 | 回测时加一个滑点模拟,我一般加1-2个tick |
| 仓位管理 | 单品种仓位过重 | 单个配对不超过总资金的5%,分散到5-10个配对 |
嗯,说到仓位管理,我再啰嗦一句。跨品种套利虽然风险相对低,但也不是稳赚不赔。我见过有人用10倍杠杆做套利,结果一个黑天鹅事件,价差瞬间突破历史极值,直接爆仓。所以,杠杆控制在2-3倍就够了,别贪。
好了,这一章的内容就这些。记住,统计套利的核心不是预测方向,而是赌价差会回归。只要你的配对选对了,阈值设合理了,剩下的就是耐心等待。
公众号:蓝海资料掘金营,微信deep3321