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天),资金占用太久,风险也大。

实战技巧: 我一般用滚动窗口计算半衰期,比如用过去60天的数据算一次。如果半衰期突然变长,说明价差结构可能发生了变化,这时候要小心,别盲目开仓。

2.4 价差波动率分析:控制风险的关键

价差波动率,决定了你的止损该设在哪里。波动率大的品种对,止损要宽一些;波动率小的,止损可以窄一些。

计算价差波动率,我常用两种方法:

  1. 历史波动率:用过去N天的价差标准差
  2. 滚动波动率:用指数加权移动平均(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 知识体系总览

下面这张图,把价差与比价分析的核心逻辑串起来了。我画这张图的时候,特意把「数据预处理」放在了最前面——因为这一步做不好,后面全是白搭。

价差与比价分析知识体系 品种价格数据 数据预处理(标准化/对齐) 价差计算 标准化价差 / 原始价差 比价计算 价格比值 / 对数比价 波动率分析 历史波动率 / EWMA 均值回归特性 比价区间分析 波动率状态判断 套利信号生成

这张图你看懂了吗?从数据输入到信号生成,每一步都环环相扣。价差和比价是两条腿,波动率是眼睛,均值回归是大脑。缺了任何一环,你的套利策略都可能跑偏。

核心要点总结:

  • 价差计算要注意合约乘数和标准化,别被量纲坑了
  • 比价适合不同品种,价差适合同品种或同产业链
  • 均值回归半衰期在3-15天最理想
  • 波动率决定止损宽度,要动态调整

好了,价差与比价分析这块就讲到这里。下一章咱们聊聊如何用这些指标构建具体的交易信号——说白了,就是怎么把分析结果变成真金白银的买卖指令。

专注资料整理