一、套利基础:什么是跨市场套利?核心原理与风险收益特征

跨市场套利,说白了就是「同一个东西,在不同地方卖不同价,你低价买、高价卖,赚差价」。

听起来很简单对吧?但实际做起来,坑多得很。我刚开始做量化那会儿,觉得套利就是捡钱,结果被滑点和延迟教育得明明白白。嗯,咱们今天就把这事彻底聊透。

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 风险收益特征:别只看收益,要看风险

很多人觉得套利是「无风险」的。我告诉你,这是最大的误解。套利只是「低风险」,不是「零风险」。

风险类型 说明 我的应对建议
执行风险 下单时价格已经变了,没吃到价差 用限价单,别用市价单
延迟风险 网络延迟导致一边成交、另一边没成交 尽量用同一机房,或者用低延迟线路
流动性风险 想平仓时没人接盘 只做流动性好的品种
交易所风险 交易所宕机、拔网线、甚至跑路 分散存放资金,别全放一个篮子
政策风险 监管突然出手,市场剧烈波动 设置止损,控制仓位
避坑指南:我曾经在一次套利中,因为交易所 API 突然报错,导致一边成交了、另一边没成交。结果变成了单边持仓,市场反向波动,亏了不少。从那以后,我每次套利都会设置「单边保护」——如果一边没成交,另一边自动撤单。

1.4 套利策略的核心指标

做套利,你得盯几个关键数字。我一般用这四个:

  1. 价差(Spread):两个市场价格的差值。这是你的毛利润来源。
  2. 价差标准差:衡量价差的波动性。波动越大,机会越多,但风险也越大。
  3. 夏普比率:收益除以风险。套利策略的夏普通常比较高,3 以上算合格。
  4. 最大回撤:最坏情况下亏多少。套利策略的回撤一般控制在 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)
注意:这个代码只是演示逻辑。实际生产中,你需要处理 API 限频、网络异常、数据对齐等问题。我建议你用 WebSocket 代替轮询,延迟更低。

1.7 我的几点忠告

做套利这几年,我踩过不少坑。说几个最关键的:

  • 别贪心:年化 20%-30% 的套利策略已经很好了。如果有人跟你说年化 100% 以上还无风险,那大概率是骗局。
  • 重视手续费:很多套利机会看着价差很大,一算手续费,利润全没了。我习惯把手续费算进成本里,再决定是否开仓。
  • 做好回测:别一上来就实盘。先用历史数据跑一遍,看看策略在极端行情下的表现。2019 年那次闪崩,很多套利策略直接爆仓。

好了,这一章的内容就到这里。跨市场套利的核心逻辑其实不复杂,难的是执行细节。后面的章节,我会一步步带你搭建完整的套利系统。


专注资料整理