2. 金融市场微观结构基础

要理解 Tick 增量行情与订单簿重建,必须先回到金融市场微观结构这一层。行情数据不是凭空产生的数字流,而是交易机制运行后的“外部投影”。同样是逐笔成交,在订单驱动市场和报价驱动市场中,其含义、字段结构、更新频率和重建难度都可能完全不同。因此,本章先建立四个基础概念:订单驱动市场、报价驱动市场、限价订单簿、做市商与流动性。

一、核心原理:交易机制决定行情形态

金融市场的核心问题是:买方和卖方如何匹配,价格如何形成,流动性由谁提供。围绕这个问题,形成了两类典型市场结构。

订单驱动市场(Order-Driven Market):参与者直接提交限价单或市价单,交易系统按照价格优先、时间优先等规则撮合。买方报价和卖方报价共同构成订单簿,成交价格由买卖订单相遇决定。典型如多数股票交易所的连续竞价市场。其行情通常包括逐笔委托、逐笔成交、订单簿快照或增量更新。

报价驱动市场(Quote-Driven Market):做市商持续报出买入价和卖出价,投资者主要与做市商成交。价格由做市商报价引导,而不是由公开订单簿中所有买卖单直接撮合形成。典型如部分外汇、债券或场外市场。其行情常表现为报价流、成交流和做市商标识。

两者并非绝对互斥。现代市场常采用混合机制:既有公开限价订单簿,也有指定做市商或流动性提供者。理解这一点,对后续解析 Tick 数据至关重要,因为同一字段在不同机制下可能代表不同事件。

订单驱动市场 vs 报价驱动市场:行情生成链路 订单驱动市场 买方提交限价单/市价单 卖方提交限价单/市价单 撮合引擎:价格优先、时间优先 输出:逐笔委托、逐笔成交、订单簿 报价驱动市场 做市商持续报出买卖价 投资者接受报价并成交 做市商管理库存与风险 输出:报价流、成交流、做市商标识

二、限价订单簿:订单驱动市场的核心数据结构

限价订单簿(Limit Order Book, LOB)是订单驱动市场的核心。它记录所有未成交的限价买单和限价卖单,并按价格档位组织。通常买盘按价格从高到低排列,卖盘按价格从低到高排列,最优买价与最优卖价之间的差额就是买卖价差。

订单簿的关键字段包括:价格档位、该档位订单数量、订单总数、订单明细(订单号、方向、价格、数量、时间戳)。在 Tick 增量行情中,交易所往往不推送完整订单簿,而是推送“某档位新增、修改、删除”的增量事件。重建订单簿,就是把这些增量事件按顺序应用到本地数据结构上。

一个简化的订单簿结构可以表示为:

{
  "symbol": "600000",
  "bids": [
    {"price": 10.01, "volume": 1200, "orders": 5},
    {"price": 10.00, "volume": 3400, "orders": 12}
  ],
  "asks": [
    {"price": 10.02, "volume": 800, "orders": 3},
    {"price": 10.03, "volume": 2100, "orders": 7}
  ],
  "lastUpdateId": 1024587,
  "timestamp": 1710000000123
}

重建时必须关注两个问题:第一,增量事件是否连续,序号是否跳变;第二,本地订单簿与交易所快照是否一致。若序号断裂或快照过期,必须重新拉取快照并重放增量。

三、做市商与流动性:谁在提供可成交性

流动性是指资产能够以较低成本、较快速度、较小价格冲击完成交易的能力。它通常从三个维度衡量:宽度(买卖价差)、深度(各档位可成交量)、弹性(价格冲击后恢复速度)。

做市商是流动性的重要提供者。他们同时报出买入价和卖出价,赚取价差,并承担库存风险、逆向选择风险和信息风险。在报价驱动市场中,做市商是核心;在订单驱动市场中,做市商也可能以流动性提供者身份参与,与限价单共同构成流动性供给。

对 Tick 行情处理者而言,做市商行为会直接影响订单簿形态。例如,做市商频繁撤单和改单,会导致订单簿更新频率极高;做市商报价宽度变化,会反映市场风险偏好变化。因此,订单簿重建不仅是数据结构问题,也是市场微观结构理解问题。

维度 订单驱动市场 报价驱动市场
价格形成 买卖订单撮合决定 做市商报价引导
核心数据 逐笔委托、逐笔成交、订单簿 报价流、成交流、做市商标识
流动性来源 限价单、市价单、做市商 做市商为主
行情更新 高频、增量、序号敏感 报价驱动、频率相对稳定
重建难点 增量顺序、快照一致性、撤改单 报价归属、成交确认、做市商状态

四、案例与场景:一次订单簿重建中的微观结构判断

假设我们接收某股票 Tick 增量行情,发现卖一价从 10.02 变为 10.03,同时卖一量从 800 变为 2100。若只做数据更新,这只是两个字段变化。但从微观结构看,可能有两种解释:一是原卖一订单被撤,新卖一订单进入;二是原卖一成交后,下一档成为最优卖价。两者对订单簿重建逻辑影响不同。

如果交易所推送的是“订单删除”事件,我们需要从对应档位扣减数量;如果推送的是“成交”事件,我们还需要同步更新成交量、成交额和最新价。若忽略事件类型,只按价格档位覆盖,就会导致订单簿数量错误,进而影响后续策略信号。

实战提示:订单簿重建时,建议同时维护“价格档位聚合视图”和“订单明细视图”。聚合视图用于快速计算盘口,明细视图用于处理撤单、改单和部分成交。两者通过订单号关联,才能保证增量应用准确。

五、常见误区与复盘

  • 误区一:把报价驱动市场的报价流当成订单簿。报价流只有做市商买卖价,不代表全市场未成交订单。直接套用订单簿重建逻辑会失真。
  • 误区二:忽略序号连续性。增量行情一旦丢包或乱序,本地订单簿就会与交易所不一致。必须校验序号,并在断裂时重新同步。
  • 误区三:只关注价格,不关注数量与订单数。流动性不仅看价格,还看深度。数量变化往往比价格变化更早反映流动性枯竭。
  • 误区四:把做市商报价当作普通限价单。做市商报价可能包含隐藏数量、保护价差和库存管理逻辑,需结合市场规则理解。

复盘要点:任何订单簿重建系统,都应具备三项能力:第一,识别市场类型与行情协议;第二,按事件类型正确应用增量;第三,在序号断裂或快照过期时自动恢复。缺少任何一项,Tick 数据都可能从“行情”变成“噪声”。

总结来看,订单驱动市场与报价驱动市场决定了行情数据的底层形态;限价订单簿是订单驱动市场的核心结构;做市商与流动性概念则帮助我们理解谁在提供可成交性、为什么订单簿会频繁变化。掌握这些微观结构基础,后续的 Tick 增量解析、订单簿重建、盘口计算和策略信号构建才有稳固的根基。