11. 跨期套利策略:同一品种不同月份合约的基差交易逻辑

跨期套利,说白了就是吃「时间差」的饭。

同一个品种,不同月份的合约,为什么会有价差?因为市场对未来的预期不一样。有人看多近月,有人看多远月,这种分歧就给了我们套利的机会。

我个人习惯把跨期套利分成两类:事件驱动型统计回归型。前者靠的是对特定事件的预判,后者靠的是概率和统计规律。今天咱们重点聊后者,因为它在实盘中更稳定、更可复制。

11.1 跨期价差的本质是什么?

先想一个问题:为什么远月合约和近月合约价格不一样?

原因其实就三个:

  • 持仓成本:仓储费、资金利息、保险费,这些都会体现在价差里
  • 供需预期:比如农产品,新季上市前近月贵,上市后远月便宜
  • 市场情绪:短期资金炒作,会把价差推到不合理的位置

我在项目中遇到过最典型的例子——螺纹钢。2017年那会儿,近月合约因为环保限产被炒上天,远月合约却纹丝不动。价差拉到历史极值,我当时就判断:这不可能持续。果然,两周后价差回归,我们吃了一口大肉。

核心逻辑:跨期价差最终会回归到「合理区间」。这个区间由持仓成本和基本面共同决定。我们做的就是:在价差偏离时入场,在回归时离场。

11.2 跨期套利的三种常见模式

根据我的经验,跨期套利可以分成以下三种。每种模式对应的交易逻辑和风控手段都不一样。

模式 交易逻辑 典型品种 持仓周期
正向套利 买近月、卖远月,赌价差缩小 股指期货、国债期货 1-5天
反向套利 卖近月、买远月,赌价差扩大 农产品、能化品种 3-10天
蝶式套利 同时做多和做空三个不同月份 有色金属、原油 5-15天

你想想看,正向套利其实最符合直觉——近月贵、远月便宜,那就买便宜的卖贵的呗。但现实往往没那么简单。我记得有一次做豆粕的正向套利,价差明明已经到历史低位了,结果因为港口到货延迟,近月继续暴涨,差点把我打爆仓。嗯,这里要注意:价差回归不是必然的,只是大概率事件

11.3 如何构建跨期套利模型?

模型构建其实不复杂,但细节决定成败。我一般分四步走:

  1. 数据清洗:把主力合约切换、交割日跳空这些坑填平
  2. 价差计算:用近月价格减去远月价格,或者用对数价差
  3. 统计检验:做ADF检验,确认价差序列是否平稳
  4. 信号生成:设定上下阈值,触发就开仓

下面是我常用的一个简化版代码。注意,这只是演示逻辑,实盘还需要加很多风控条件。

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