一、套利基础:什么是跨市场套利?核心原理与风险收益特征
跨市场套利,说白了就是「同一个东西,在不同地方卖不同价,你低价买、高价卖,赚差价」。
听起来很简单对吧?但实际做起来,坑多得很。我刚开始做量化那会儿,觉得套利就是捡钱,结果被滑点和延迟教育得明明白白。嗯,咱们今天就把这事彻底聊透。
1.1 核心原理:一价定律的实践
金融学里有个基础概念叫「一价定律」——同一资产在不同市场,价格应该相等。但现实是,市场不是完美的。信息传递有快慢,流动性有差异,交易规则也不同。这些「不完美」就创造了套利空间。
举个例子:
- 比特币在币安报价 50000 USDT
- 同一时间,OKX 报价 50100 USDT
- 你在币安买,在 OKX 卖,每枚赚 100 USDT(不考虑手续费)
这就是最经典的跨市场套利模型。
套利利润 = 价差 - 交易成本 - 滑点 - 延迟成本
注意,这个公式里每一项都可能吃掉你的利润。我见过太多人只盯着价差,忽略了后面三项,结果亏得莫名其妙。
1.2 跨市场套利的三种常见形态
根据我的经验,跨市场套利主要分三类。咱们一个一个说。
1.2.1 现货-现货套利
同一资产在两个不同交易所之间搬砖。这是最原始、最直观的套利方式。
- 优点:逻辑简单,容易理解
- 缺点:需要同时持有资金和资产,资金利用率低
- 典型场景:比特币、以太坊等主流币种在不同交易所的价差
我曾经在 2017 年做过一阵子现货搬砖。那时候市场不成熟,价差经常到 2% 以上。但后来做的人多了,价差被压缩到 0.1% 以内,基本没法做了。
1.2.2 期货-现货套利(期现套利)
期货价格和现货价格之间,理论上应该收敛于到期日。当价差偏离合理范围时,就可以套利。
- 操作:买入现货,做空期货(或反向操作)
- 风险:基差风险、资金费率风险
- 收益特征:相对稳定,但需要管理保证金
1.2.3 跨品种套利
相关性高的两个品种,比如 BTC 和 ETH,或者不同到期日的期货合约。当它们的价差偏离历史均值时,进行配对交易。
- 优点:市场容量大,不容易被狙击
- 缺点:需要统计建模,风险相对复杂
- 典型场景:BTC 永续合约与季度合约之间的价差
1.3 风险收益特征:别只看收益,要看风险
很多人觉得套利是「无风险」的。我告诉你,这是最大的误解。套利只是「低风险」,不是「零风险」。
| 风险类型 | 说明 | 我的应对建议 |
|---|---|---|
| 执行风险 | 下单时价格已经变了,没吃到价差 | 用限价单,别用市价单 |
| 延迟风险 | 网络延迟导致一边成交、另一边没成交 | 尽量用同一机房,或者用低延迟线路 |
| 流动性风险 | 想平仓时没人接盘 | 只做流动性好的品种 |
| 交易所风险 | 交易所宕机、拔网线、甚至跑路 | 分散存放资金,别全放一个篮子 |
| 政策风险 | 监管突然出手,市场剧烈波动 | 设置止损,控制仓位 |
1.4 套利策略的核心指标
做套利,你得盯几个关键数字。我一般用这四个:
- 价差(Spread):两个市场价格的差值。这是你的毛利润来源。
- 价差标准差:衡量价差的波动性。波动越大,机会越多,但风险也越大。
- 夏普比率:收益除以风险。套利策略的夏普通常比较高,3 以上算合格。
- 最大回撤:最坏情况下亏多少。套利策略的回撤一般控制在 2% 以内。
你想想看,如果一个套利策略的最大回撤超过 5%,那它可能就不是真正的套利,而是披着套利外衣的趋势策略。
1.5 套利策略的知识体系
下面这张图,是我自己总结的跨市场套利知识框架。你可以把它当作学习路线图。
1.6 一个简单的套利检测代码
光说不练假把式。我给你写个最简单的套利检测脚本。它实时监控两个交易所的价差,当价差超过阈值时发出信号。
import requests
import time
def get_price_binance():
url = "https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT"
resp = requests.get(url)
return float(resp.json()['price'])
def get_price_okx():
url = "https://www.okx.com/api/v5/market/ticker?instId=BTC-USDT"
resp = requests.get(url)
return float(resp.json()['data'][0]['last'])
threshold = 10 # 价差超过10美元就报警
while True:
try:
p1 = get_price_binance()
p2 = get_price_okx()
spread = abs(p1 - p2)
if spread > threshold:
print(f"发现套利机会!价差: {spread:.2f} 美元")
print(f"币安: {p1:.2f}, OKX: {p2:.2f}")
else:
print(f"当前价差: {spread:.2f} 美元,无机会")
time.sleep(1)
except Exception as e:
print(f"出错了: {e}")
time.sleep(5)
1.7 我的几点忠告
做套利这几年,我踩过不少坑。说几个最关键的:
- 别贪心:年化 20%-30% 的套利策略已经很好了。如果有人跟你说年化 100% 以上还无风险,那大概率是骗局。
- 重视手续费:很多套利机会看着价差很大,一算手续费,利润全没了。我习惯把手续费算进成本里,再决定是否开仓。
- 做好回测:别一上来就实盘。先用历史数据跑一遍,看看策略在极端行情下的表现。2019 年那次闪崩,很多套利策略直接爆仓。
好了,这一章的内容就到这里。跨市场套利的核心逻辑其实不复杂,难的是执行细节。后面的章节,我会一步步带你搭建完整的套利系统。