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

1.1 什么是跨期套利?

跨期套利,说白了就是利用同一品种、不同月份合约之间的价差来赚钱。

我刚开始做量化交易时,总觉得这玩意儿挺简单——不就是买近卖远或者买远卖近嘛。但真正上手后才发现,这里面的门道比想象中深得多。

举个例子:螺纹钢期货,有RB2301和RB2305两个合约。它们都是螺纹钢,但交割月份不同。正常情况下,远月合约比近月合约贵一点,因为要算上持仓成本。但有时候,这个价差会变得离谱——要么太大,要么太小,甚至变成负数。这时候,套利机会就来了。

核心定义:跨期套利是指在同一市场、同一品种的不同到期月份合约之间,建立方向相反的头寸,利用价差的异常波动来获取低风险收益的交易策略。

1.2 价差从哪里来?

你可能会问:为什么不同月份的合约价格会不一样?

嗯,这里有几个关键因素:

  • 持仓成本:仓储费、资金利息、保险费等。远月合约天然要比近月贵。
  • 供需预期:比如农产品,收获季的合约往往便宜,青黄不接时贵。
  • 市场情绪:短期资金炒作,会把某个合约推得过高或过低。
  • 交割规则:不同交易所对交割品的标准、升贴水规定不同。

我记得有一次做豆粕套利,M2209和M2301的价差突然从80块飙到200块。我一看,原来是市场担心9月大豆到港量不足,近月合约被硬生生拉起来了。这种情绪驱动的价差,往往不可持续。

1.3 核心逻辑:均值回归

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

价差不会永远偏离。它就像一根被拉长的橡皮筋,迟早会弹回去。我们要做的,就是在它拉得最远的时候出手。

我的经验:判断价差是否"拉得太远",不能光靠肉眼。我一般会用Z-score或者布林带做量化判断。当Z-score超过2或者低于-2时,才考虑入场。

举个例子:

# 计算价差的Z-score
import numpy as np

def z_score(spread, window=20):
    mean = np.mean(spread[-window:])
    std = np.std(spread[-window:])
    return (spread[-1] - mean) / std

# 当z_score > 2 或 < -2 时触发信号
if z_score(current_spread) > 2:
    print("价差过高,考虑做空价差")
elif z_score(current_spread) < -2:
    print("价差过低,考虑做多价差")

1.4 两种基本策略

跨期套利分两种:

策略类型 操作方式 适用场景
正向套利 买入近月,卖出远月 价差过大,预期回归
反向套利 卖出近月,买入远月 价差过小或倒挂,预期回归

正向套利,说白了就是赌价差会缩小。反向套利,则是赌价差会扩大。

我个人的习惯是:优先做正向套利。为什么?因为正向套利有现货支撑,近月合约临近交割时,价格会向现货靠拢,风险更可控。反向套利一旦遇到逼仓,那亏损可不是闹着玩的。

避坑指南:我曾经在PTA上做过一次反向套利,价差已经倒挂-100块了,我觉得肯定要回归。结果呢?现货紧缺,近月合约被多头硬拉到交割,价差扩大到-300块。那次教训让我明白:不要跟趋势对着干,尤其是近月合约有逼仓风险时。

1.5 流动性:套利的命门

做跨期套利,最怕什么?

不是方向判断错,而是流动性不足

你想想看,你同时开了两个方向的单子,结果远月合约半天成交不了一手,价差滑点大得吓人。等你终于平仓了,利润全被滑点吃掉了。

所以,我每次做套利前,都会先看两个合约的流动性:

  • 近月合约日均成交量 > 10万手
  • 远月合约日均成交量 > 5万手
  • 买卖价差(spread)不超过1个最小变动价位

如果流动性不达标,再好的机会我也不碰。这是用真金白银换来的教训。

1.6 知识体系总览

下面这张图,是我自己梳理的跨期套利知识框架。你可以把它当作一张地图,后面每个章节都会对应到其中的一个节点。

跨期套利 定义与原理 核心逻辑:均值回归 策略类型 价差来源 持仓成本 Z-score / 布林带 正向套利 反向套利 流动性分析(核心命门) 成交量 买卖价差 滑点控制 图:跨期套利知识体系框架

1.7 小结

跨期套利,本质上是在赌价差会回归。但赌也要讲方法:

  • 先搞清楚价差为什么存在
  • 再用量化工具判断是否偏离
  • 最后——也是最重要的——确认流动性没问题

嗯,这一章就到这里。记住一句话:套利不是无风险,而是风险可控。后面我们会一步步深入,把每个环节都拆开揉碎了讲清楚。

专注资料整理