订单簿微观结构:限价订单簿(L2/L3)、订单簿动态变化、盘口深度与价差、订单簿重建与快照

做市的核心,说白了就是跟订单簿打交道。

你每天盯着的那个买卖盘口,背后是一套精密的微观结构。我做了这么多年量化,见过太多人把订单簿当成一个静态的快照来看,结果策略一上线就亏钱。为什么?因为订单簿是活的,它在每一毫秒都在变化。

限价订单簿:L2 与 L3 的区别

先搞清楚两个概念:L2 和 L3。很多人混着用,其实差远了。

L2 数据,也叫市场深度数据。它告诉你每个价位上有多少挂单量。比如买一价 10.00 有 1000 股,买二价 9.99 有 2000 股…… 但它不告诉你这些单子是谁挂的,也不区分是机构单还是散户单。

L3 数据,那就细多了。它能看到每笔订单的详细信息——订单 ID、时间戳、买卖方向、价格、数量,甚至能追踪到这笔单子是被部分成交了还是撤单了。我在做高频做市的时候,L3 是必须的。没有 L3,你根本看不清对手在干什么。

核心区别一句话:L2 告诉你「有多少」,L3 告诉你「是谁、什么时候、干了什么」。

举个例子。你看到买一价突然多了 5000 手挂单。L2 只能告诉你「深度增加了」。但 L3 能告诉你:这 5000 手是同一个订单 ID 挂出来的,而且这个 ID 之前一直在撤单重挂。嗯,这大概率是个做市商在刷单,不是真实买盘。

订单簿的动态变化:事件驱动

订单簿不是静态的。它每时每刻都在被事件驱动着变化。我个人习惯把订单簿事件分成四类:

  • 新增订单:一个新限价单进入队列
  • 成交:买卖双方匹配,订单从队列中移除
  • 撤单:订单被取消,从队列中删除
  • 修改:订单价格或数量变更(有些交易所拆成撤单+新增)

你想想看,每一笔事件都在改变订单簿的「形状」。做市策略的核心,就是预测下一个事件是什么,以及它会对价格产生什么影响。

我曾经踩过一个坑:在某个交易所,撤单事件的处理顺序跟我想的不一样。我以为先撤单再新增,结果它是先新增再撤单。就差了这么几微秒,我的策略在盘口剧烈波动时连续吃错方向,一天亏了十几万。从那以后,我养成了一个习惯——拿到任何交易所的 API 文档,第一件事就是看事件处理顺序。

注意:不同交易所的事件处理顺序可能不同。比如币安的撮合引擎和 Coinbase 的撮合引擎,对同一时间戳的订单处理逻辑就不一样。做跨所套利时,这个细节能要命。

盘口深度与价差

盘口深度,就是每个价位上的挂单总量。价差,就是最优卖价和最优买价之间的差值。

这两个指标,是做市策略最直接的输入。我一般会关注三个维度:

指标 含义 做市中的应用
盘口深度 各价位挂单量分布 判断流动性是否充足,决定挂单间距
价差 最优买卖价差 决定做市利润空间,价差越窄竞争越激烈
深度斜率 深度随价格变化的速率 判断市场是否容易出现滑点

价差这个东西,很有意思。你以为价差越小越好?不一定。我记得有一次在某个流动性极好的品种上做市,价差只有 0.01 元,但每笔成交的利润几乎为零,扣除手续费还在亏。反而是那些价差稍大、但深度稳定的品种,做起来更舒服。

说白了,价差是收益,深度是安全垫。两者要平衡。

订单簿重建与快照

这是做市系统里最容易出 bug 的地方,没有之一。

订单簿重建,指的是从零开始重新构建一个完整的订单簿。什么时候需要重建?

  • 系统启动时
  • 网络断开重连后
  • 检测到数据不一致时

重建的方式有两种:

  1. 全量快照 + 增量更新:先拿一个完整的订单簿快照,然后不断应用后续的增量事件。这是最常用的方式。
  2. 全量重建:从头到尾拉取所有订单数据。这种方式慢,但最可靠。

我建议你用第一种。但要注意一个关键问题——快照和增量事件之间不能有缝隙。我曾经在对接某家交易所时,快照拿到的是 T 时刻的,但增量事件从 T+1 开始,中间丢了一个事件。结果订单簿里的总挂单量跟交易所对不上,策略直接崩了。

我的经验:重建时一定要做校验。拿到快照后,先算一下总挂单量,然后每处理 1000 个增量事件就再算一次。如果对不上,立即报警并触发全量重建。这个校验逻辑,我建议你写在系统的最底层,不要依赖上层业务逻辑。

快照的生成频率也很关键。太频繁了浪费带宽,太稀疏了重建时间太长。我个人习惯是每 10 秒生成一次快照,同时保留最近 3 个快照。这样即使某个快照损坏了,还能用上一个。

嗯,这里要注意:快照本身也有大小。一个深度较深的订单簿,快照可能有几百 KB。如果你做的是跨所做市,同时维护 10 个交易所的订单簿,快照的存储和传输开销不能忽视。

小结

订单簿微观结构,是做市算法的地基。L2 和 L3 的区别要搞清楚,事件驱动的逻辑要理清,盘口深度和价差要实时监控,订单簿重建的容错机制要设计好。

这些听起来都是基础,但我在实际项目中见过太多人在这上面翻车。记住一句话:订单簿是你做市策略的「眼睛」,眼睛出了问题,再聪明的策略也是瞎的。