跨期套利:价差回归模型、持仓成本模型与日历价差策略
聊到碳排放权期货的套利,我个人觉得跨期套利是最容易上手、也最容易踩坑的一块。说白了,就是利用同一品种、不同到期月份的合约之间的价差来做文章。你想想看,同一个商品,只是交割时间不同,价格按理说应该有个合理的关系。但市场有时候会抽风,让这个关系偏离,这时候就是我们出手的机会。
一、价差回归模型——均值回归的信仰
这个模型的核心思想很简单:价差会围绕一个均值上下波动。就像钟摆,摆到左边太远了,迟早要摆回来。我在做螺纹钢期货的时候就用过这个思路,效果还不错。
具体逻辑是这样的:
- 计算近月合约与远月合约的价差:
Spread = P_near - P_far - 用历史数据算出价差的均值 μ 和标准差 σ
- 当价差偏离均值超过 2 倍标准差时,认为出现了套利机会
- 价差过大(高于 μ+2σ):做空价差,即卖出近月、买入远月
- 价差过小(低于 μ-2σ):做多价差,即买入近月、卖出远月
关键参数设置:
- 回看窗口:我一般用 20 个交易日或 60 个交易日
- 入场阈值:2 倍标准差(可调,1.5 倍更激进,2.5 倍更保守)
- 止损设置:价差继续扩大 0.5 倍标准差时止损
我的经验:碳排放权期货的价差波动比商品期货更「黏」。我曾经用 2 倍标准差做螺纹钢,效果很好。但换到碳配额上,价差经常在 1.5 倍标准差附近晃悠很久。后来我把阈值调到了 1.8 倍,交易频率和胜率才平衡下来。
二、持仓成本模型——从理论到实战
这个模型更「硬核」一些。它从持有成本的角度,算出远月合约的「合理价格」应该是多少。
理论公式:
F = S × e^(r + c - y) × T
其中:
- F:远月合约理论价格
- S:近月合约价格
- r:无风险利率(用国债收益率或 SHIBOR)
- c:仓储成本(碳排放权没有实物仓储,但需要考虑配额冻结的资金成本)
- y:便利收益(碳排放权的便利收益比较特殊,跟企业的减排压力有关)
- T:两个合约到期日的时间差(年化)
嗯,这里要注意。碳排放权期货跟大豆、铜那些实物商品不一样。它没有仓储费、运输费这些。那持仓成本体现在哪?
碳排放权的特殊成本构成:
| 成本项 | 说明 | 估算方法 |
|---|---|---|
| 资金成本 | 买入配额占用的资金利息 | 配额价格 × 利率 × 时间 |
| 政策风险溢价 | 碳配额政策变动带来的不确定性 | 历史波动率调整 + 政策事件因子 |
| 流动性折价 | 远月合约流动性差,买卖价差大 | 用近月与远月的买卖价差差值估算 |
避坑指南:我曾经在计算持仓成本时,直接把商品期货的公式套用到碳配额上,结果回测曲线惨不忍睹。后来才发现,碳排放权的「便利收益」是负的——企业更愿意持有近月合约来履约,远月合约反而有折价。这个跟原油的 contango 结构正好相反。
三、日历价差策略逻辑——把理论变成代码
好了,理论说完了,咱们看看怎么落地。日历价差策略,说白了就是把上面两个模型结合起来,形成一个可执行的交易逻辑。
策略流程:
- 数据准备:获取近月合约(如 CEA2406)和远月合约(如 CEA2412)的日线数据
- 价差计算:实时计算 Spread = P_near - P_far
- 信号生成:
- 用价差回归模型判断是否偏离均值
- 用持仓成本模型验证偏离是否合理
- 两个模型同时发出信号,才执行交易
- 仓位管理:根据价差偏离程度动态调整仓位
- 风险控制:设置止损、止盈、最大持仓时间
核心代码片段(Python 伪代码):
def calendar_spread_strategy(near_price, far_price):
# 计算价差
spread = near_price - far_price
# 价差回归模型
mean = spread.rolling(20).mean()
std = spread.rolling(20).std()
z_score = (spread - mean) / std
# 持仓成本模型
r = 0.025 # 无风险利率 2.5%
T = 0.5 # 半年到期
fair_spread = near_price * (1 - np.exp(-r * T))
# 信号融合
if z_score > 2 and spread > fair_spread * 1.1:
return 'SHORT_SPREAD' # 卖近买远
elif z_score < -2 and spread < fair_spread * 0.9:
return 'LONG_SPREAD' # 买近卖远
else:
return 'NO_TRADE'
四、知识体系总览
为了让你看得更清楚,我画了一张图,把这三个模型的关系串起来:
你看这张图,三个模型不是孤立的。价差回归模型负责「找机会」,持仓成本模型负责「验证机会是否合理」,日历价差策略负责「怎么干」。我个人习惯把这三个模型做成一个 pipeline,每天跑一遍,有信号就挂单,没信号就等着。
一个小技巧:刚开始做的时候,别急着上实盘。先用历史数据回测 3 个月,看看你的参数在碳配额期货上表现如何。我记得我第一次回测时,发现 20 日均线在碳配额上太敏感了,后来改成了 30 日均线,效果好了很多。
好了,跨期套利的三个核心模型就聊到这儿。说白了,价差回归模型是「赌均值回归」,持仓成本模型是「算合理价格」,日历价差策略是「把两者拧在一起干活」。你想想看,这三个模型配合好了,是不是比单打独斗强多了?