1. 套利基础:什么是多币种套利、三角套利原理、套利机会的数学条件

大家好,我是老李。今天咱们聊聊套利的基础。说实话,很多人一听到「套利」就觉得是高大上的金融操作,其实没那么玄乎。我当年刚入行时,也觉得这东西离自己很远,直到亲手跑通了第一个三角套利策略——嗯,那种感觉就像发现了一个没人注意的宝藏入口。

1.1 什么是多币种套利?

多币种套利,说白了就是利用不同货币对之间的价格不一致来赚钱。你想想看,同一个商品在不同市场卖不同价格,你低价买入高价卖出,差价就是利润。外汇市场也一样。

举个例子:

  • 你在A交易所用1美元买了0.9欧元
  • 在B交易所用0.9欧元买了1.1英镑
  • 在C交易所用1.1英镑买了1.05美元

转了一圈,1美元变成了1.05美元。这5%就是套利空间。听起来简单吧?但实际执行起来坑很多,我后面会讲。

核心要点: 多币种套利不是预测涨跌,而是利用市场短期的定价错误。你不需要判断方向,只需要发现不一致。

1.2 三角套利原理

三角套利是套利里最经典的模式。为什么叫三角?因为涉及三个币种,形成一个闭环。比如 BTC/USDT、ETH/BTC、ETH/USDT 这三个交易对,就构成了一个三角。

我习惯把三角套利分成两种:

  1. 直接三角套利: 三个交易对都在同一个交易所。比如币安上的 BTC/USDT、ETH/BTC、ETH/USDT。
  2. 跨交易所三角套利: 三个交易对分散在不同交易所。比如 BTC/USDT 在币安,ETH/BTC 在欧易,ETH/USDT 在火币。

直接三角套利的好处是速度快,不用考虑跨交易所转账延迟。跨交易所的利润空间通常更大,但风险也更高——我曾经因为一笔转账卡了10分钟,眼睁睁看着套利窗口关闭,亏了手续费。

我的经验: 新手建议先从直接三角套利开始。同一个交易所内,价格偏差虽然小,但执行速度快,容错率高。

1.3 套利机会的数学条件

好,现在咱们来点硬核的。套利机会到底怎么判断?数学上其实很简单。

假设有三个币种:A、B、C。对应的交易对是:

  • A/B:1个A可以换多少B
  • B/C:1个B可以换多少C
  • C/A:1个C可以换多少A

如果这三个汇率相乘的结果不等于1,就存在套利机会。

具体公式:

套利条件:Rate(A/B) × Rate(B/C) × Rate(C/A) ≠ 1

如果乘积 > 1:正向套利(A→B→C→A)
如果乘积 < 1:反向套利(A→C→B→A)

举个例子:

交易对 汇率
BTC/USDT 50000
ETH/BTC 0.04
ETH/USDT 2100

计算一下:50000 × 0.04 × (1/2100) = 50000 × 0.04 × 0.000476 = 0.952

乘积小于1,说明存在反向套利机会。具体操作是:用USDT买ETH,再用ETH买BTC,最后用BTC换回USDT。

注意: 这里算的是理论值。实际交易中还要考虑手续费、滑点、深度等因素。我曾经遇到过理论利润2%,实际扣完手续费只剩0.3%的情况。所以,别只看理论值。

1.4 套利机会的实时检测逻辑

在实际系统中,我们不可能手动算这些。需要写代码实时监控。下面是我常用的检测逻辑:

def detect_arbitrage(prices):
    """
    prices: 字典,包含所有交易对的买一卖一价
    返回:是否存在套利机会及具体路径
    """
    # 以 BTC/USDT, ETH/BTC, ETH/USDT 为例
    btc_usdt_bid = prices['BTC/USDT']['bid']  # 买一价
    btc_usdt_ask = prices['BTC/USDT']['ask']  # 卖一价
    
    eth_btc_bid = prices['ETH/BTC']['bid']
    eth_btc_ask = prices['ETH/BTC']['ask']
    
    eth_usdt_bid = prices['ETH/USDT']['bid']
    eth_usdt_ask = prices['ETH/USDT']['ask']
    
    # 正向套利:USDT → BTC → ETH → USDT
    forward = (1 / btc_usdt_ask) * (1 / eth_btc_ask) * eth_usdt_bid
    
    # 反向套利:USDT → ETH → BTC → USDT
    reverse = (1 / eth_usdt_ask) * eth_btc_bid * btc_usdt_bid
    
    # 判断是否有套利空间(考虑手续费)
    fee_rate = 0.001  # 千分之一手续费
    if forward > (1 + fee_rate):
        return "正向套利机会", forward
    elif reverse > (1 + fee_rate):
        return "反向套利机会", reverse
    else:
        return "无套利机会", 0
避坑指南: 我曾经在代码里忘了考虑手续费,结果跑了一整天,看着屏幕上全是「套利机会」,实际一算全是亏的。所以,一定要把手续费、滑点这些成本算进去。

1.5 套利机会的时效性

套利窗口通常只存在几秒钟,甚至几百毫秒。为什么会这样?因为市场上有大量的量化交易机器人在盯着。一旦出现价格偏差,它们会在毫秒级内完成交易,把价格拉回正常水平。

所以,手动套利基本没戏。你需要:

  • 低延迟的网络连接(最好用服务器托管)
  • 高效的API接口(WebSocket比REST快很多)
  • 本地计算,减少网络请求次数

我记得有一次,我在本地电脑上跑套利程序,延迟大概50毫秒。结果连续一周没抓到一次有效套利。后来把程序部署到交易所附近的云服务器上,延迟降到5毫秒,当天就抓到了3次。嗯,这就是现实。

1.6 本章知识体系

下面这张图是我自己画的,把本章的核心逻辑串起来了。你看一遍应该就能理解整个套利检测的流程。

三角套利检测核心流程 1. 获取实时汇率 WebSocket / REST API 2. 计算汇率乘积 Rate(A/B)×Rate(B/C)×Rate(C/A) 3. 判断是否≠1 考虑手续费 否:继续监控 是:执行套利交易 关键点:实时性、手续费、滑点控制 套利窗口通常只有几秒到几百毫秒 💡 建议:先用模拟盘测试,确认逻辑无误后再上实盘

这张图把整个流程串起来了。从获取数据到计算乘积,再到判断是否执行。你照着这个逻辑写代码,基本不会跑偏。

本章小结: 多币种套利的本质是利用市场定价不一致。三角套利是最基础的模型,数学条件就是汇率乘积不等于1。实际执行时,一定要考虑手续费、滑点和延迟。别被理论利润迷惑,实盘才是检验真理的唯一标准。
我的建议: 如果你刚开始学套利,先别急着写代码。拿纸笔算几个例子,把正向反向的逻辑理清楚。我当年就是靠手算理解了套利的本质,后来写代码就顺了。

公众号:蓝海资料掘金营,微信deep3321