第二十六讲:进阶话题——跨市场套利(内外盘价差、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. 套利策略的核心逻辑
跨市场套利,本质上是一个均值回归策略。我们假设内外盘价差在长期会围绕某个均值波动。当价差偏离均值太远时,我们就反向开仓,等它回归。
具体步骤是这样的:
- 数据获取:同时获取LME和上期所的实时行情数据。
- 价差计算:将LME价格按汇率、关税等换算成人民币,再减去上期所价格。
- 信号生成:计算价差的均值和标准差。当价差 > 均值 + 2倍标准差时,做空价差(卖外盘、买内盘);当价差 < 均值 - 2倍标准差时,做多价差(买外盘、卖内盘)。
- 仓位管理:按等吨数配比,同时考虑汇率对冲。
- 止盈止损:价差回归到均值附近平仓,或者设置固定止损。
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} 在区间内")
5. 跨市场套利的进阶玩法
除了简单的价差回归,还有一些更高级的策略。我简单提两个:
- 跨品种套利:比如LME铜和SHFE铜,但加入铝、锌等品种做对冲。有时候铜的价差没机会,但铜铝比价有机会。
- 跨期套利+跨市场套利:同时利用两个市场的期限结构差异。比如LME的back结构(近高远低)和SHFE的contango结构(近低远高),可以组合出更复杂的套利策略。
嗯,这些玩法对数据精度和交易速度要求更高。我个人建议,新手先从最简单的内外盘价差回归做起,跑通一个完整的闭环,再考虑进阶。
6. 知识体系图
下面我用一张SVG图来总结本章的核心逻辑。你看一眼就能明白整个套利流程。
你看,整个流程就是:两个市场 → 价差计算 → 信号生成 → 执行交易。每一步都有坑,但每一步也都有机会。
好了,这一讲就到这里。记住,做跨市场套利,细节决定成败。从数据源到合约匹配,从汇率到交割规则,每一个细节都值得你花时间去研究。