2. 市场微观结构:订单簿深度、买卖价差、市场深度、交易量分布、订单类型与撮合机制
做跨交易所套利,说白了就是在跟市场微观结构打交道。你想想看,如果两个交易所的订单簿长得一模一样,那还套什么利?正是因为有差异,才有我们的饭吃。
我个人习惯,在搭建任何套利策略之前,先花一周时间把目标交易所的微观结构摸透。这一步偷懒了,后面策略跑起来全是坑。
2.1 订单簿深度:市场的真实面貌
订单簿是什么?就是所有挂单的集合。买一、买二、买三……卖一、卖二、卖三……每一档都对应一个价格和数量。
我见过不少新手,只看最新成交价就做决策。结果呢?一进去才发现,那个价格只有0.1个BTC的深度,根本吃不到量。
核心概念:订单簿深度 = 每个价格层级上的挂单总量。深度越厚,市场越抗冲击。
举个例子,BTC/USDT在交易所A的卖一价是50000,挂了2个BTC;卖二价是50001,挂了5个BTC。你想买3个BTC,对不起,你得把卖一吃光,再吃一部分卖二。实际成交均价就不是50000了,而是(50000*2 + 50001*1)/3 ≈ 50000.33。
这0.33的滑点,就是深度不足带来的成本。套利本身利润就薄,滑点一吃,可能就亏了。
2.2 买卖价差:套利的隐形门槛
买卖价差,就是买一价和卖一价之间的差值。这个指标我每天必看。
为什么?因为价差直接决定了你的入场成本。假设交易所A的价差是0.01%,交易所B的价差是0.05%。你在A买、B卖,光价差就吃掉你0.06%的利润。如果套利空间只有0.1%,那你实际只赚了0.04%。
| 交易所 | 买一价 | 卖一价 | 价差(bps) |
|---|---|---|---|
| Binance | 50000.00 | 50000.10 | 2.0 |
| OKX | 50000.20 | 50000.50 | 6.0 |
| Bybit | 50000.05 | 50000.15 | 2.0 |
你看,OKX的价差明显偏大。我在项目中遇到过这种情况:明明价差信号出来了,但一算扣除手续费和价差后,利润为负。嗯,这就是典型的「看得见吃不着」。
避坑指南:我曾经在价差大的交易所吃过亏。后来我养成了一个习惯——在策略里加入「最小价差过滤」逻辑。如果目标交易所的当前价差超过阈值,直接跳过这笔交易。
2.3 市场深度:你能吃下多少量
市场深度和订单簿深度有点像,但侧重点不同。市场深度衡量的是:在某个价格范围内,市场能吸收多少成交量。
我通常看「1%深度」——也就是距离当前价格1%范围内,所有挂单的总量。这个指标能告诉我:如果我要做一笔大单,会不会把价格打穿。
举个例子:
def calculate_market_depth(order_book, price_range_pct=0.01):
"""
计算指定价格范围内的市场深度
:param order_book: 订单簿数据,包含bids和asks
:param price_range_pct: 价格范围百分比,默认1%
"""
mid_price = (order_book['bids'][0][0] + order_book['asks'][0][0]) / 2
upper_price = mid_price * (1 + price_range_pct)
lower_price = mid_price * (1 - price_range_pct)
bid_depth = sum(qty for price, qty in order_book['bids'] if price >= lower_price)
ask_depth = sum(qty for price, qty in order_book['asks'] if price <= upper_price)
return {
'bid_depth': bid_depth,
'ask_depth': ask_depth,
'total_depth': bid_depth + ask_depth
}
这段代码我用了好几年。每次接入新交易所,第一件事就是跑这个函数,看看它的深度分布是否均匀。
2.4 交易量分布:谁在主导市场
交易量分布,说白了就是看大单和小单的比例。我个人习惯把单子分成三类:
- 小单(< 0.1 BTC):散户行为,噪音多
- 中单(0.1 - 1 BTC):可能是大户,也可能是机器人
- 大单(> 1 BTC):机构或鲸鱼,值得关注
为什么会这样?因为大单往往意味着有人在做方向性交易。如果你看到某个交易所突然出现连续的大单买入,而另一个交易所没有,那价差可能很快就会被拉大。
我记得有一次,我在监控中发现Binance上连续出现5个2BTC的买单,而OKX上毫无动静。我立刻在OKX上挂买单,在Binance上挂卖单。5分钟后,价差从0.02%扩大到0.08%,我吃到了这波利润。
2.5 订单类型与撮合机制
订单类型这块,我建议你至少搞清楚这几种:
- 限价单:指定价格,不急着成交,挂在那里等
- 市价单:立即成交,但价格不确定
- IOC(Immediate-or-Cancel):立即成交,没成交的部分取消
- FOK(Fill-or-Kill):要么全部成交,要么全部取消
撮合机制呢?大部分交易所都是「价格优先、时间优先」。价格好的先成交,价格一样的先到先得。
注意:不同交易所的撮合规则可能有细微差别。比如,有的交易所支持「自成交预防」,有的不支持。我曾经因为没注意这个,导致自己的两个订单互相成交,白白损失了手续费。
做套利时,我强烈建议用限价单+IOC的组合。为什么?因为市价单的滑点不可控,而限价单可以精确控制入场价格。加上IOC,可以避免订单挂在那里被市场波动吃掉。
2.6 知识体系总览
下面这张图,是我自己总结的市场微观结构知识体系。每次带新人,我都会先让他们看这张图。
这张图把五个核心概念串起来了。你仔细看,每个概念都不是孤立的——订单簿深度影响价差,价差影响交易成本,市场深度决定你能吃多少量,交易量分布告诉你市场情绪,订单类型和撮合机制则决定了你的执行策略。
做套利,说白了就是在这五个维度上找不对称。哪个交易所深度好?哪个价差小?哪个适合挂限价单?把这些搞清楚,策略就成功了一半。
我的建议:刚开始别贪多。先盯一个交易对,在两个交易所上同时拉取订单簿数据,手动分析一周。等你能闭着眼睛说出这两个交易所的微观结构差异了,再开始写代码。