📘 本章重点
- 理解跨品种套利的核心逻辑:利用两个不同但相关品种之间的价差或比价均值回归获利
- 掌握跨品种套利的两种基本方向——做多价差(买弱卖强)与做空价差(卖强买弱)
- 学会识别适合跨品种套利的品种组合——替代关系、上下游关系、共同成本驱动
- 了解价差与比价两种分析框架的适用场景与计算方法
- 认识跨品种套利的特有风险:相关性破裂、流动性不匹配、合约乘数差异
⚠️ 本章难点
- 理解“价差”而非“价格”是跨品种套利的交易标的——策略不赌单边方向,只赌强弱关系回归
- 区分“价差”与“比价”两种分析框架的适用场景与计算方法
- 掌握等价值配比的计算方法——不同品种的合约乘数和价格不同,需要换算为等市值头寸
- 理解跨品种套利与跨期套利(第二.07)的本质区别——前者赌“两个品种的强弱关系”,后者赌“同一个品种的远近价差”
- 认识相关性不等于可套利——两个品种走势相似不代表价差会回归,必须有产业逻辑支撑
⏱️ 预估学习时间
- 45~60分钟
一、策略简述与一句话定性
一句话定性:跨品种套利策略是一种基于两个不同但相关品种之间价差或比价均值回归的统计套利方法——同时买入一个品种的期货合约、卖出另一个相关品种的期货合约,在价差偏离历史均值时开仓,待价差回归时平仓获利。
跨品种套利(Cross-Commodity Arbitrage / Inter-Commodity Spread)是期货市场中仅次于跨期套利的第二大套利策略类型。它交易的不是价格本身,而是两个不同但相关品种之间的价差或比价。
黄金和白银的“兑换比例”
黄金和白银都是贵金属,它们之间有一个天然的“比价关系”——历史上黄金价格大约是白银价格的60-80倍。也就是说,1克黄金 ≈ 60-80克白银。这个比价就是跨品种套利的交易标的。
你不需要判断“黄金会涨还是会跌”,也不需要判断“白银会涨还是会跌”,你只需要判断当前的比价是否偏离了正常范围。如果比价到了90(黄金太贵、白银太便宜),你就可以做空比价——卖出黄金、买入白银,等待比价回归到60-80的正常区间。至于是黄金跌还是白银涨,你不需要知道。
两种货币的汇率
想象你在关注人民币和美元之间的汇率。你不需要判断“人民币会不会升值”或“美元会不会贬值”,你只需要判断当前的汇率是否偏离了正常范围。如果1美元兑7.3元人民币,而历史上长期在6.8-7.0之间波动,你就可以下注“汇率会回归”——至于人民币是升值还是美元是贬值,你不需要知道,也不需要关心。
跨品种套利也是如此。你不需要判断螺纹钢会涨还是会跌,你只需要判断螺纹钢和热卷之间的价差是否偏离了正常范围。如果价差被拉得过大,你下注“价差会缩小”;如果价差被压得过小,你下注“价差会扩大”。
你赌的是两个品种的“相对强弱关系”会回归正常,而不是任何一个品种的“绝对方向”。
价差与比价:跨品种套利的两种分析框架
跨品种套利有两种基本的分析框架——价差和比价。选择哪种框架,取决于两个品种的价格量级。
| 维度 | 价差(Spread) | 比价(Ratio) |
|---|---|---|
| 适用场景 | 两个品种价格量级相近 | 两个品种价格量级差异大 |
| 优点 | 直观,易于理解 | 消除了量纲差异,适合长期比较 |
| 缺点 | 价格水平变化时价差区间会漂移 | 计算稍复杂 |
| 典型应用 | 螺纹钢 vs 热卷(价格相近) | 黄金 vs 白银(价格量级差异大) |
实操经验:如果两个品种的价格比值在1:2到2:1之间,价差和比价都可以使用;如果比值超过1:5(如黄金和白银),建议优先使用比价。
黄金和白银的比价是跨品种套利中最经典的比价应用。黄金价格约500元/克,白银价格约6-7元/克,两者的价格量级相差约70-80倍——如果使用价差(500-6=494),数值完全被黄金价格主导,无法真实反映两个品种的相对强弱。使用比价(500÷6≈80),则能清晰反映出“1克黄金相当于80克白银”的兑换关系。
注:以上价格为示例,实际价格会随时间变化,请以实时行情为准。
跨期 vs 跨品种:一个快速对比
| 维度 | 跨期套利 | 跨品种套利 |
|---|---|---|
| 交易标的 | 同一品种、不同月份 | 不同品种、相同月份 |
| 价差驱动力 | 持有成本理论(同品种) | 产业逻辑(替代/上下游/共同成本) |
| 价差稳定性 | 最强(理论必然) | 中等(产业逻辑支撑) |
| 价差波动范围 | 窄 | 宽 |
| 单笔利润空间 | 薄 | 中等 |
| 回归确定性 | 高(同品种必然收敛) | 中(依赖产业逻辑) |
| 主要风险 | 展期成本、流动性 | 相关性破裂、产业逻辑变化 |
一句话区分:跨期套利赌的是“远近价差”会收敛,跨品种套利赌的是“强弱关系”会回归。
老陈点评:
跨品种套利与跨期套利(第二.07)在数学结构上高度相似——两者都是对价差的均值回归交易。但两者的价差驱动力完全不同:跨期套利的价差由持有成本理论驱动(同一品种,基本面完全相同),跨品种套利的价差由产业逻辑驱动(两个相关品种,基本面有差异但存在关联)。跨品种套利的价差回归逻辑比跨期套利更“软”——因为它依赖的是两个不同品种之间的产业关系,而非同一个品种的必然收敛。 这也意味着跨品种套利的价差波动范围更大、单笔利润空间更宽,但价差“不回归”的风险也更高。
老王补充:
跨品种套利是我在期货市场上最喜欢的一类策略——它不像单边交易那样赌方向,又比跨期套利有更大的价差空间。螺纹钢和热卷、豆粕和菜粕、黄金和白银——这些经典组合的价差波动范围通常比跨期价差大得多,利润空间也更可观。但别高兴太早——价差空间大意味着风险也大。 两个品种的基本面不可能完全同步,一旦产业逻辑发生变化,价差可能永远不回来。跨品种套利不是无风险套利,是“有产业逻辑支撑的相对价值交易”。
二、策略的使用范围与条件
| 维度 | 适用范围与条件 | 说明 |
|---|---|---|
| 适用市场 | 期货市场(商品期货、股指期货、国债期货等) | 需要有多个相关品种同时交易 |
| 品种要求 | 两个品种之间有明确的产业逻辑关联,且流动性都好 | 流动性差的品种存在滑点和无法平仓的风险 |
| 交易机制 | 双向交易(可同时做多和做空) | 期货市场的天然优势 |
| 适用周期 | 日线、小时线 | 价差回归通常需要数天至数周 |
| 资金门槛 | 中等(需同时占用两份保证金) | 双边持仓保证金占用较高 |
| 不适合的市场状态 | 产业逻辑发生根本变化、极端单边行情 | 价差可能永久性偏离 |
适用品种举例:
- 替代关系:豆粕 vs 菜粕(同属饲料蛋白来源)、玉米 vs 淀粉(产业链上下游)
- 上下游关系:原油 vs 燃料油/沥青(炼化产业链)、螺纹钢 vs 热卷(同属钢材,不同下游)
- 共同成本驱动:黄金 vs 白银(同属贵金属,比价均值回归是经典案例)、螺纹钢 vs 原木(华泰期货研究发现两者存在协整关系)
- 股指期货:IF(沪深300)vs IC(中证500)——大小盘风格轮动
不适用品种:
- 没有产业逻辑关联的品种(纯数据挖掘的配对,价差回归没有保障)
- 流动性极差的非主力合约(无法有效平仓)
- 临近交割的合约(流动性急剧下降)
失效案例:2018年10月前后,受中美贸易战冲击叠加螺纹钢新国标实施带来的成本上升,卷螺差一度创下-400的历史最低水平。此前基于历史统计建立的跨品种套利模型在贸易政策冲击下全面失效——价差偏离远超历史阈值,且长时间未能回归。该极端值持续时间较短(约2-3周后逐步恢复),但在偏离期间对套利者造成了显著亏损。在政策市中,历史价差规律容易被打破,跨品种套利的产业逻辑可能被外力扭曲。
三、因子拆解与原理
3.1 价差——跨品种套利的交易标的
跨品种套利不交易价格,交易的是两个品种之间的价差。
定义品种A的价格为 P_A,品种B的价格为 P_B,价差 Spread 为:
Spread = P_A - P_B
或者使用比价(Ratio):
Ratio = P_A / P_B
价差 vs 比价的选择:
| 维度 | 价差(Spread) | 比价(Ratio) |
|---|---|---|
| 适用场景 | 两个品种价格量级相近 | 两个品种价格量级差异大 |
| 优点 | 直观,易于理解 | 消除了量纲差异,适合长期比较 |
| 缺点 | 价格水平变化时价差区间会漂移 | 计算稍复杂 |
| 典型应用 | 螺纹钢 vs 热卷(价格相近) | 黄金 vs 白银(价格量级差异大) |
实操提示:当两个品种的绝对价格水平差异较大时,使用价差会导致数值完全被高价品种主导,此时应使用比价。当两个品种价格水平相近时,可以使用价差,也可以使用比价,两者都可以。
以黄金和白银为例:如果黄金价格480元/克,白银价格6元/克,比价 = 480 ÷ 6 = 80,即“1克黄金 = 80克白银”。历史上金银比价的均值大约在60-80之间。当比价偏离这个范围时,就产生了套利机会。
价差回归的操作方向:
| 价差/比价状态 | 判断 | 操作 | 预期 |
|---|---|---|---|
| 比价过低(如金银比价<60) | 品种A相对品种B被低估 | 做多比价:买入A,卖出B | 比价将扩大 |
| 比价过高(如金银比价>80) | 品种A相对品种B被高估 | 做空比价:卖出A,买入B | 比价将缩小 |
3.2 价差的驱动因素——策略的逻辑基础
跨品种套利必须回答一个问题:这两个品种为什么应该放在一起看?
驱动类型一:替代关系
两个品种在用途上可以相互替代。豆粕和菜粕都可用于饲料配方,当价差变化到一定程度时,下游企业会调整配方比例——豆粕太贵就用更多菜粕,菜粕太贵就用更多豆粕。这种“替代弹性”为价差回归提供了产业层面的驱动力。
一个具体的例子:豆粕和菜粕都是饲料蛋白来源。如果豆粕比菜粕贵了太多,饲料厂会减少豆粕用量、增加菜粕用量,从而压低豆粕价格、抬升菜粕价格,最终价差回归。这个回归过程有真实的产业行为支撑。
驱动类型二:上下游关系
两个品种在产业链上存在上下游关系。原油和燃料油/沥青就是典型的上下游关系——原油价格变动会传导至下游产品。当上下游价差偏离正常范围时,产业链的利润分配会促使价差回归。
驱动类型三:共同宏观驱动
两个品种虽然用途不同,但有共享相同的宏观驱动因素。黄金和白银同属贵金属,都受到美元指数、实际利率、地缘政治等共同因素影响,因此价格走势具有长期相关性,比价存在均值回归特征。
- 宏观层面:黄金和白银都对美元指数、实际利率敏感,长期走势方向一致
- 产业层面:当金银比价过高时(黄金太贵、白银太便宜),工业用银的需求会增加(因为白银变便宜了),支撑银价,拉低比价;反之亦然
金银比价的均值回归背后有两个层面的驱动力:
驱动类型四:需求分化
螺纹钢和热卷虽然都属于钢材,但对应的需求并不一样。螺纹钢更多跟建筑施工、地产和基建相关,热卷更多受制造业、汽车、家电和出口链条影响。当两边需求强弱出现分化时,价差就容易被拉开。这种分化既有短期情绪因素,也有中期基本面变化——交易者需要判断哪种力量在主导。
3.3 价差的统计规律——策略的量化基础
跨品种套利策略既可以从统计规律出发进行量化分析,也可以从商品的基本面出发进行主观分析。量化分析根据历史数据总结得出品种间价差的经验区间、季节效应等统计规律,一般以捕捉价差回归的机会为主。
金银比价的统计规律:
| 指标 | 数据 |
|---|---|
| 历史均值 | 约60-80(即1克黄金 ≈ 60-80克白银) |
| 正常波动区间 | 50-90 |
| 极端低位 | 约40(2006年、2016年) |
| 极端高位 | 约120(2020年3月疫情初期,避险情绪极端推升金价) |
卷螺差(螺纹钢 vs 热卷)的统计规律:
| 指标 | 数据 |
|---|---|
| 现货价差波动范围 | -700 至 660 |
| 现货价差主要分布区间 | [-150, 400],占比接近80% |
| 现货价差周期 | 一年存在两个周期,扩张和收缩持续时间约2-4个月 |
| 期货价差波动范围 | -390 至 523 |
| 期货价差主要分布区间 | [-100, 300],占比超过80% |
| 做多价差的较好时机 | 卷螺差低于-50(出现概率<10%) |
| 做空价差的较好时机 | 卷螺差高于300(出现概率5%-10%) |
注:以上数据基于2018-2023年期间螺纹钢与热卷主力合约的统计,不同时间段的结果可能存在显著差异。卷螺差的历史均值会随市场环境变化而漂移,建议使用滚动窗口更新统计参数。
价差/比价回归的操作方向:
| 价差/比价状态 | 判断 | 操作 | 预期 |
|---|---|---|---|
| 价差/比价过低(被压缩) | 品种A相对品种B被低估 | 做多价差:买入A,卖出B | 价差将扩大 |
| 价差/比价过高(被拉大) | 品种A相对品种B被高估 | 做空价差:卖出A,买入B | 价差将缩小 |
老陈点评:
从统计学的角度看,跨品种套利的价差回归依赖于两个品种之间的产业逻辑支撑。与配对交易不同,跨品种套利不需要严格的协整检验作为入场条件——因为产业逻辑本身提供了价差回归的动力。但产业逻辑不是永恒的——当产业逻辑发生变化时,价差关系可能永久性改变。跨品种套利的核心能力不是“算价差”,而是“理解产业”。 你需要持续监控产业逻辑是否仍然成立,而不是依赖一次性的统计检验。
季节性规律:部分跨品种价差具有明显的季节性特征。例如,豆粕-菜粕价差在每年水产养殖旺季(4-10月)往往呈现不同的波动模式,因为菜粕主要用于水产饲料,而豆粕用于猪禽饲料。在回测和实盘交易中,可以考虑将季节性因素纳入价差均值的计算——同一品种在不同季节的价差中枢可能不同,使用全年统一的均值会引入偏差。
3.4 跨品种套利 vs 跨期套利 vs 配对交易
| 维度 | 跨期套利(第二.07) | 跨品种套利(第二.08) | 配对交易(第二.02) |
|---|---|---|---|
| 交易标的 | 同一品种、不同到期月份 | 不同品种、相同到期月份 | 两只同行业股票 |
| 价差驱动力 | 持有成本理论(同品种) | 产业逻辑(替代/上下游/共同成本) | 经济逻辑(同行业) |
| 价差稳定性 | 最强(理论必然) | 中等(产业逻辑支撑) | 较弱(统计协整) |
| 价差波动范围 | 窄 | 宽 | 宽 |
| 单笔利润空间 | 薄 | 中等 | 中等 |
| 回归确定性 | 高(同品种必然收敛) | 中(依赖产业逻辑) | 较低(依赖统计协整) |
| 做空工具 | 期货天然支持 | 期货天然支持 | A股融券受限 |
| 典型持仓周期 | 数天至数周 | 数天至数周 | 数天至数周 |
| 主要风险 | 展期成本、流动性 | 相关性破裂、产业逻辑变化 | 协整破裂、融券成本 |
| 资金门槛 | 低 | 中等 | 高(A股融券受限) |
老陈点评:
三者形成了一个多维度的权衡光谱:跨期套利确定性最高但利润最薄(同品种必然收敛),跨品种套利居中(产业逻辑支撑),配对交易确定性最低但潜在收益空间最大(统计协整)。如果再加上资金门槛:跨期套利门槛最低,跨品种套利中等,配对交易在A股受融券限制、门槛最高。确定性越高,门槛越低——这是选择套利策略时值得权衡的两个核心维度。
选择哪种策略,取决于你的风险偏好和资金规模。 如果你追求稳定、低波动,跨期套利更适合;如果你愿意承担更高风险换取更高收益,跨品种套利和配对交易更有吸引力。
四、仓位、买卖点与风险管理
4.1 入场信号(开仓规则)
跨品种套利的入场信号基于价差偏离均值的程度,通常使用Z-Score方法:
Z-Score = (当前价差 - 历史均值) / 历史标准差
开仓规则:
| 信号类型 | 触发条件 | 操作 | 预期 |
|---|---|---|---|
| 做多价差 | Z-Score < -阈值(如-2.0) | 买入品种A,卖出品种B | 价差将扩大 |
| 做空价差 | Z-Score > +阈值(如+2.0) | 卖出品种A,买入品种B | 价差将缩小 |
关于“做多价差=买弱卖强”的解释:做多价差 = 买入被低估的品种 + 卖出被高估的品种,即“买弱卖强”——这里的“弱”指相对便宜的品种(价差过低时,品种A相对品种B被低估),“强”指相对贵的品种(价差过低时,品种B相对品种A被高估)。
阈值的设定:
- 经典值:±2.0倍标准差(约95%置信区间)
- 激进值:±1.5(信号多,但假突破也多)
- 保守值:±2.5(信号少,但每笔胜率更高)
进阶入场过滤:
| 过滤条件 | 作用 | 说明 |
|---|---|---|
| 协整检验过滤 | 确保价差会回归 | 定期检验两个品种是否仍然协整 |
| 价差趋势过滤 | 避免逆势交易 | 价差有趋势时(连续多日同向变动),暂停开仓 |
| 波动率过滤 | 避免高波动中开仓 | 价差波动率异常放大时,暂停交易 |
| 成交量过滤 | 确保流动性 | 两个品种的成交量均大于阈值时才开仓 |
| 产业逻辑确认 | 避免纯数据挖掘 | 开仓前确认价差偏离有产业逻辑支撑 |
4.2 平仓信号(出场规则)
| 平仓方式 | 触发条件 | 说明 |
|---|---|---|
| 回归平仓 | Z-Score回归至0附近(如±0.5) | 最常用,与入场逻辑对称 |
| 分批平仓 | Z-Score回归至±1.0时平一半,至0时平另一半 | 锁定部分利润 |
| 时间止损 | 持仓超过N个交易日仍未回归 | 防止资金长期被占用 |
| 价差突破止损 | Z-Score超过历史最大值(如3.5) | 价差可能出现了结构性变化 |
| 产业逻辑止损 | 产业关系发生根本变化 | 立即平仓,认赔离场 |
4.3 仓位管理——等价值配比
跨品种套利的仓位管理需要解决一个关键问题:两个品种的合约乘数和价格不同,如何确定各自的手数?
等价值配比法:
品种A合约价值 = 品种A价格 × 品种A合约乘数 × 手数
品种B合约价值 = 品种B价格 × 品种B合约乘数 × 手数
等价值配比要求:品种A合约价值 ≈ 品种B合约价值
计算示例一:黄金与白银的等价值配比
假设黄金价格480元/克,合约乘数1000克/手;白银价格6元/克,合约乘数15000克/手。
- 1手黄金价值 = 480 × 1000 = 480,000元
- 1手白银价值 = 6 × 15000 = 90,000元
要等价值配比,做多1手黄金,需要做空约5.3手白银(480,000 ÷ 90,000 ≈ 5.33)。
计算示例二:螺纹钢与热卷的等价值配比
假设螺纹钢价格3500元/吨,合约乘数10吨/手;热卷价格3600元/吨,合约乘数10吨/手。
- 1手螺纹钢价值 = 3500 × 10 = 35,000元
- 1手热卷价值 = 3600 × 10 = 36,000元
两者价值接近(相差约3%),可以直接1:1配比。
老王补充:
等价值配比是跨品种套利中最容易被忽略的细节。很多人直接按1:1手数配比,结果两个腿的价值差了几倍,价差的变化被完全扭曲了。在做跨品种套利之前,第一件事就是算清楚两个品种的合约价值,然后按等价值配比确定手数。 否则,你的“套利”实际上是在赌单边方向。
如果配比错误:假设你按1:1手数做多螺纹钢、做空热卷,而两者的合约价值差异达到10%,那么你的“套利”组合实际上有10%的单边敞口——当螺纹钢和热卷同涨同跌时,你的组合会有10%的净盈亏。你赌的不是价差回归,而是方向。
仓位规模控制:
- 单笔套利占用:总资金的10%-20%
- 总杠杆控制:建议控制在2-3倍以内
- 同时运行组合数:3-5组(分散品种风险)
4.4 跨品种套利的特有风险
风险一:相关性破裂
两个品种的价差回归依赖于产业逻辑支撑。当产业逻辑发生根本变化时(如替代品出现、政策只影响一边、下游需求结构改变),价差可能永久性偏离,不再回归。
如何防范:
- 使用滚动窗口计算均值(而非全历史均值),及时更新价差的“正常范围”
- 设置产业逻辑止损——当产业关系发生根本变化时立即平仓
- 不依赖单一组合,同时运行3-5组不同逻辑的套利组合
风险二:流动性不匹配
两个品种的流动性可能差异很大——一个品种交易活跃,另一个品种交易清淡。流动性不足的品种可能导致无法按预期价格开仓或平仓。
如何防范:
- 只在主力合约之间进行套利
- 避开交易量过小的非主力合约
- 开仓前检查两个品种的成交量是否都达标
风险三:合约乘数不匹配
不同品种的合约乘数不同,需要仔细计算等价值配比。如果配比不当,套利组合实际上是在赌单边方向。
如何防范:
- 严格按照等价值配比计算手数
- 考虑合约乘数差异对价差的影响
风险四:换月风险
跨品种套利通常使用相同月份的合约。当主力合约换月时,两个品种的换月时间可能不同步,导致价差出现非交易性跳变。
如何防范:
- 在换月前提前平仓,避免跨月价差跳变
- 或同时将两个头寸展期到新合约,保持配比不变
风险五:极端行情中的两腿不同步成交
在极端行情、涨跌停、盘口突然抽走、合约流动性不足时,两条腿可能无法同时成交。一条腿成交了,另一条腿没成交,套利组合就变成了单边持仓。
如何防范:
- 使用限价单而非市价单
- 设置合理的滑点容忍度
- 在极端行情中暂停交易
风险六:滑点成本的双倍效应
跨品种套利涉及两条腿同时成交,每一条腿都可能产生滑点。如果每条腿的滑点是0.05%,两条腿合计就是0.1%——这可能会吃掉很大一部分价差利润。在回测中建议加入0.05%-0.1%的双边滑点成本。
滑点管理的具体操作:
- 在开仓时,使用限价单而非市价单,在两个品种的关键价位上分别挂单
- 如果一条腿成交了、另一条腿没成交,不要急于追单——等待价格回到预设区间再尝试,或者取消未成交的订单,避免“一条腿走路”的风险
- 在回测中计入合理的滑点成本(如每个品种0.5-1个最小变动价位)
- 选择流动性好的品种组合,降低滑点对策略的侵蚀
风险七:交易所规则差异
不同品种可能在不同交易所上市(如螺纹钢在上期所、豆粕在大商所),交易时间(如是否包含夜盘)、保证金比例、涨跌停幅度可能存在差异。在执行跨品种套利前,需要确认两个品种的交易规则是否兼容。
五、策略的来历、设计者与趣闻
跨品种套利的理论基础可以追溯到商品期货市场的早期实践。早在19世纪,芝加哥的谷物交易商就已经注意到了不同谷物之间的价格关系——当小麦和玉米的价差偏离正常范围时,套利者会通过买卖两个品种来获取利润。
现代跨品种套利的理论框架建立在协整理论(Engle和Granger,1987)和统计套利(Morgan Stanley量化团队,1980年代)的基础之上。协整理论为跨品种套利提供了严格的统计检验方法——不是“看着像”就能套利,而是需要经过协整检验确认两个品种存在长期均衡关系。
在国内市场,跨品种套利随着商品期货市场的扩容而逐渐普及。螺纹钢与热卷(卷螺套利)、豆粕与菜粕、黄金与白银等经典组合,成为量化私募和CTA基金的标准配置。
金银比价的历史故事:金银比价是一个非常古老的交易标的。在19世纪的金本位时代,黄金和白银的官方比价长期固定在15:1左右(即1盎司黄金兑换15盎司白银)。随着银本位被废除和金银市场化的推进,比价逐渐扩大到20-30倍。进入20世纪后,两次世界大战、布雷顿森林体系的建立和崩溃、1970年代的高通胀,都曾推动金银比价大幅波动。2020年3月疫情初期,金银比价一度飙升至120以上的历史极端水平,随后在一年内回落至60-70——这是金银比价均值回归最生动的案例之一。
趣闻:2025年,华泰期货发布了一份创新跨品种套利研究报告,发现了一个意想不到的组合——原木与螺纹钢。研究发现,螺纹钢与原木的对数价格存在协整关系,价差在1%显著性水平下平稳。基于这一发现构建的统计套利策略,在样本期内取得了年化收益15.93%(样本内回测)、夏普比率2.85、最大回撤仅-1.84%、开仓胜率60.56%的惊人表现。
这个案例说明了跨品种套利的一个重要原则:不要局限于“显而易见的”组合。螺纹钢和原木看似毫不相关,但两者都与建筑业密切相关——螺纹钢是建筑的结构材料,原木是建筑的辅助材料(模板、脚手架等)。当研究者跳出“同行业”的思维定式,从“产业链”的更宏观视角去寻找关联时,往往能发现意想不到的套利机会。
流动性警示:原木期货的日均成交量远低于螺纹钢。在回测中能完美成交的价差,在实盘中可能因为原木的流动性不足而无法以理想价格成交。在考虑“创新组合”之前,先确认两个品种的流动性是否匹配。
老陈点评:
原木-螺纹钢的案例说明了一个重要的方法论:跨品种套利的品种选择,既需要经济逻辑的支撑,也需要统计检验的验证。 经济逻辑告诉你“为什么应该相关”,统计检验告诉你“是否真的相关”。两者缺一不可——只有经济逻辑没有统计验证,可能是故事;只有统计验证没有经济逻辑,可能是数据挖掘。真正的跨品种套利,是“好故事”和“好数据”的结合。
老王补充:
我见过太多人一听说“原木-螺纹钢年化15.93%、夏普2.85”就兴奋,觉得找到了印钞机。但冷静想想:这么漂亮的回测结果(样本内),为什么别人没有大规模使用? 因为实盘和回测之间隔着滑点、流动性、交易成本这三座大山。原木期货的流动性远不如螺纹钢,你在回测里能完美成交的价差,在实盘里可能滑点就把利润吃掉了。回测漂亮不等于实盘赚钱——先用小资金跑半年再说。
六、Python回测示例
以下代码演示跨品种套利策略在螺纹钢与热卷上的回测。采用价差均值回归方法,Z-Score阈值±2.0开仓,回归均值平仓。
import pandas as pd
import numpy as np
import yfinance as yf
from datetime import datetime, timedelta
# 注意:
# 1. 本代码为跨品种套利策略框架,需要获取两个不同品种的价格数据
# 2. 期货数据建议使用聚宽、天勤(TqSdk)或万得(Wind)获取
# 3. 以下代码展示策略逻辑,使用模拟数据演示
# 4. 等价值配比:需要根据两个品种的合约乘数和价格计算手数配比
# 5. 配比计算使用前一日收盘价,避免未来函数(look-ahead bias)
def cross_commodity_spread_strategy(
price_a, # 品种A价格序列
price_b, # 品种B价格序列
lookback_days=60, # 计算均值和标准差的历史窗口
entry_zscore=2.0, # 开仓阈值
exit_zscore=0.5, # 平仓阈值
stop_loss_zscore=3.5, # 止损阈值
contract_multiplier_a=10, # 品种A合约乘数(螺纹钢:10吨/手)
contract_multiplier_b=10, # 品种B合约乘数(热卷:10吨/手)
cost_rate=0.0002 # 单次交易成本(含手续费+滑点,开仓和平仓各扣一次)
):
"""
跨品种套利策略(价差均值回归)
参数:
price_a: 品种A价格序列
price_b: 品种B价格序列
lookback_days: 计算均值和标准差的历史窗口
entry_zscore: 开仓阈值
exit_zscore: 平仓阈值
stop_loss_zscore: 止损阈值
contract_multiplier_a: 品种A合约乘数
contract_multiplier_b: 品种B合约乘数
cost_rate: 单次交易成本(开仓扣一次、平仓扣一次)
返回:添加了持仓和净值的DataFrame
"""
# 1. 合并数据
df = pd.DataFrame({
'price_a': price_a,
'price_b': price_b
}).dropna()
# 2. 计算价差(品种A - 品种B)
df['spread'] = df['price_a'] - df['price_b']
# 3. 滚动计算均值和标准差
df['spread_mean'] = df['spread'].rolling(lookback_days).mean()
df['spread_std'] = df['spread'].rolling(lookback_days).std()
df['zscore'] = (df['spread'] - df['spread_mean']) / df['spread_std']
# 4. 计算等价值配比(手数配比)
# 注意:使用前一日收盘价计算配比,避免未来函数
# 在实盘中,应使用开仓前已知的价格(前一日收盘价或当日开盘价)
ratio_b_series = pd.Series(index=df.index, dtype=float)
for i in range(1, len(df)):
prev_a = df['price_a'].iloc[i-1]
prev_b = df['price_b'].iloc[i-1]
value_a_per_lot = prev_a * contract_multiplier_a
value_b_per_lot = prev_b * contract_multiplier_b
if value_b_per_lot > 0:
ratio_b_series.iloc[i] = value_a_per_lot / value_b_per_lot
else:
ratio_b_series.iloc[i] = 1.0
ratio_b_series = ratio_b_series.fillna(1.0)
# 5. 生成交易信号
df['signal'] = 0 # 0=空仓, 1=做多价差(买A卖B), -1=做空价差(卖A买B)
df['position_a'] = 0
df['position_b'] = 0
position = 0
trade_count = 0
for i in range(lookback_days, len(df)):
zscore = df['zscore'].iloc[i]
ratio_b = ratio_b_series.iloc[i]
# 跳过NaN值
if pd.isna(zscore):
continue
if position == 0:
# 开仓信号
if zscore < -entry_zscore:
# 做多价差:价差过低,买入A,卖出B
position = 1
trade_count += 1
df.loc[df.index[i], 'position_a'] = 1
df.loc[df.index[i], 'position_b'] = -ratio_b
elif zscore > entry_zscore:
# 做空价差:价差过高,卖出A,买入B
position = -1
trade_count += 1
df.loc[df.index[i], 'position_a'] = -1
df.loc[df.index[i], 'position_b'] = ratio_b
else:
# 平仓信号
if abs(zscore) < exit_zscore:
position = 0
trade_count += 1 # 平仓也算一笔交易
df.loc[df.index[i], 'position_a'] = 0
df.loc[df.index[i], 'position_b'] = 0
elif abs(zscore) > stop_loss_zscore:
position = 0
trade_count += 1
df.loc[df.index[i], 'position_a'] = 0
df.loc[df.index[i], 'position_b'] = 0
df.loc[df.index[i], 'signal'] = position
# 6. 计算每日收益率(等价值配比后的组合收益)
df['daily_return'] = 0.0
for i in range(1, len(df)):
pos_a = df['position_a'].iloc[i-1]
pos_b = df['position_b'].iloc[i-1]
if pos_a == 0 and pos_b == 0:
daily_ret = 0
else:
# 计算两个品种的收益率
ret_a = (df['price_a'].iloc[i] - df['price_a'].iloc[i-1]) / df['price_a'].iloc[i-1]
ret_b = (df['price_b'].iloc[i] - df['price_b'].iloc[i-1]) / df['price_b'].iloc[i-1]
# 组合收益率 = 权重_a × 收益率_a + 权重_b × 收益率_b
# 权重按等价值配比计算
ratio_b = ratio_b_series.iloc[i-1]
weight_a = 1.0
weight_b = -ratio_b * df['price_b'].iloc[i-1] / df['price_a'].iloc[i-1]
daily_ret = weight_a * ret_a + weight_b * ret_b
# 扣除交易成本(调仓时:开仓和平仓各扣一次)
if df['signal'].iloc[i] != df['signal'].iloc[i-1]:
daily_ret -= cost_rate
df.loc[df.index[i], 'daily_return'] = daily_ret
df['net_value'] = (1 + df['daily_return']).cumprod()
# 7. 统计指标
total_return = (df['net_value'].iloc[-1] - 1) * 100
max_drawdown = ((df['net_value'].cummax() - df['net_value']) / df['net_value'].cummax()).max() * 100
print(f"总收益率:{total_return:.2f}%")
print(f"最大回撤:{max_drawdown:.2f}%")
print(f"交易次数:{trade_count}")
return df
# 使用示例(伪代码):
#
# from tqsdk import TqApi, TqAuth
#
# api = TqApi(auth=TqAuth("your_account", "your_password"))
# # 获取螺纹钢和热卷主力合约数据
# kline_rebar = api.get_kline_serial("SHFE.rb", 60) # 60分钟线
# kline_hotcoil = api.get_kline_serial("SHFE.hc", 60)
#
# # 运行策略
# result = cross_commodity_spread_strategy(
# rebar_prices,
# hotcoil_prices,
# lookback_days=60,
# contract_multiplier_a=10,
# contract_multiplier_b=10,
# cost_rate=0.0002
# )
# print(result[['spread', 'zscore', 'signal', 'net_value']].tail(10))
回测结果参考(基于公开数据,不同品种和时段结果存在显著差异):
| 指标 | 参考值 |
|---|---|
| 年化收益率 | 8%-20% |
| 最大回撤 | 5%-15% |
| 夏普比率 | 0.8-1.5 |
| 月度胜率 | 55%-70% |
| 与市场相关性 | 低(市场中性) |
注:以上数据为不同跨品种套利策略的历史回测参考值,实际表现取决于品种选择、价差波动特性和市场环境。华泰期货原木-螺纹钢策略回测年化15.93%(样本内回测)、夏普2.85,但需注意回测不代表实盘,流动性和滑点可能显著影响实际收益。
代码说明:
本代码为跨品种套利策略框架,核心逻辑是价差均值回归+等价值配比。配比计算使用前一日收盘价,避免未来函数(look-ahead bias)——在实盘中,开仓时你只能使用已经知道的价格。实际应用中,需要获取两个不同品种的价格数据,并根据各自的合约乘数计算等价值配比。期货数据建议使用聚宽、天勤(TqSdk)或万得(Wind)等专业数据源。cost_rate为单次交易成本(含手续费+滑点),开仓和平仓各扣一次。
老陈点评:
回测时要注意:跨品种套利策略的价差均值和标准差对窗口长度敏感。窗口太短(如20天),容易被近期异常值扭曲;窗口太长(如252天),可能包含已经失效的历史价差关系。建议使用滚动窗口(如60天),并做窗口长度的敏感性测试。此外,协整关系的稳定性需要定期检验——如果p值从小于0.05变为大于0.05,说明两个品种的长期均衡关系可能已经破裂。
老王补充:
实盘中最大的问题是流动性不匹配。螺纹钢和热卷的流动性都很好,但如果你做的是其他组合(比如原木和螺纹钢),原木的流动性远不如螺纹钢。在流动性差的品种上做套利,滑点可能吃掉你全部的利润。 建议在开仓前检查两个品种的成交量——如果任何一个品种的日均成交量低于某个阈值(比如1万手),就放弃这个组合。另外,临近交割时一定要提前平仓,不要等到最后几天。
七、本章小结与思考题
小结
| 项目 | 核心要点 |
|---|---|
| 策略类型 | 统计套利 / 价差套利 |
| 核心逻辑 | 两个相关品种的价差或比价均值回归 |
| 两种方向 | 做多价差(买弱卖强)和做空价差(卖强买弱) |
| 分析框架 | 价差(Spread)和比价(Ratio) |
| 产业逻辑 | 替代关系、上下游关系、共同宏观驱动、需求分化 |
| 核心公式 | Spread = P_A – P_B;Z-Score = (Spread – mean) / std |
| 仓位配比 | 等价值配比(考虑合约乘数和价格差异) |
| 核心优势 | 市场中性,不依赖方向判断,价差空间大于跨期套利 |
| 最大风险 | 相关性破裂、流动性不匹配、产业逻辑变化 |
| 资金门槛 | 中等(需双边保证金) |
跨品种 vs 跨期 vs 配对:一张表看懂三者区别
| 维度 | 跨期套利(第二.07) | 跨品种套利(第二.08) | 配对交易(第二.02) |
|---|---|---|---|
| 交易标的 | 同一品种、不同月份 | 不同品种、相同月份 | 两只同行业股票 |
| 价差驱动力 | 持有成本理论(同品种) | 产业逻辑(替代/上下游/共同成本) | 经济逻辑(同行业) |
| 价差稳定性 | 最强(理论必然) | 中等(产业逻辑支撑) | 较弱(统计协整) |
| 价差波动范围 | 窄 | 宽 | 宽 |
| 单笔利润空间 | 薄 | 中等 | 中等 |
| 回归确定性 | 高(同品种必然收敛) | 中(依赖产业逻辑) | 较低(依赖统计协整) |
| 做空工具 | 期货天然支持 | 期货天然支持 | A股融券受限 |
| 主要风险 | 展期成本、流动性 | 相关性破裂、产业逻辑变化 | 协整破裂、融券成本 |
| 资金门槛 | 低 | 中等 | 高(A股融券受限) |
| 典型品种 | 股指期货远近月 | 螺纹钢/热卷、豆粕/菜粕 | 同行业两只股票 |
跨品种套利策略是期货市场中仅次于跨期套利的第二大套利策略,也是量化交易者从“单品种趋势跟踪”走向“多品种组合交易”的重要一步。它与跨期套利(第二.07)同属价差交易的范畴,但跨品种套利的价差有产业逻辑支撑——两个品种的价差偏离最终会被替代效应、产业链传导或套利力量修正。
老陈总结:
跨品种套利的价值在于它的产业逻辑锚点。与跨期套利不同,跨品种套利的价差回归不是“理论必然”,而是“产业大概率”。替代关系、上下游传导、共同成本驱动——这些产业逻辑为价差回归提供了真实世界的力量支撑。但“大概率”不等于“必然”——当产业逻辑发生变化时,价差可能永远不回来。 跨品种套利的核心能力不是“算价差”,而是“理解产业”。
老王总结:
跨品种套利是我最喜欢的策略类型之一——它比跨期套利有更大的价差空间,比配对交易有更强的逻辑支撑。但它的成功取决于两件事:选对组合和算对手数。选对组合靠的是产业理解,算对手数靠的是细心。不要选那些“看着像”但没有产业逻辑的组合——那不是套利,是赌博。 另外,别在流动性差的品种上做套利——再好的策略,如果平不掉,都是纸上富贵。
💡 思考题
- 跨品种套利和跨期套利(第二.07)的核心区别是什么?为什么跨品种套利的价差波动范围通常比跨期套利更大?
- 跨品种套利中,“价差”和“比价”分别适用于什么场景?请以螺纹钢/热卷和黄金/白银为例说明。
- 等价值配比在跨品种套利中为什么重要?如果两个品种的合约乘数不同(如黄金1000克/手、白银15000克/手,价格差异很大),应该如何计算手数配比?
- (新增) 从跨期套利(第二.07)到跨品种套利(第二.08),价差的“确定性”在下降,但“空间”在扩大。你认为这种“确定性换空间”的权衡是否值得?在什么情况下你更倾向于选择跨期套利,什么情况下更倾向于选择跨品种套利?
- (新增) 跨品种套利策略的价差回归依赖于两个品种之间的产业逻辑。如果产业逻辑发生了变化(如替代品出现、政策只影响一边),价差可能永久性偏离。你会如何设计一个“产业逻辑监控”机制来及时发现这种变化?
- (新增) 金银比价在2020年3月疫情初期一度飙升至120以上,随后在一年内回落至60-70。你认为这种极端偏离是“机会”还是“风险”?如果在比价120时做空金银比价(卖金买银),你的止损应该设在哪里?
- (展望题) 华泰期货研究发现,原木和螺纹钢这对“看似不相关”的品种之间存在协整关系,并构建了年化15.93%(样本内回测)、夏普2.85的套利策略。你认为这类“创新组合”的发现,是增强了还是削弱了跨品种套利策略的有效性?请从“策略发现”和“策略拥挤”两个角度分析。
八、引用/参考出处
网上内容:
- 天勤量化《跨品种套利:交易的是相对估值》:https://www.shinnytech.com/articles/use-case/q73/v3-cross-commodity-arbitrage
- 天勤量化《螺纹热卷套利怎么做?》:https://www.shinnytech.com/articles/use-case/q73/0327-article/rebar-hotcoil-arbitrage-guide
- 百度百科《跨品种套利》:https://baike.baidu.com/item/跨品种套利
学术论文与图书(元信息):
- Engle, R. F., & Granger, C. W. J. (1987). “Co-integration and error correction: Representation, estimation, and testing.” Econometrica, 55(2), 251-276.(协整理论的奠基之作)
- 李尉,《中国期货市场量化交易(R与C++版)》,清华大学出版社。(涵盖跨品种套利策略的详细实现)


















暂无评论内容