第二章 市场微观结构:订单簿原理、买卖价差、市场深度、交易机制差异

做跨市场套利,说白了就是在不同交易所之间「搬砖」。但砖不是你想搬就能搬的。你得先搞清楚每个市场的「脾气」——这就是市场微观结构。我刚开始做套利那会儿,吃过不少亏,后来才明白:不懂微观结构,策略写得再漂亮也是白搭。

2.1 订单簿原理:市场的「实时心电图」

订单簿是什么?你可以把它想象成一个实时更新的「买卖意愿清单」。买方挂单和卖方挂单,按价格从高到低排列,这就是订单簿。

我个人习惯把订单簿分成三层来看:

  • 第一层(Top of Book):最优买价和最优卖价。这是最活跃的价格,也是你看到的市场报价。
  • 第二层(Depth):次优价格及对应的挂单量。这里藏着市场的真实流动性。
  • 第三层(Hidden Liquidity):冰山订单、暗池等。嗯,这部分是「看不见的手」,我在项目中遇到过好几次被暗池吃掉订单的情况。

订单簿的核心逻辑其实很简单:

# 一个简化的订单簿结构
class OrderBook:
    def __init__(self):
        self.bids = {}  # 买方挂单 {价格: 数量}
        self.asks = {}  # 卖方挂单 {价格: 数量}
    
    def get_spread(self):
        best_bid = max(self.bids.keys())
        best_ask = min(self.asks.keys())
        return best_ask - best_bid
    
    def get_depth(self, levels=5):
        # 获取前5档深度
        bid_depth = sorted(self.bids.items(), reverse=True)[:levels]
        ask_depth = sorted(self.asks.items())[:levels]
        return bid_depth, ask_depth

你想想看,订单簿每毫秒都在变化。做套利时,我通常不会只看第一层,因为那太容易被「钓鱼」了。有一次,我看到一个交易所的买一价特别高,以为有套利空间,结果一进去就被砸穿了——那是有人在挂「诱饵单」。

2.2 买卖价差:你的「过路费」

买卖价差(Bid-Ask Spread)就是最优卖价减去最优买价。说白了,这是你进出市场的成本。

为什么价差很重要?因为套利利润往往很薄。如果价差太大,你还没赚钱就先亏了。

核心公式:

实际套利利润 = 理论价差 - 买卖价差 - 手续费 - 滑点

如果买卖价差占了理论价差的30%以上,这笔交易基本不用做了。

我在项目中遇到过这样的情况:两个交易所的BTC价差有0.5%,看起来不错。但A交易所的买卖价差是0.2%,B交易所是0.15%,再加上手续费0.1%,实际利润只剩0.05%——还不够覆盖网络延迟的。

影响买卖价差的因素有哪些?

  • 流动性:越活跃的品种,价差越小。BTC/ETH的价差通常只有0.01%-0.05%。
  • 波动性:市场剧烈波动时,做市商会扩大价差来保护自己。
  • 交易时间:非主流交易时段,价差会明显扩大。
  • 交易所规则:有些交易所对做市商有补贴,价差会更小。

我的经验:做套利前,先花一周时间统计目标交易所的价差分布。别只看平均值,要看中位数和90分位数。因为极端情况才是真正让你亏钱的地方。

2.3 市场深度:你能「吃」下多少?

市场深度衡量的是在某个价格水平上,有多少挂单等着成交。深度越大,你越能「大额进出」而不影响价格。

我习惯用「深度图」来直观理解:

市场深度示意图 0 50 100 150 卖5 卖3 卖1 买1 买3 买5 价差 卖方挂单 买方挂单 价格由中间向两侧递减

这张图里,红色是卖方深度,绿色是买方深度。中间那个缺口就是价差。深度越「厚」,说明市场越有「韧性」。

做套利时,我通常会关注三个深度指标:

指标 含义 套利中的应用
1档深度 最优价格上的挂单量 判断能否快速成交
5档深度 前5档价格的总挂单量 估算大额订单的冲击成本
深度斜率 价格每变动1%,深度变化多少 预测价格突破时的流动性变化

避坑指南:我曾经在深度看起来很好的交易所做套利,结果一进去发现挂单全是「虚单」——那些单子在你成交前就撤了。后来我学会了看「订单簿刷新频率」,如果每秒刷新超过50次,说明有人在频繁挂撤单,这种深度不可信。

2.4 交易机制差异:不同市场的「游戏规则」

不同交易所的交易机制差异,是套利策略设计的核心。我把它总结为三个维度:

2.4.1 撮合机制

  • 连续竞价:大部分主流交易所都用这个。价格优先、时间优先。
  • 集合竞价:开盘和收盘时用。所有订单集中撮合,产生统一价格。
  • 做市商机制:有些交易所(比如某些衍生品平台)由做市商提供流动性,订单簿可能不公开。

嗯,这里要注意:做跨市场套利时,如果A交易所是连续竞价,B交易所是集合竞价,那价差信号会有「延迟」。我建议在集合竞价期间暂停套利策略。

2.4.2 订单类型

不同交易所支持的订单类型差别很大:

订单类型 说明 套利中的用途
限价单 指定价格成交 吃深度、做市
市价单 立即按最优价成交 快速建仓/平仓
冰山订单 只显示部分挂单量 隐藏真实意图
止损单 触发后变市价单 风险控制
Post-Only 只挂单不吃单 节省手续费

我个人习惯在套利时多用限价单+Post-Only。为什么?因为市价单的滑点太不可控了。有一次我用市价单在某个小交易所套利,结果滑了0.3%,直接把利润吃没了。

2.4.3 手续费结构

手续费是套利的「隐形杀手」。不同交易所的费率结构差异很大:

  • Taker/Maker模式:吃单(Taker)贵,挂单(Maker)便宜甚至返现。
  • 阶梯费率:交易量越大,费率越低。
  • VIP制度:持有平台币可以打折。

真实案例:我做过一个统计,两个交易所的BTC价差平均0.2%,但A交易所Taker费率0.1%,B交易所Maker费率-0.02%(返现)。如果策略设计成在A吃单、在B挂单,实际成本只有0.08%,净赚0.12%。但如果反过来,成本就变成0.12%,利润只剩0.08%。

2.5 微观结构对套利策略的影响

理解了上面这些,我们来看看它们如何影响套利策略的设计:

  1. 信号延迟:订单簿更新频率不同,价差信号会有几十到几百毫秒的延迟。我建议用WebSocket而不是REST API。
  2. 执行成本:买卖价差+手续费+滑点,这三项加起来可能吃掉你一半的利润。
  3. 容量限制:市场深度决定了你能做多大的仓位。深度不够,大单进去就是「砸盘」。
  4. 规则差异:有些交易所不允许某些订单类型,或者有最小价格变动单位限制。

我的建议:在写策略代码之前,先花一周时间做「微观结构分析」。把目标交易所的订单簿数据存下来,分析价差分布、深度变化、订单簿更新频率。这些数据会告诉你:这个市场到底适不适合做套利。

好了,这一章的内容就到这里。市场微观结构是套利策略的「地基」,地基不稳,楼盖得再高也会塌。下一章我们会深入具体的套利策略设计,到时候这些微观结构知识都会用上。


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