2、价差与比价分析:价差计算、比价计算、价差均值回归特性、价差波动率分析
做跨品种套利,说白了就是盯着两个品种之间的「关系」吃饭。这个关系怎么量化?就是价差和比价。我刚开始做套利策略那会儿,以为价差就是简单的减法,后来发现这里面的门道深着呢。今天咱们就把这块掰开揉碎了讲清楚。
2.1 价差计算:最基础但最容易踩坑
价差,就是两个品种价格的差值。公式很简单:
价差 = 品种A价格 - 品种B价格 × 合约乘数比
嗯,这里要注意。直接减?那是新手干的事。实际交易中,两个品种的合约规格往往不一样。比如螺纹钢和热卷,一手都是10吨,那可以直接减。但如果是铜和铝呢?铜一手5吨,铝一手5吨,虽然吨数一样,但价格差了好几个数量级。
我个人习惯,先做标准化处理:
标准化价差 = (品种A价格 / 品种A历史均价) - (品种B价格 / 品种B历史均价)
这样处理完,价差就在一个相对稳定的区间里波动了。我在项目中遇到过一个问题:直接用原始价格算价差,结果价差序列非平稳,回测时看起来有套利机会,实盘一跑就亏。后来才发现,是没做标准化。
2.2 比价计算:另一种视角
比价,就是两个品种价格的比值。公式:
比价 = 品种A价格 / 品种B价格
比价的好处是什么?它天然消除了量纲差异。比如铜和铝,铜6万,铝1.8万,比价就是3.33。这个数值在历史上通常落在3.0到3.8之间。一旦突破这个区间,就可能是套利机会。
你想想看,比价和价差哪个更好用?其实没有绝对答案。我个人经验是:
- 价差适合同品种不同月份(比如近月和远月),或者同产业链上下游(比如螺纹钢和热卷)
- 比价适合不同品种但有关联性的(比如铜和铝、豆粕和豆油)
为什么?因为价差假设两个品种的价格水平相近,而比价假设它们之间存在稳定的比例关系。说白了,就是看你的品种对属于哪种类型。
2.3 价差均值回归特性:套利的理论基础
做套利,赌的就是价差会回归均值。这个特性在金融时间序列里叫「均值回归」。我给你们看个典型的例子:
# 计算价差的均值回归半衰期
import numpy as np
import statsmodels.api as sm
def half_life(spread):
spread_lag = spread.shift(1).dropna()
spread_diff = spread.diff().dropna()
# 对齐数据
spread_lag = spread_lag.iloc[1:]
# 回归:Δspread = α + β * spread_lag
X = sm.add_constant(spread_lag)
model = sm.OLS(spread_diff, X).fit()
beta = model.params.iloc[1]
# 半衰期 = -ln(2) / ln(1 + β)
hl = -np.log(2) / np.log(1 + beta)
return hl
这个半衰期是什么意思?它告诉你价差偏离均值后,平均需要多长时间才能回来一半。比如半衰期是5天,那价差偏离后,大概5天能回归一半,10天能回归75%。
我建议,半衰期在3-15天之间的品种对,最适合做套利。太短了(比如1天),交易成本太高;太长了(比如30天),资金占用太久,风险也大。
2.4 价差波动率分析:控制风险的关键
价差波动率,决定了你的止损该设在哪里。波动率大的品种对,止损要宽一些;波动率小的,止损可以窄一些。
计算价差波动率,我常用两种方法:
- 历史波动率:用过去N天的价差标准差
- 滚动波动率:用指数加权移动平均(EWMA)
# 滚动波动率计算
def rolling_volatility(spread, window=20, method='ewma'):
if method == 'std':
return spread.rolling(window).std()
elif method == 'ewma':
# 使用指数加权
return spread.ewm(span=window).std()
这里有个坑:价差波动率不是一成不变的。我记得有一次做豆粕和豆油的套利,价差波动率突然放大了一倍。我一看,原来是USDA报告出来了,市场在消化新数据。这时候如果还用原来的止损参数,很容易被扫出去。
| 波动率状态 | 建议操作 | 止损倍数 |
|---|---|---|
| 低波动(历史25%分位以下) | 正常开仓,窄止损 | 1.5倍波动率 |
| 中等波动(25%-75%分位) | 正常开仓,中等止损 | 2.0倍波动率 |
| 高波动(75%分位以上) | 谨慎开仓,宽止损或观望 | 3.0倍波动率 |
说白了,波动率就是你的「风险温度计」。温度高了,要么少穿点(缩小仓位),要么多带点防护(放大止损)。
2.5 知识体系总览
下面这张图,把价差与比价分析的核心逻辑串起来了。我画这张图的时候,特意把「数据预处理」放在了最前面——因为这一步做不好,后面全是白搭。
这张图你看懂了吗?从数据输入到信号生成,每一步都环环相扣。价差和比价是两条腿,波动率是眼睛,均值回归是大脑。缺了任何一环,你的套利策略都可能跑偏。
核心要点总结:
- 价差计算要注意合约乘数和标准化,别被量纲坑了
- 比价适合不同品种,价差适合同品种或同产业链
- 均值回归半衰期在3-15天最理想
- 波动率决定止损宽度,要动态调整
好了,价差与比价分析这块就讲到这里。下一章咱们聊聊如何用这些指标构建具体的交易信号——说白了,就是怎么把分析结果变成真金白银的买卖指令。