2. 市场微结构基础

订单流分析的一切结论,最终都要落到一个具体的交易对象上——订单簿。如果不理解订单簿如何组织、限价单与市价单如何相互作用、价差与流动性如何形成,那么后面看到的“买卖不平衡”“价格压力”就只是没有物理意义的数字。本节先把这块地基打牢,并给出可以直接用于观察和计算的参数口径。

一、订单簿:两个方向、两个价格维度

订单簿(Order Book)是某一时刻市场上所有未成交委托的集合,按方向分为买盘(Bid)与卖盘(Ask)。买盘是“愿意买”的委托,卖盘是“愿意卖”的委托。关键约定:买盘价格永远低于卖盘价格,两者之间的空隙就是价差。全文统一采用“买低卖高”的参照系,即买一价 < 卖一价,不做方向翻转。

订单簿有两个价格维度需要区分清楚:

  • 最优价(Best Price):买一价(Best Bid)是当前最高的买价,卖一价(Best Ask)是当前最低的卖价。这两个价格构成“盘口”。
  • 深度价(Depth Price):买二、买三……卖二、卖三……越往外价格越差。深度反映的是“如果吃掉盘口,下一档在哪里、有多少量”。

每个价位上挂着的数量称为档位量(Level Size)。订单簿的完整状态可以概括为:买盘从高到低排列的(价格,数量)序列,卖盘从低到高排列的(价格,数量)序列。实际系统中通常只保留前 N 档(如 10 档或 20 档),因为更远的档位对短期价格压力的影响迅速衰减。

二、限价单与市价单:谁提供流动性,谁消耗流动性

限价单(Limit Order)指定价格,挂在订单簿上等待成交,提供流动性。市价单(Market Order)不指定价格,立即以对手方最优价成交,消耗流动性。这是理解订单流不平衡的核心二分法。

举例说明:假设某标的盘口为买一 100.00(挂 500 手)、卖一 100.02(挂 300 手)。此时来了一笔 400 手的市价买单,它会先吃掉卖一 300 手,剩余 100 手继续向上吃卖二(假设卖二 100.03 挂 200 手),成交后卖一变为 100.03、挂 100 手。这个过程叫“扫单(Sweep)”,它直接推动了价格上涨,是价格压力的直接来源。

反过来,如果来的是限价买单挂在 100.01,它不会立即成交,而是进入买盘,使买一变为 100.01(挂若干手),价差从 0.02 收窄到 0.01。限价单改变的是“未来可能成交的意愿分布”,市价单改变的是“已经发生的成交”。订单流不平衡指标本质上是在统计这两类行为的净方向。

实操口径:在逐笔数据中,通常用“主动买/主动卖”标记市价单方向——成交价等于卖一价记为主动买(买方发起),成交价等于买一价记为主动卖(卖方发起)。这是后续计算订单流不平衡(OFI)的基础字段。

三、买卖价差与流动性:成本与容量的两面

买卖价差(Bid-Ask Spread) = 卖一价 − 买一价。它是最直接的交易成本度量:市价单穿越价差才能成交,价差越宽,往返成本越高。价差通常用绝对值和相对值两种口径:

  • 绝对价差:如 0.02 元;
  • 相对价差:绝对价差 ÷ 中间价((买一+卖一)/2),如 0.02 ÷ 100.01 ≈ 2 个基点(bp)。

流动性(Liquidity)不是单一数字,至少包含三个可观察维度:

  • 紧度(Tightness):价差有多窄,越窄越“紧”;
  • 深度(Depth):盘口各档挂单量有多大,越厚越能承接大单;
  • 弹性(Resiliency):被大单冲击后,订单簿多快恢复。这一维需要看时间序列,单帧快照看不出来。

一个常见的误判是“价差窄就等于流动性好”。实际上价差窄但盘口只有几十手,一笔中等市价单就能把价格打穿好几档,这种“薄盘口”在压力测试中会迅速暴露。因此评估流动性要同时看价差和深度,必要时用“冲击成本”来量化:给定一笔市价单,计算其成交均价与下单前中间价的偏离,偏离越大说明流动性越差。

四、把结构关系画清楚

下图把订单簿的买卖两侧、限价单与市价单的作用方向、价差与深度的位置关系整合在一张结构图中,便于对照理解:

订单簿结构与订单类型作用关系 卖盘 Ask(卖方挂单) 卖三 100.04 150 手 卖二 100.03 200 手 卖一 100.02(最优卖价) 300 手 越往上价格越高、越难成交 买卖价差 = 100.02 − 100.00 = 0.02 买盘 Bid(买方挂单) 买一 100.00(最优买价) 500 手 买二 99.99 400 手 买三 99.98 350 手 越往下价格越低、越难成交 限价单 Limit Order • 指定价格,挂入订单簿等待 • 提供流动性,改变深度分布 • 例:挂买 100.01 → 价差收窄 作用:塑造未来成交意愿 市价单 Market Order • 不指定价格,立即吃对手盘 • 消耗流动性,产生主动成交 • 例:400 手买单扫穿卖一卖二 作用:直接推动价格变化 市价买 向上扫单 市价卖 向下扫单 流动性三要素:紧度(价差窄)· 深度(挂单厚)· 弹性(受冲击后恢复快)

五、从结构到可计算字段

把上述概念落到数据字段,是后续构建价格压力特征的前提。以逐笔委托与逐笔成交数据为例,至少需要以下字段:

字段含义用途
bid_px_1 / ask_px_1买一价 / 卖一价计算价差、中间价
bid_sz_1 / ask_sz_1买一量 / 卖一量盘口不平衡
bid_px_i / ask_px_i(i=1..N)第 i 档价格深度与冲击成本
trade_px / trade_sz成交价 / 成交量主动买卖判定
side主动方向(买/卖)订单流不平衡

一个可直接使用的中间价与相对价差计算口径如下(示例参数,非实测):

mid = (bid_px_1 + ask_px_1) / 2
spread_abs = ask_px_1 - bid_px_1
spread_bp = spread_abs / mid * 10000

# 盘口不平衡(示例:仅用一档)
obi_1 = (bid_sz_1 - ask_sz_1) / (bid_sz_1 + ask_sz_1)

# 冲击成本示例:400 手市价买,吃卖一300手@100.02、卖二100手@100.03
avg_px = (300*100.02 + 100*100.03) / 400   # = 100.0225
impact_bp = (avg_px - mid) / mid * 10000

以图中盘口为例,mid = 100.01,spread_bp ≈ 2.0 bp,obi_1 = (500−300)/(500+300) = 0.25,说明买盘一档偏厚,短期存在向上支撑的倾向;而 400 手市价买的冲击成本约为 (100.0225−100.01)/100.01×10000 ≈ 1.25 bp,这个数字同时受价差和深度影响,比单看价差更能反映真实交易代价。

注意:盘口不平衡只反映“挂单意愿”,不等于“必然成交”。挂单可以撤单,尤其在价格接近时撤单率很高。因此订单流不平衡指标必须结合主动成交数据一起看,单看挂单量容易被虚假挂单误导。

六、本节要点回顾

订单簿是买盘与卖盘按价格排列的未成交委托集合,买一与卖一构成盘口,其差为价差;限价单提供流动性、市价单消耗流动性并直接推动价格;流动性需同时看紧度、深度与弹性三个维度。把这些结构转成 bid/ask 价格与数量、成交方向等字段后,才能进一步计算盘口不平衡、订单流不平衡与冲击成本,为价格压力特征提供有物理意义的输入。