2. 套利品种选择:相关性分析与协整检验
做跨品种套利,第一步不是写代码,也不是找数据。
第一步是——选对品种。
品种选错了,后面再牛的风控模型也救不了你。我见过太多人,上来就把螺纹钢和热卷板放一起做套利,结果发现价差根本不回归,亏得莫名其妙。为什么?因为这两个品种虽然同属黑色系,但它们的供需逻辑在某些阶段是完全脱钩的。
所以,今天我们就来聊聊:怎么科学地选品种。
2.1 选品种的核心逻辑:价差要“稳”
跨品种套利的本质,是赌两个品种的价差会回归均值。
那问题来了:凭什么它会回归?
因为这两个品种之间有“内在的、经济上的、可量化的”联系。比如:
- 产业链上下游:比如豆粕和豆油,同源大豆压榨,成本端高度相关。
- 替代关系:比如螺纹钢和热卷,虽然用途不同,但生产端可以互相转产。
- 共同驱动因子:比如铜和铝,都受宏观经济和新能源需求影响。
说白了,你要找的是那种“同涨同跌,但偶尔走偏”的品种对。
核心原则:价差必须具有统计上的“均值回归”特性。如果价差是随机游走的,那套利就是赌博。
2.2 第一步:相关性分析——先看“关系”有多近
很多人一上来就做协整检验,我建议你先别急。
先算个相关系数,看看两个品种的历史价格走势是不是“步调一致”。
怎么算?
最常用的是皮尔逊相关系数。公式我就不写了,你直接用Python的 numpy.corrcoef() 就行。
import numpy as np
import pandas as pd
# 假设你有两个品种的日收盘价
price_a = pd.Series([...]) # 品种A
price_b = pd.Series([...]) # 品种B
corr = np.corrcoef(price_a, price_b)[0, 1]
print(f"相关系数: {corr:.3f}")
经验阈值:
| 相关系数范围 | 含义 | 我的建议 |
|---|---|---|
| 0.8 ~ 1.0 | 高度正相关 | 值得进一步分析 |
| 0.5 ~ 0.8 | 中等相关 | 谨慎,需结合基本面 |
| < 0.5 | 弱相关 | 基本放弃,别浪费时间 |
我的经验:相关系数低于0.7的品种对,我基本不会纳入候选池。但注意,相关系数高不代表一定能套利,它只是第一道筛子。
2.3 第二步:协整检验——确认“关系”是否稳定
相关性高,只能说明它们“一起动”。
但协整检验,才能告诉你:它们“分开后会不会回来”。
为什么需要协整?
你想想看,两个品种的价格序列通常是非平稳的(比如有趋势)。直接算相关系数,很容易出现“伪相关”。比如两个完全不相关的品种,因为都受通胀影响而同步上涨,相关系数也能到0.9。
协整检验就是用来解决这个问题的。它检验的是:两个非平稳序列的线性组合,是否平稳。
怎么做?
最常用的是 Engle-Granger 两步法:
- 第一步:用OLS回归,估计协整系数。
- 第二步:对残差进行单位根检验(ADF检验)。
import statsmodels.api as sm
# 第一步:OLS回归
X = sm.add_constant(price_b)
model = sm.OLS(price_a, X).fit()
residuals = model.resid
# 第二步:ADF检验
from statsmodels.tsa.stattools import adfuller
adf_result = adfuller(residuals, autolag='AIC')
p_value = adf_result[1]
print(f"ADF检验p值: {p_value:.4f}")
if p_value < 0.05:
print("残差平稳,存在协整关系")
else:
print("残差不平稳,不存在协整关系")
注意:ADF检验的p值阈值,我个人习惯用0.01而不是0.05。为什么?因为金融数据太“脏”了,0.05的显著性水平容易出假阳性。我曾经用0.05筛出一堆品种对,实盘跑了一个月,亏得我头皮发麻。
2.4 第三步:半衰期——判断“回归速度”
协整检验通过了,不代表就能赚钱。
你还要看:价差偏离后,多久能回来?
这个指标叫 半衰期(Half-Life)。
怎么算?
对残差序列拟合一个自回归模型 AR(1):
residuals_lag = residuals.shift(1).dropna()
residuals_diff = residuals.diff().dropna()
# 拟合AR(1)
model_ar = sm.OLS(residuals_diff, residuals_lag).fit()
theta = model_ar.params[0]
half_life = -np.log(2) / theta
print(f"半衰期: {half_life:.1f} 天")
经验判断:
- 半衰期 < 5天:回归很快,适合高频或日内套利。
- 半衰期 5~20天:中等速度,适合日频套利。
- 半衰期 > 20天:太慢了,资金占用成本高,不建议。
避坑指南:我曾经遇到一个品种对,协整检验p值0.001,完美通过。但半衰期是45天。我硬着头皮做了,结果价差偏离后,整整两个月没回来,仓位扛到爆。从那以后,半衰期超过20天的品种对,我直接扔进垃圾桶。
2.5 知识体系总览
下面这张图,是我自己总结的品种选择流程。你照着走,基本不会踩大坑。
2.6 实战中的几个坑
理论说完了,我分享几个真实踩过的坑。
- 坑一:数据频率不匹配。 我刚开始做的时候,用5分钟K线做相关性分析,结果发现相关系数高得离谱。后来才发现,是因为两个品种的交易时间不完全重合(比如一个夜盘到23:00,另一个到凌晨1:00)。解决办法:统一用日线做筛选,高频数据只用于入场时机。
- 坑二:样本外失效。 协整检验在样本内完美通过,但一出样本就崩。为什么?因为市场结构变了。比如2020年之前,螺纹钢和热卷的价差很稳定,但2021年碳中和政策出来后,两者的供需逻辑完全分化。我的建议:每3个月重新做一次协整检验,动态更新品种对。
- 坑三:过度优化。 有些人为了通过协整检验,反复调整数据区间,直到p值小于0.01。这叫“数据挖掘”,实盘必死。记住:检验是为了验证逻辑,不是为了凑结果。
总结一下:选品种,就是三步走——相关性分析做初筛,协整检验做确认,半衰期做评估。每一步都有坑,但只要你按流程走,至少能避开80%的雷。