09:31:12,上海。一家百亿私募基金的执行交易员盯着 300ETF 的五档行情:买一 3.842 / 卖一 3.843,盘口报价价差正好 1 个最小变动单位(¥0.01)。她接到投资经理的指令——今天午前买入 300ETF 1,200 万元,相对成本最低。她有三个选项:直接挂市价单一次性扫掉对手方深度;在买一价格挂限价单等市场来撮合;或者把单子切成 50 份分钟级 IOC 限价单。每一种选择都是一个权衡:价格确定性、成交确定性、信息泄露、队列位置——一个都不能省。
上一节我们说市场是「撮合 + 结算 + 行情」的流程。这一节把镜头推到撮合引擎正前方:限价订单簿(limit order book)。订单类型是你和撮合引擎对话的语法,订单簿是它当前的状态,撮合规则是状态转换函数。把这三件事拆开看,下一节的买卖价差才有机械层面的根。
1. 订单簿是什么
把所有「我愿意以价格 买入数量 」「我愿意以价格 卖出数量 」的承诺按价格分桶、桶内按到达时间排队,得到的双边队列就是订单簿(order book)。具体到 SSE 的 300ETF:
卖五 3.847 × 120,000
卖四 3.846 × 85,000
卖三 3.845 × 60,000
卖二 3.844 × 45,000
卖一 3.843 × 30,000 ← 最优卖价(best ask)
———————————————————————————
买一 3.842 × 28,000 ← 最优买价(best bid)
买二 3.841 × 50,000
买三 3.840 × 70,000
买四 3.839 × 95,000
买五 3.838 × 110,000
读这张深度快照只需要四个数字:
- 最优买价(best bid):3.842
- 最优卖价(best ask):3.843
- 中间价(mid-price):
- 买卖价差(bid-ask spread):(正好一个最小变动单位 tick size,刚性触底)
这是订单簿的「快照」视图。撮合引擎不存图片,它存的是上面这张表的实时版本,每秒钟可能被几万笔事件改写:新挂单进队、旧挂单成交离开、撤单从中间拔走。
2. 七种基本订单类型
订单类型的本质是一句指令:你告诉撮合引擎「我要做 X,但你不允许 Y」。每一种类型都在「价格确定性」和「成交确定性」之间画线。下表按这个轴排:
| 类型 | 价格保证 | 成交保证 | 主要风险 |
|---|---|---|---|
| 市价单(market) | 无 | 强(只要簿中有量) | 跨过未知深度,跌穿多档 |
| 限价单(limit) | 强(不会差于 ) | 弱(可能不成交) | 队列里排到尾巴,被反向行情冲走 |
| 停损单(stop) | 触发后等同市价 | 触发后强 | 触发瞬间的滑点 |
| 停损限价(stop-limit) | 触发后等同限价 | 触发后弱 | 触发但限价不到,挂着不成交 |
| 冰山单(iceberg / hidden) | 同限价 | 同限价 | 显示量小,可能错过快速行情 |
| IOC(immediate-or-cancel) | 同限价 | 立即成交可成交部分,剩余撤单 | 信息泄露:未成交部分暴露意图 |
| FOK(fill-or-kill) | 同限价 | 全成交或全撤单 | 任何缺口都触发整单撤销 |
A 股的市价单实际上是限价单的封装。SSE / SZSE 提供五种市价子类型——本方最优价(按本方对手方)、对手方最优价、最优五档即时成交剩余撤销、最优五档即时成交剩余转限价、全额成交或撤销——每一种都是一句更精确的「我要市价,但你不许跨过这个保护带」。境内现货 A 股不原生支持停损单,券商在客户端模拟:客户端持续轮询行情,触发条件后再向交易所发限价单或市价单。
美股 NYSE / NASDAQ 提供原生市价、限价、停损、停损限价、按盯(peg,挂在 NBBO 上 / 中 / 下)、收盘市价(market-on-close)、收盘限价(limit-on-close)、储备单(reserve / iceberg,显示量 + 隐藏量)。Reg NMS Rule 612 规定股价 ≥ 0.01,禁止次美分价格挂单。
3. 价格-时间优先(price-time priority)
撮合引擎面对的核心问题:当一笔买入市价单进来要吃 25,000 股,订单簿上的卖一 30,000 股是 4 笔挂单组成的队列,谁先成交?
A 股、NYSE、NASDAQ 现货股票几乎都用同一条规则:价格优先,时间优先(price-time priority)。
- 价格优先:买方按价格从高到低排,卖方按价格从低到高排——一个 3.844 的限价买单一定排在 3.842 之前。
- 时间优先:同价位上,先到的先成交,后到的排在它后面——这就是队列位置(queue position)。
队列位置决定成交概率。同样挂在卖一 3.843 的 30,000 股深度里,如果你的 5,000 股是当天第三个到的,前面已经有 12,000 股;那么必须先让市场吃掉这 12,000 股,你的 5,000 才能开始成交。如果中间行情上行,3.843 这一档撤单或被吃完,你的整单可能根本不成交。
注意一个反例:部分期货市场(包括 CME 部分合约、CFFEX 主力合约的一些时段)使用按比例分配(pro-rata)——同价位上按挂单量比例分配进单。这意味着挤队列不再有意义,但深度伪装变成了新的策略空间。本课只在 A 股 / 美股现货语境下讨论,记住「价格-时间优先是默认,pro-rata 是少数例外」即可。
A 股的集合竞价是另一种特例。09:15–09:25 和 14:57–15:00 期间所有订单进入同一个池子,9:25 / 15:00 一次性以「最大成交量价格」撮合——这一秒里所有买卖单同时比较价格,不存在时间优先。集合竞价产生的开盘价 / 收盘价由全市场单次撮合确定,是订单簿日内连续撮合两端的特殊节点。
4. 一笔市价买单的逐档成交
回到开头那位执行交易员。她最终决定先发一笔 25,000 股的市价买单试盘。市价单进入撮合引擎的瞬间,引擎按下面的顺序执行:
订单簿初始状态(卖方):
卖一 3.843 × 30,000 (队列:8000 + 12000 + 5000 + 5000)
卖二 3.844 × 45,000
卖三 3.845 × 60,000
她的市价买单 25,000 股,没有价格上限(按 A 股语义是「对手方最优价 + 保护带」,本例假设保护带足够宽,等同于扫盘):
- 撮合引擎检查卖一 3.843:可用 30,000 股 > 待买 25,000。
- 按时间优先消化卖一队列:吃掉 8,000(第 1 笔)+ 12,000(第 2 笔)+ 5,000(第 3 笔)= 25,000 股。
- 这笔市价单全部以 3.843 成交。整单的成交均价 = ¥3.843,对应通知 = 4 笔成交回报(每一笔来自卖一队列的一段挂单)。
- 行情磁带(tape)输出 25,000 股 × ¥3.843 的成交记录。
成交后的订单簿(卖方):
卖一 3.843 × 5,000 (只剩第 4 笔的 5000 股)
卖二 3.844 × 45,000
卖三 3.845 × 60,000
买方一侧无变化。最优买卖价 = 3.842 / 3.843,盘口报价价差仍是 1 tick。注意三件事:
- 这笔市价单没有改变最优卖价,只是吃薄了卖一深度。
- 如果待买的是 35,000 股,撮合会跨档:先扫光卖一 30,000 股 @ 3.843,再吃卖二 5,000 股 @ 3.844;成交均价 = ,新的最优卖价变成 3.844——这就是市价单的「价格滑点」。
- 成交均价对买方而言是深度加权价(depth-weighted price),是评估单笔执行的标准基准。
5. 限价单的另一面:你在买队列位置
把场景翻过来:同一位交易员决定不扫盘,而是挂限价买单 25,000 股 @ 3.842。订单进入买一队列尾部:
买一 3.842 × 53,000 (原 28,000 + 新 25,000;你的 25,000 排在 28,000 之后)
你换来了价格确定性(最多付 3.842,比扫盘的 3.843 省一档),代价是成交确定性的丧失。你的 25,000 股有没有机会成交,取决于两件事:
- 在 3.842 这档上有多少卖方愿意主动来打你——这是被动等成交。
- 行情会不会下行让 3.842 变成新的最优卖价——如果行情不动,你只是被动等卖方市价单上门。
如果在你等待期间出现 35,000 股市价卖单到达买一:
- 吃掉队列前端的 28,000(不是你的)。
- 继续吃掉你队列里的前 7,000 股。
- 剩 18,000 仍排队。
你部分成交 7,000 股 @ 3.842。这就是队列位置的价值:同样挂在 3.842,先到的人成交了 28,000 股,你只成交了 7,000 股。
6. 练习
Exercise
下面是 SSE 上 300ETF 的一个五档快照:
卖五 3.847 × 120,000
卖四 3.846 × 85,000
卖三 3.845 × 60,000
卖二 3.844 × 45,000
卖一 3.843 × 30,000 (时间顺序:A=10000, B=8000, C=12000)
———————————————————————————
买一 3.842 × 25,000 (时间顺序:D=10000, E=15000)
买二 3.841 × 50,000
买三 3.840 × 70,000
按下面顺序事件分别发生,请逐笔回答 (a) 是否成交、成交多少股、成交均价多少;(b) 事件结束后新的最优买价 / 最优卖价;(c) 用一句话解释为什么。
- 一笔市价买单 18,000 股到达。
- 接着一笔限价买单 12,000 股 @ 3.844 到达。
- 接着一笔市价卖单 40,000 股到达。
提示
按价格优先 → 时间优先两步走:先看待入单是买还是卖,再决定从订单簿的哪一侧吃起;同价位上严格按队列前后顺序消化。事件 2 的限价买单 @ 3.844 进入时会立刻和卖一对撞,因为它的买价 ≥ 卖一的 3.843。
提示
事件 3 的市价卖单 40,000 股要跨档:买一 3.842 的剩余深度只够吃一部分(注意事件 2 的影响可能改变了买一深度),剩下要吃买二 3.841。成交均价是深度加权价,不是最低成交价。事件后的最优买价会跌到买二原本的价位(如果买一被扫光)。
7. 下一节:价格形成与买卖价差
到这里你能读懂订单簿、说出每一种订单类型的取舍、按价格-时间优先预测撮合结果。我们一直把买卖价差当作「最优卖 - 最优买」的算术结果,但下一节要问的是经济学问题:为什么会有价差?谁在维持它?做市商挂在两边赚的是什么钱?同一只标的的价差为什么有时 1 tick 触底,有时撑到 5 tick 宽?答完这些,你才真正理解订单簿背后的价格形成过程。