11. 跨期套利策略:同一品种不同月份合约的基差交易逻辑
跨期套利,说白了就是吃「时间差」的饭。
同一个品种,不同月份的合约,为什么会有价差?因为市场对未来的预期不一样。有人看多近月,有人看多远月,这种分歧就给了我们套利的机会。
我个人习惯把跨期套利分成两类:事件驱动型和统计回归型。前者靠的是对特定事件的预判,后者靠的是概率和统计规律。今天咱们重点聊后者,因为它在实盘中更稳定、更可复制。
11.1 跨期价差的本质是什么?
先想一个问题:为什么远月合约和近月合约价格不一样?
原因其实就三个:
- 持仓成本:仓储费、资金利息、保险费,这些都会体现在价差里
- 供需预期:比如农产品,新季上市前近月贵,上市后远月便宜
- 市场情绪:短期资金炒作,会把价差推到不合理的位置
我在项目中遇到过最典型的例子——螺纹钢。2017年那会儿,近月合约因为环保限产被炒上天,远月合约却纹丝不动。价差拉到历史极值,我当时就判断:这不可能持续。果然,两周后价差回归,我们吃了一口大肉。
核心逻辑:跨期价差最终会回归到「合理区间」。这个区间由持仓成本和基本面共同决定。我们做的就是:在价差偏离时入场,在回归时离场。
11.2 跨期套利的三种常见模式
根据我的经验,跨期套利可以分成以下三种。每种模式对应的交易逻辑和风控手段都不一样。
| 模式 | 交易逻辑 | 典型品种 | 持仓周期 |
|---|---|---|---|
| 正向套利 | 买近月、卖远月,赌价差缩小 | 股指期货、国债期货 | 1-5天 |
| 反向套利 | 卖近月、买远月,赌价差扩大 | 农产品、能化品种 | 3-10天 |
| 蝶式套利 | 同时做多和做空三个不同月份 | 有色金属、原油 | 5-15天 |
你想想看,正向套利其实最符合直觉——近月贵、远月便宜,那就买便宜的卖贵的呗。但现实往往没那么简单。我记得有一次做豆粕的正向套利,价差明明已经到历史低位了,结果因为港口到货延迟,近月继续暴涨,差点把我打爆仓。嗯,这里要注意:价差回归不是必然的,只是大概率事件。
11.3 如何构建跨期套利模型?
模型构建其实不复杂,但细节决定成败。我一般分四步走:
- 数据清洗:把主力合约切换、交割日跳空这些坑填平
- 价差计算:用近月价格减去远月价格,或者用对数价差
- 统计检验:做ADF检验,确认价差序列是否平稳
- 信号生成:设定上下阈值,触发就开仓
下面是我常用的一个简化版代码。注意,这只是演示逻辑,实盘还需要加很多风控条件。
import pandas as pd
import numpy as np
from statsmodels.tsa.stattools import adfuller
def cross_spread_strategy(near_price, far_price, window=20, z_threshold=2):
"""
跨期套利信号生成
:param near_price: 近月合约价格序列
:param far_price: 远月合约价格序列
:param window: 滚动窗口
:param z_threshold: Z-score阈值
"""
spread = near_price - far_price
# 计算滚动均值和标准差
mean_spread = spread.rolling(window=window).mean()
std_spread = spread.rolling(window=window).std()
# Z-score标准化
z_score = (spread - mean_spread) / std_spread
# 生成信号
signals = pd.Series(0, index=spread.index)
signals[z_score > z_threshold] = -1 # 价差过大,做空价差
signals[z_score < -z_threshold] = 1 # 价差过小,做多价差
# ADF检验,确认平稳性
adf_result = adfuller(spread.dropna())
is_stationary = adf_result[1] < 0.05
return signals, spread, is_stationary
这段代码的核心就是Z-score。当价差偏离均值超过2个标准差时,我们认为它「过分了」,该回归了。但这里有个坑——如果价差序列本身不平稳,Z-score就是扯淡。所以我每次跑模型前,必做ADF检验。
避坑指南:我曾经因为没做ADF检验,直接套用Z-score策略,结果在铁矿石上亏了三个月。后来才发现,那段时间铁矿石的价差是带趋势的,根本不是均值回归。从那以后,我养成了一个习惯:每换一个品种,先跑一遍平稳性检验。
11.4 跨期套利的实战要点
理论说完了,聊聊实战中那些「书上不会写」的东西。
- 合约切换要小心:主力合约切换时,价差会跳空。我一般提前3天平仓,不赌最后那点利润。
- 保证金占用:跨期套利虽然风险低,但保证金是双边收的。仓位别太重,我一般控制在总资金的30%以内。
- 滑点控制:远月合约流动性差,滑点可能吃掉利润。建议用限价单,别追涨杀跌。
还有一个容易被忽略的点——交割规则。不同交易所、不同品种,交割规则天差地别。比如上期所的铜可以交割,但大商所的豆粕只能现金交割。如果你做的是实物交割品种,价差在临近交割日会迅速收敛,这时候套利空间就没了。
11.5 跨期套利的知识体系
下面这张图是我自己总结的跨期套利知识框架。每次做新策略前,我都会对照着检查一遍,看看有没有遗漏。
这张图其实就三块:理论基础、策略类型、风控执行。三者缺一不可。我见过太多人只盯着策略类型,忽略了风控,最后亏得莫名其妙。
个人经验:刚开始做跨期套利时,我建议只做正向套利。因为正向套利的逻辑最清晰,价差回归的确定性最高。等跑顺了,再尝试反向和蝶式。别一上来就想吃全鱼,容易噎着。
好了,跨期套利的核心逻辑就这些。记住一句话:价差是表象,逻辑是本质。别被K线图牵着鼻子走,多想想背后的供需和资金博弈。
公众号:蓝海资料掘金营,微信deep3321