第三章 价差分析:价差的概念、计算方式与统计特征
各位同学,咱们今天聊聊价差。这东西听起来简单,不就是两个价格相减吗?但说实话,我做了十几年交易,见过太多人在这个基础环节翻车。价差分析要是没搞透,后面所有策略都是空中楼阁。
3.1 价差到底是什么?
价差,说白了就是两个相关品种的价格差值。比如螺纹钢和热卷,一个用来盖楼,一个用来造车,原料都是钢坯,价格天然就有联动关系。我习惯把价差理解成「两个品种之间的相对定价偏差」。
举个例子:
- 螺纹钢主力合约价格:3800元/吨
- 热卷主力合约价格:3950元/吨
- 价差 = 3950 - 3800 = 150元/吨
这个150元,就是热卷比螺纹钢贵出来的部分。你想想看,如果这个价差突然扩大到300元,或者缩小到50元,是不是就出现了交易机会?嗯,这就是套利的底层逻辑。
核心要点:价差不是随便两个品种相减就完事了。必须满足三个条件——同产业链、同时间周期、同数据频率。我在项目中遇到过有人拿现货价格和期货价格直接算价差,结果时间戳对不上,分析全白做。
3.2 价差的三种计算方式
实际工作中,价差计算远不止「A减B」这么简单。我个人习惯根据策略类型选择不同的计算方法。
3.2.1 简单价差(算术价差)
最直观的方式,适用于价格水平相近的品种。
# 简单价差计算示例
spread = price_A - price_B
比如豆粕和菜粕,价格都在3000-4000元/吨区间,直接用减法没问题。但如果你拿铜(7万/吨)和铝(2万/吨)做减法,价差波动会被高价品种完全主导,这就没意义了。
3.2.2 对数价差
当两个品种价格量级差异较大时,我建议用对数价差。
# 对数价差计算
log_spread = log(price_A) - log(price_B)
为什么用对数?因为对数变换后,价差反映的是「相对变化率」而非「绝对差值」。举个例子,铜涨1000元和铝涨1000元,意义完全不同。对数价差能消除量级影响,让统计特征更稳定。
3.2.3 标准化价差(Z-score)
这是量化策略中最常用的方式。说白了就是把价差转换成「偏离均值多少个标准差」。
# Z-score 计算
mean_spread = rolling_mean(spread, window=20)
std_spread = rolling_std(spread, window=20)
z_score = (spread - mean_spread) / std_spread
Z-score的好处是统一了量纲。不管价差是1元还是1000元,Z-score都能告诉你「当前价差处于历史分布的什么位置」。我个人习惯用Z-score绝对值大于2作为开仓信号。
实战技巧:我曾经犯过一个错误——直接用日线数据算Z-score,结果信号频繁反转。后来改成用1小时线计算,再用日线做趋势过滤,效果好了很多。记住:计算窗口的选择直接影响信号质量。
3.3 价差的统计特征
搞懂了怎么算,接下来要问:价差到底长什么样?我总结了三个核心统计特征,这是所有套利策略的基石。
3.3.1 均值回归性
大多数商品价差都表现出均值回归特征。为什么?因为产业链的利润分配有内在约束。比如螺纹钢利润太高,钢厂就会多产螺纹钢,供给增加,价格回落,价差自然收窄。
判断均值回归的简单方法:看价差的自相关函数(ACF)。如果ACF在滞后几期后快速衰减到0,说明有回归特性。
# 自相关函数计算示例
import statsmodels.api as sm
acf_values = sm.tsa.acf(spread, nlags=20)
# 如果前几期ACF显著为正,后面快速衰减,说明均值回归特征明显
3.3.2 波动率聚集性
价差的波动率不是均匀的。有时候连续几天波动很小,突然一天剧烈波动。这种现象叫「波动率聚集」。我在2016年做螺纹钢和铁矿石套利时,就遇到过价差在两周内从50元扩大到200元的情况。
处理方式:用GARCH模型或者滚动标准差来动态调整仓位。波动率大的时候降低仓位,波动率小的时候适当加仓。
3.3.3 分布尖峰厚尾
价差的分布通常不是正态分布。你会发现:
- 中间部分比正态分布更「尖」——说明价差大部分时间在均值附近
- 尾部比正态分布更「厚」——说明极端行情出现的概率比理论值高
这意味着什么?如果你用正态分布假设去算VaR,会严重低估风险。我建议用历史模拟法或者Cornish-Fisher展开来修正。
避坑指南:我曾经用正态分布假设做仓位管理,结果遇到一次极端行情,价差突破了3个标准差,账户回撤超过15%。从那以后,我再也不信正态分布了。记住:商品市场的尾部风险比你想的要大得多。
3.4 价差分析框架图
下面这张图是我自己总结的价差分析框架,从数据获取到策略落地,每一步都不能少。
3.5 实战中的注意事项
最后聊几个我踩过的坑,希望对你有帮助。
- 数据对齐是第一步——不同交易所的收盘时间不一样,比如上期所下午3点收盘,大商所也是3点,但郑商所部分品种是3点15分。直接拿收盘价算价差,时间戳对不上,分析结果就是错的。
- 价差不是越稳定越好——很多人喜欢找价差波动小的品种,觉得风险低。但波动太小意味着没有交易机会。我一般看价差的年化波动率,在5%-15%之间比较理想。
- 别忘了交易成本——价差套利看似低风险,但双边交易的手续费、滑点加起来,可能吃掉你一半利润。我习惯在回测中至少加2个滑点。
总结一下:价差分析是跨品种套利的起点,也是终点。计算方式选对了,统计特征看透了,策略就成功了一半。剩下的,就是严格执行和不断优化。
嗯,这一章就到这里。价差这东西,说起来简单,做起来全是细节。希望你能在实际交易中慢慢体会。