第3章:价差分析入门
各位同学,欢迎来到跨期套利的核心环节——价差分析。
说实话,很多人一上来就盯着单个合约的价格看,觉得涨了就买、跌了就卖。但做跨期套利,你的眼睛得盯着两个合约之间的「关系」。这个关系,就是价差。
我刚开始做量化的时候,也犯过这个错误。记得有一次,我花了一整天分析螺纹钢主力合约的K线,觉得要大涨,结果近月合约确实涨了,但远月涨得更猛,我的空头头寸反而亏了。从那以后我明白了——做跨期,价差才是你的交易标的。
3.1 价差的定义与计算
价差,说白了就是两个不同月份合约的价格差。
公式很简单:
价差 = 近月合约价格 - 远月合约价格
或者反过来也行,关键是要保持一致。我个人习惯用「近月减远月」,这样价差为正时,说明近月比远月贵,市场处于「backwardation」(现货溢价)状态;价差为负时,说明远月更贵,市场处于「contango」(期货溢价)状态。
举个例子:
螺纹钢 RB2401(2024年1月合约)价格:3800元/吨
螺纹钢 RB2405(2024年5月合约)价格:3750元/吨
价差 = 3800 - 3750 = 50元/吨
这个50元,就是近月比远月贵了50块。你想想看,如果你做多价差(买近月、卖远月),价差从50涨到80,你就赚了30块每吨。
3.2 价差走势图的绘制与解读
光知道价差怎么算还不够,你得会看它的走势。
我个人习惯用Python来画价差图,代码其实很简单:
import pandas as pd
import matplotlib.pyplot as plt
# 假设你有近月和远月的收盘价数据
df['价差'] = df['近月收盘价'] - df['远月收盘价']
plt.figure(figsize=(12, 6))
plt.plot(df.index, df['价差'], label='价差', color='blue')
plt.axhline(y=0, color='red', linestyle='--', alpha=0.5)
plt.title('螺纹钢跨期价差走势图')
plt.xlabel('日期')
plt.ylabel('价差(元/吨)')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()
画出来之后怎么看?我一般关注三个东西:
- 价差的绝对水平:现在是在历史高位还是低位?
- 价差的趋势:是在走扩还是在收窄?
- 价差的波动:最近是不是上蹿下跳?
嗯,这里要注意一点——别只看价格走势图就以为价差也会跟着走。价差有自己的节奏,有时候两个合约都在涨,但价差可能在跌。为什么?因为近月涨得慢、远月涨得快呗。
3.3 价差的统计特征
做量化交易,光看图不行,得用数据说话。价差有几个重要的统计特征,我一个个说。
3.3.1 均值回归
大多数商品的跨期价差,都有均值回归的特性。说白了就是——价差不会永远偏离一个「合理范围」,涨多了会跌,跌多了会涨。
为什么会这样?因为市场有套利者。当价差过大时,套利者会进场,把价差推回正常水平。我曾经在豆粕上做过一个统计,价差偏离均值2个标准差以上时,回归的概率超过85%。
3.3.2 波动率
价差的波动率,决定了你的交易风险有多大。
我习惯用20日滚动标准差来计算价差的波动率:
df['价差波动率'] = df['价差'].rolling(window=20).std()
波动率大的时候,价差一天能跑几十个点,这时候做套利要小心,仓位得轻一点。波动率小的时候,价差像一潭死水,这时候做趋势策略可能赚不到钱,但做回归策略反而合适。
我记得有一次做甲醇的跨期套利,价差波动率突然飙升到历史高位的3倍,我赶紧把仓位减了一半。结果第二天价差就反向跳了40个点,要不是减仓了,那一波得亏不少。
3.3.3 价差的统计特征总结
| 统计特征 | 含义 | 交易含义 |
|---|---|---|
| 均值 | 价差的长期平均水平 | 判断当前价差是否偏离 |
| 标准差 | 价差的波动程度 | 设定止损和仓位大小 |
| 偏度 | 价差分布是否对称 | 判断回归的对称性 |
| 峰度 | 极端值出现的概率 | 评估尾部风险 |
3.4 价差的季节性规律
这一点,做农产品和能化品的同学要特别留意。
很多商品的供需有季节性,价差也会跟着走。比如:
- 大豆:收获季节(9-10月)近月压力大,价差往往走弱
- 螺纹钢:春节后复工旺季,近月需求强,价差容易走强
- 甲醇:冬季取暖需求增加,近月价格坚挺
我一般会拉出过去3-5年的价差数据,按月份做一张季节性图表:
# 计算每个月的平均价差
seasonal = df.groupby(df.index.month)['价差'].mean()
plt.figure(figsize=(10, 5))
plt.plot(seasonal.index, seasonal.values, marker='o')
plt.title('螺纹钢价差季节性规律')
plt.xlabel('月份')
plt.ylabel('平均价差(元/吨)')
plt.grid(True, alpha=0.3)
plt.show()
你看,如果现在价差明显偏离了历史同期的平均水平,那可能就是一个交易机会。但要注意——季节性规律不是铁律,它只是给你一个参考框架。市场每年都会有一些特殊情况,比如政策变化、天气异常等,这些都会打破季节性规律。
本章知识体系
下面这张图,是我自己整理的知识框架,帮你把本章内容串起来:
好了,价差分析的基础就这些。记住一句话:价差不是价格的影子,它有自己的生命。下一章我们会深入讲价差的统计套利模型,到时候这些基础知识都会用上。