第2章 价差分析:价差的计算、价差图绘制、价差的统计特征
跨期套利的核心,说白了就是盯着「价差」吃饭。你想想看,同一个品种,近月和远月合约之间,价格不可能永远同步。有时候近月涨得快,有时候远月跌得狠。这中间的差值,就是我们套利的空间。
我个人习惯把价差比作一根橡皮筋。正常情况下它有个合理的长度,但市场情绪一上来,这根皮筋就会被拉得很长。我的任务就是等它弹回去。嗯,听起来简单,但实际操作中,很多新手连价差怎么算都搞不清楚,更别提画图分析了。
一、价差的计算方式
价差的计算,其实就两种主流方法。我在项目中遇到过不少团队,因为选错了计算方法,导致信号完全失真。这里我重点讲清楚。
1. 减法价差(最常用)
这是最直观的方式。用近月合约价格减去远月合约价格:
价差 = P_near - P_far
举个例子:
- 螺纹钢RB2305(近月)价格:4200元/吨
- 螺纹钢RB2310(远月)价格:4150元/吨
- 价差 = 4200 - 4150 = 50元/吨
价差为正,说明近月比远月贵,这叫「正向市场」或「backwardation」。价差为负,就是远月更贵,叫「反向市场」或「contango」。我刚开始做套利时,总记反这两个词,后来干脆只记「近减远」,正的就是近月强,负的就是远月强。
2. 比值价差(适用于跨品种)
有些时候,直接用减法不合适。比如豆粕和菜粕,价格基数差很多。这时候用比值更合理:
价差比 = P_near / P_far
比值大于1,近月强;小于1,远月强。我个人习惯在比值价差上做对数处理,这样数据更接近正态分布,方便后续做统计建模。
二、价差图的绘制
光有数字不行,你得把价差画出来。一张好的价差图,能让你一眼看出当前处于什么位置。我见过太多人盯着Excel表格发呆,其实画个图就什么都明白了。
1. 基础价差折线图
横轴是时间,纵轴是价差。这是最基础的图。你需要注意几点:
- 时间跨度:至少包含一个完整的交割周期(比如3个月)
- 标注关键点位:比如均值线、±1倍标准差线、±2倍标准差线
- 颜色区分:价差为正用红色,为负用绿色,一目了然
2. 价差分布直方图
这个图能告诉你价差的历史分布情况。我经常用它来判断当前价差是否「极端」。比如价差历史均值是50,标准差是20,当前价差到了90,那就是偏离均值2个标准差,属于小概率事件。
3. 价差与价格的叠加图
把近月价格、远月价格、价差放在同一张图上。这样你能直观看到:价差的变动,到底是近月带的,还是远月带的。我习惯用双Y轴,左轴放价格,右轴放价差。
三、价差的统计特征
画完图,你得算算统计量。不然你光看图,觉得「好像高了」,但高了多少算高?没有量化标准,一切都是感觉。
1. 均值与标准差
这是最基础的。计算历史价差的平均值和标准差。然后你就可以画「均值±1σ」「均值±2σ」的通道线。我一般用过去60个交易日的数据来计算,太短了噪声大,太长了市场结构可能已经变了。
| 统计量 | 含义 | 应用场景 |
|---|---|---|
| 均值 | 价差的中心位置 | 判断当前价差是否偏离正常水平 |
| 标准差 | 价差的波动幅度 | 设定开仓/平仓阈值 |
| 偏度 | 价差分布的不对称性 | 判断价差是否容易单边极端 |
| 峰度 | 价差分布的尾部厚度 | 判断极端行情出现的概率 |
2. 平稳性检验(ADF检验)
这个很重要。如果价差序列不平稳,那你的套利策略就是空中楼阁。我习惯用ADF检验,p值小于0.05才算平稳。如果不平稳,说明价差没有均值回归特性,不适合做套利。
# Python代码示例
from statsmodels.tsa.stattools import adfuller
# 假设spread是价差序列
result = adfuller(spread)
print(f'ADF统计量: {result[0]}')
print(f'p值: {result[1]}')
if result[1] < 0.05:
print('价差序列平稳,适合套利')
else:
print('价差不平稳,需要差分或换品种')
3. 自相关性分析
价差有没有「记忆性」?今天的价差和昨天的价差有没有关系?我一般看ACF(自相关函数)图。如果自相关系数衰减很慢,说明价差有趋势性,不适合做均值回归套利。如果衰减很快,那就是白噪声,适合做回归策略。
4. 分位数分析
这个我特别喜欢用。计算价差的历史分位数,比如5%、25%、50%、75%、95%。当前价差如果处于95%分位数以上,那就是极度偏高,做空价差的胜率很高。反过来,低于5%分位数,做多价差的胜率很高。
好了,价差分析这块,核心就是三件事:算对价差、画好图形、算清统计量。这三步走扎实了,后面的套利策略才有根基。我见过太多人一上来就搞机器学习、神经网络,结果连价差的基本统计特征都没搞清楚,那纯粹是瞎折腾。