1. 跨期套利基础:定义、原理与核心逻辑

跨期套利,说白了就是利用同一个品种、不同月份合约之间的价差波动来赚钱。我刚开始接触这个策略时,总觉得它不如单边趋势来得刺激。但做了几年量化后,我越来越觉得——这才是真正能稳定盈利的玩法。

1.1 什么是跨期套利

跨期套利,也叫日历价差交易。它指的是:

  • 同时买入一个月份的期货合约
  • 同时卖出另一个月份的同一品种合约
  • 赚取的是两个合约之间的价差变化,而不是单边涨跌

举个例子。我买1手螺纹钢2401合约,同时卖1手螺纹钢2405合约。我不关心螺纹钢是涨是跌,我只关心1月和5月之间的价差是扩大还是缩小。

核心要点:跨期套利的盈利来源是价差,不是方向。你赚的是相对价格的变化,不是绝对价格的涨跌。

1.2 跨期套利的底层原理

为什么会存在跨期套利的机会?说白了,是因为市场有时候会「犯错」。

正常情况下,远月合约和近月合约之间应该有一个合理的价差。这个价差主要由三部分构成:

价差构成 说明 我的经验
持仓成本 仓储费、资金占用、保险费等 这个相对固定,好算
供需预期 市场对未来供需的判断 这个最难把握,容易出错
情绪溢价 短期资金博弈、恐慌或狂热 嗯,这里往往是套利机会的来源

当市场情绪过度时,价差就会偏离合理区间。这时候,套利者就可以进场,等它回归。

我的一个小技巧:别总想着抓极端行情。我更喜欢在价差偏离均值1.5个标准差时进场,胜率会高很多。

1.3 核心逻辑:价差的均值回归

跨期套利的底层逻辑,其实就是均值回归

你想想看,两个同一品种的合约,基本面是一样的。它们之间的价差,不可能无限扩大,也不可能无限缩小。最终,它会回到一个合理的区间。

我举个例子。假设豆粕的1月和5月合约,历史价差均值是50个点。现在价差拉到了120个点。这时候,我就可以:

  • 卖出价差(卖近买远)—— 赌价差缩小
  • 或者买入价差(买近卖远)—— 赌价差扩大

具体选哪个方向,要看价差是偏高还是偏低。

注意:均值回归不是100%会发生的。我曾经在2018年做过一次铜的跨期套利,价差偏离了3个标准差还没回来,差点爆仓。所以,一定要设止损。

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

根据我的经验,跨期套利可以分成三种模式:

  1. 正向套利(买近卖远)
    • 近月合约被低估,远月被高估
    • 赌价差扩大
    • 适合在价差偏低时做
  2. 反向套利(卖近买远)
    • 近月合约被高估,远月被低估
    • 赌价差缩小
    • 适合在价差偏高时做
  3. 蝶式套利(三个合约组合)
    • 同时做两个价差
    • 风险更小,但收益也低
    • 适合大资金稳健操作

我个人最常用的是正向和反向套利。蝶式套利虽然稳,但资金利用率太低,不太适合小资金。

1.5 核心逻辑流程图

下面这张图,是我自己总结的跨期套利核心逻辑。你看一遍,基本就懂了。

跨期套利核心逻辑流程图 获取近月与远月合约价格 实时行情 / 历史数据 计算价差 = 近月 - 远月 或使用价差比率 判断价差是否偏离合理区间 均值 ± n倍标准差 价差偏高 价差偏低 卖近买远 赌价差缩小 买近卖远 赌价差扩大 设置止盈止损,等待价差回归

1.6 一个简单的代码示例

下面是我写的一个跨期套利信号判断的简化版代码。你拿去改改就能用。

import numpy as np
import pandas as pd

def spread_signal(near_price, far_price, lookback=20):
    """
    跨期套利信号生成器
    :param near_price: 近月合约价格序列
    :param far_price: 远月合约价格序列
    :param lookback: 回看周期
    :return: 信号(1=买价差,-1=卖价差,0=观望)
    """
    # 计算价差
    spread = near_price - far_price
    
    # 计算均值和标准差
    mean = spread.rolling(lookback).mean()
    std = spread.rolling(lookback).std()
    
    # 标准化价差(Z-score)
    z_score = (spread - mean) / std
    
    # 生成信号
    signal = np.where(z_score > 2, -1, 0)  # 价差过高,卖价差
    signal = np.where(z_score < -2, 1, signal)  # 价差过低,买价差
    
    return signal

# 使用示例
# signal = spread_signal(near, far, lookback=30)
# print(f"当前信号: {signal[-1]}")

避坑指南:我曾经直接用这个代码跑实盘,结果发现信号太频繁了。后来我加了两个过滤条件:一是价差偏离必须持续至少2根K线,二是要结合成交量确认。效果好了很多。

1.7 跨期套利的优势与风险

优势很明显:

  • 风险低:对冲了方向性风险,只暴露价差风险
  • 收益稳:胜率高,回撤小
  • 容量大:适合大资金操作

但风险也不容忽视:

  • 价差不回归:市场可能长期非理性
  • 流动性风险:远月合约可能流动性不足
  • 交割风险:临近交割月,波动会变大

特别提醒:别以为跨期套利就稳赚不赔。我见过有人做跨期套利,因为没注意交割规则,最后被迫实物交割,亏了一大笔。一定要搞清楚交易所的交割规则。

好了,这一章就讲到这里。跨期套利的核心逻辑其实不复杂——就是找价差的偏离,赌它回归。下一章我会讲如何搭建一个完整的跨期套利系统,包括数据获取、信号生成、风控和回测。


专注资料整理