4. 多资产套利:三角套利、跨期套利与跨品种套利
多资产套利,说白了就是利用不同资产之间的价格关系来赚钱。你想想看,市场里那么多品种,它们之间总有些“亲戚关系”。一旦这种关系被打破,套利机会就来了。
我个人习惯把多资产套利分成三类:三角套利、跨期套利和跨品种套利。这三类我都做过,踩过的坑也不少。今天咱们就一个一个说清楚。
4.1 三角套利:外汇市场的“三角恋”
三角套利,听起来挺玄乎,其实原理很简单。它利用的是三种货币之间的汇率不一致性。
举个例子:假设你有美元(USD)、欧元(EUR)和英镑(GBP)。正常情况下,USD/EUR、EUR/GBP、GBP/USD 这三个汇率应该满足一个闭环关系。如果不满足,就存在套利空间。
我在项目中遇到过这种情况:有一次,某个小币种交易所的汇率更新慢了半拍,导致三角套利窗口打开了大概3秒钟。嗯,就是这3秒,我们团队抢到了不少利润。
来看一个具体的Python实现:
import pandas as pd
import numpy as np
def triangular_arbitrage(prices):
"""
prices: dict, 格式 {'USD/EUR': 0.85, 'EUR/GBP': 0.88, 'GBP/USD': 1.34}
"""
# 计算理论汇率
theoretical = prices['USD/EUR'] * prices['EUR/GBP'] * prices['GBP/USD']
# 判断是否存在套利机会
if abs(theoretical - 1) > 0.001: # 0.1%的阈值
direction = "正向" if theoretical > 1 else "反向"
profit = abs(theoretical - 1) * 100
print(f"发现{方向}套利机会,预期收益:{profit:.2f}%")
return True
return False
# 模拟数据
prices = {'USD/EUR': 0.85, 'EUR/GBP': 0.88, 'GBP/USD': 1.34}
triangular_arbitrage(prices)
4.2 跨期套利:同一品种,不同月份
跨期套利,就是同一个品种,不同交割月份的合约之间做套利。比如,螺纹钢的5月合约和10月合约。
为什么会存在这种套利机会?因为不同月份的合约,市场对它们的供需预期不一样。有时候近月合约涨得猛,远月合约跟不上,这就产生了价差。
我个人习惯用“价差序列”来监控跨期套利机会。说白了,就是盯着两个合约的价格差,看它是否偏离了历史均值。
| 合约对 | 当前价差 | 历史均值 | 标准差 | Z-Score |
|---|---|---|---|---|
| RB2405-RB2410 | 85 | 62 | 15 | 1.53 |
| RB2410-RB2501 | 42 | 38 | 8 | 0.50 |
| RB2501-RB2505 | 28 | 35 | 10 | -0.70 |
你看这个表格,RB2405-RB2410的Z-Score是1.53,说明价差偏大。这时候可以考虑做空价差——卖出近月,买入远月。
def calendar_spread_arbitrage(contract1, contract2, z_threshold=1.5):
"""
跨期套利信号生成
"""
spread = contract1['price'] - contract2['price']
mean = spread.rolling(20).mean()
std = spread.rolling(20).std()
z_score = (spread - mean) / std
if z_score.iloc[-1] > z_threshold:
return "做空价差:卖出近月,买入远月"
elif z_score.iloc[-1] < -z_threshold:
return "做多价差:买入近月,卖出远月"
else:
return "无信号"
4.3 跨品种套利:相关品种的“兄弟情”
跨品种套利,就是两个相关品种之间的套利。比如,豆粕和豆油、螺纹钢和热卷、焦煤和焦炭。
这些品种之间通常有固定的比价关系。比如,豆粕和豆油都是大豆压榨出来的,它们的价格之和应该等于大豆价格加上压榨利润。如果这个关系被打破,就存在套利机会。
我记得有一次,豆粕因为猪瘟事件暴跌,但豆油价格没怎么动。这时候做多豆粕、做空豆油,就是一个典型的跨品种套利。
来看一个跨品种套利的实现:
def cross_asset_arbitrage(asset1, asset2, ratio_history):
"""
跨品种套利
asset1, asset2: 两个品种的价格序列
ratio_history: 历史比价序列
"""
current_ratio = asset1 / asset2
mean_ratio = ratio_history.mean()
std_ratio = ratio_history.std()
# 计算偏离程度
deviation = (current_ratio - mean_ratio) / std_ratio
if deviation > 2:
return f"做空比价:卖出{asset1.name},买入{asset2.name}"
elif deviation < -2:
return f"做多比价:买入{asset1.name},卖出{asset2.name}"
else:
return "比价在合理范围内"
4.4 多资产套利的风险控制
做多资产套利,最怕的就是“假突破”。你看着价差偏离了历史均值,冲进去,结果价差继续扩大,你就被套住了。
我曾经犯过一个错误:看到螺纹钢和热卷的价差偏离了3个标准差,觉得机会难得,重仓杀入。结果价差继续扩大,最后止损出局。后来复盘发现,那次偏离是因为钢厂检修导致的短期供需失衡,不是统计上的“均值回归”。
所以,多资产套利一定要做好风控:
- 仓位控制: 单笔套利仓位不超过总资金的5%
- 止损设置: 价差偏离超过2倍标准差时,考虑止损
- 流动性检查: 确保两个品种都能顺利进出
- 时间窗口: 跨期套利要注意交割月临近时的流动性风险
4.5 实战中的注意事项
最后,分享几个我在实战中总结的经验:
- 数据质量第一: 套利机会转瞬即逝,数据延迟1秒可能就错过了。我建议用实时行情数据,别用快照数据。
- 交易成本算清楚: 手续费、滑点、冲击成本,这些都要算进去。有时候看起来有利润,扣掉成本就没了。
- 别贪心: 多资产套利的利润通常很薄,一次赚0.1%-0.5%就很不错了。别想着一次暴富。
- 监控多个市场: 同一个套利机会可能出现在不同交易所。比如,比特币在币安和火币之间就有价差套利机会。
嗯,以上就是多资产套利的主要内容。三角套利、跨期套利、跨品种套利,这三种方法各有特点,但核心思想是一样的——找到价格关系中的“异常”,然后利用它赚钱。
好了,这一章的内容就到这里。记住,多资产套利的核心是“关系”——找到资产之间的合理关系,然后监控它是否被打破。剩下的,就是执行和风控了。