第二十六讲:进阶话题——跨市场套利(内外盘价差、LME与上期所)

各位同学,今天我们聊一个真正能拉开交易水平的话题——跨市场套利

说白了,就是利用同一个品种在不同交易所之间的价差来赚钱。比如铜,它在LME(伦敦金属交易所)和上期所(SHFE)都有交易。两个市场的价格,按理说应该差不多,但实际中经常出现偏差。这个偏差,就是我们的机会。

我个人习惯把这种策略叫做“搬砖”,只不过搬的不是砖头,是价差。嗯,听起来简单,但里面的门道可不少。

1. 内外盘价差的本质

先问一个问题:为什么会有价差?

理论上,如果两个市场完全打通,套利者会瞬间抹平价差。但现实是,两个市场之间存在交易时间、汇率、关税、物流成本、资金流动限制等多重障碍。

举个例子。我记得有一次,LME铜因为海外某矿场罢工突然暴涨,但国内上期所因为夜盘还没开,价格纹丝不动。这时候,内外盘价差瞬间拉大。如果你能提前布局,等国内开盘补涨,就能吃到这波价差。

但要注意,价差不是无风险的。它背后有汇率波动、政策变化、交割规则差异等风险。我曾经在2018年做过一次内外盘套利,结果因为人民币突然贬值,汇率损失直接吃掉了价差利润。嗯,从那以后,我每次做内外盘套利,都会先锁汇。

核心公式:
理论价差 = 外盘价格 × 汇率 × (1 + 关税) + 运费 + 其他成本
实际价差 = 内盘价格 - 理论价差
套利信号:当实际价差偏离历史均值超过2个标准差时,考虑入场。

2. LME与上期所的差异对比

做跨市场套利,首先得搞清楚两个市场的规则。我整理了一个对比表,你直接拿去用。

对比项 LME(伦敦金属交易所) 上期所(SHFE)
交易时间 电子盘几乎24小时,场内盘有固定时段 日盘+夜盘,有休市时间
合约规格 25吨/手(铜) 5吨/手(铜)
报价单位 美元/吨 人民币/吨
交割方式 实物交割,可延期 实物交割,到期强制交割
涨跌停板 无涨跌停 有涨跌停(通常±5%)
保证金 约5%-10% 约8%-12%

你看,光是合约规格就差5倍。做套利时,必须按吨数等比换算。比如LME做1手铜(25吨),上期所就要做5手(5×5=25吨)。否则头寸不对等,套利就成了赌博。

3. 套利策略的核心逻辑

跨市场套利,本质上是一个均值回归策略。我们假设内外盘价差在长期会围绕某个均值波动。当价差偏离均值太远时,我们就反向开仓,等它回归。

具体步骤是这样的:

  1. 数据获取:同时获取LME和上期所的实时行情数据。
  2. 价差计算:将LME价格按汇率、关税等换算成人民币,再减去上期所价格。
  3. 信号生成:计算价差的均值和标准差。当价差 > 均值 + 2倍标准差时,做空价差(卖外盘、买内盘);当价差 < 均值 - 2倍标准差时,做多价差(买外盘、卖内盘)。
  4. 仓位管理:按等吨数配比,同时考虑汇率对冲。
  5. 止盈止损:价差回归到均值附近平仓,或者设置固定止损。
我的经验: 别只看分钟级别的价差。我建议至少用1小时或日线级别的数据来做均值回归。因为跨市场套利有延迟,太短的周期容易被噪音吃掉。

4. 代码实战:内外盘价差监控

下面我给出一段Python代码,用于实时监控LME铜和上期所铜的价差。注意,这里用的是模拟数据,实际使用时需要接入行情API。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 模拟数据:LME铜价(美元/吨)和上期所铜价(人民币/吨)
np.random.seed(42)
dates = pd.date_range('2024-01-01', periods=500, freq='D')
lme_price = 9000 + np.cumsum(np.random.randn(500) * 20)  # 模拟LME价格
shfe_price = 65000 + np.cumsum(np.random.randn(500) * 150)  # 模拟上期所价格

# 汇率和关税假设
exchange_rate = 7.2  # 美元兑人民币
tariff = 0.05  # 5%关税

# 计算理论价差
lme_cny = lme_price * exchange_rate * (1 + tariff)
spread = shfe_price - lme_cny

# 计算均值和标准差
mean_spread = np.mean(spread)
std_spread = np.std(spread)

# 生成信号
upper_bound = mean_spread + 2 * std_spread
lower_bound = mean_spread - 2 * std_spread

# 绘图
plt.figure(figsize=(12, 6))
plt.plot(dates, spread, label='实际价差', color='blue')
plt.axhline(mean_spread, color='green', linestyle='--', label='均值')
plt.axhline(upper_bound, color='red', linestyle='--', label='上界 (+2σ)')
plt.axhline(lower_bound, color='red', linestyle='--', label='下界 (-2σ)')
plt.title('LME与上期所铜价差监控')
plt.xlabel('日期')
plt.ylabel('价差 (人民币/吨)')
plt.legend()
plt.grid(True)
plt.show()

# 输出最新信号
latest_spread = spread.iloc[-1]
if latest_spread > upper_bound:
    print(f"信号:做空价差(卖LME,买SHFE),当前价差 {latest_spread:.2f}")
elif latest_spread < lower_bound:
    print(f"信号:做多价差(买LME,卖SHFE),当前价差 {latest_spread:.2f}")
else:
    print(f"无信号,当前价差 {latest_spread:.2f} 在区间内")
避坑指南: 我曾经在实盘中犯过一个错误——没有考虑LME的升贴水结构。LME是连续合约,而SHFE是主力合约。如果LME的远月合约和SHFE的近月合约价差结构不同,套利会出问题。所以,一定要用相同到期月份的合约做对比。

5. 跨市场套利的进阶玩法

除了简单的价差回归,还有一些更高级的策略。我简单提两个:

  • 跨品种套利:比如LME铜和SHFE铜,但加入铝、锌等品种做对冲。有时候铜的价差没机会,但铜铝比价有机会。
  • 跨期套利+跨市场套利:同时利用两个市场的期限结构差异。比如LME的back结构(近高远低)和SHFE的contango结构(近低远高),可以组合出更复杂的套利策略。

嗯,这些玩法对数据精度和交易速度要求更高。我个人建议,新手先从最简单的内外盘价差回归做起,跑通一个完整的闭环,再考虑进阶。

6. 知识体系图

下面我用一张SVG图来总结本章的核心逻辑。你看一眼就能明白整个套利流程。

跨市场套利核心逻辑 LME(伦敦) 美元/吨,25吨/手 上期所(SHFE) 人民币/吨,5吨/手 价差 = 内盘 - 外盘×汇率×(1+关税) 需按吨数等比换算(1:5) 信号生成(均值回归) 价差 > 均值+2σ → 做空价差 价差 < 均值-2σ → 做多价差 执行交易 同时开仓,等吨数,锁汇率

你看,整个流程就是:两个市场 → 价差计算 → 信号生成 → 执行交易。每一步都有坑,但每一步也都有机会。

最后说一句: 跨市场套利不是无风险套利。它本质上是统计套利,依赖历史规律。当市场结构发生根本变化时(比如关税调整、汇率改革),历史规律可能失效。所以,永远要留一手,做好风控。

好了,这一讲就到这里。记住,做跨市场套利,细节决定成败。从数据源到合约匹配,从汇率到交割规则,每一个细节都值得你花时间去研究。

公众号:蓝海数据掘金营,微信 deep3321