3. 撮合引擎原理
撮合引擎是交易系统的核心,它决定了订单如何被匹配、成交价格如何产生,以及订单在队列中的位置如何影响成交概率。理解撮合引擎的底层原理,是后续建立队列位置与成交概率模型的前提。本节将从撮合规则、竞价模式、队列形成机制三个层面展开,帮助读者建立完整的撮合认知框架。
一、核心原理:价格优先与时间优先
绝大多数交易所采用“价格优先、时间优先”作为基础撮合原则。其含义是:
- 价格优先:买单出价越高,优先级越高;卖单出价越低,优先级越高。最优价格的订单最先被匹配。
- 时间优先:在价格相同的情况下,先进入订单簿的订单优先成交。这直接决定了队列中的排位顺序。
这两条规则共同构成了订单簿的排序逻辑。对于买单,排序键为(价格降序,时间升序);对于卖单,排序键为(价格升序,时间升序)。任何新订单进入时,都会按照该规则插入到对应位置,形成有序队列。
关键结论:在价格相同的前提下,队列位置越靠前,成交概率越高。队列位置由订单到达时间决定,因此“时间优先”是队列位置建模的核心变量。
二、连续竞价与集合竞价
撮合引擎通常支持两种竞价模式,二者在成交机制和队列形成上存在显著差异。
| 对比维度 | 连续竞价 | 集合竞价 |
|---|---|---|
| 成交时机 | 订单到达即尝试撮合 | 集中在一个时间点统一撮合 |
| 成交价格 | 逐笔成交,价格可能连续变化 | 单一成交价,通常为最大成交量价格 |
| 队列形成 | 实时插入,队列动态变化 | 订单累积,撮合前不成交 |
| 典型场景 | 盘中连续交易时段 | 开盘、收盘、波动调节时段 |
连续竞价中,订单簿实时更新,队列位置随新订单插入和成交消耗而动态变化。集合竞价中,订单在撮合前只累积不成交,队列位置在撮合瞬间才被一次性确定。两种模式下,队列位置对成交概率的影响机制不同:连续竞价更依赖实时排位,集合竞价更依赖价格与总量的匹配关系。
三、撮合规则与队列形成机制
撮合引擎的核心流程可以概括为以下步骤:
- 订单接收与校验:检查订单合法性,包括价格、数量、账户状态等。
- 订单排序:按照价格优先、时间优先规则插入订单簿。
- 撮合匹配:将新订单与对手方最优价格订单进行匹配。
- 成交生成:生成成交记录,更新订单簿和账户余额。
- 队列更新:移除已成交订单,剩余订单重新排位。
队列形成机制的关键在于订单簿的数据结构。常见实现包括价格档位聚合和逐笔订单队列。价格档位聚合将同一价格的订单合并为一个档位,档位内按时间排序;逐笔订单队列则保留每一笔订单的独立位置。前者适合高频撮合,后者适合精细化队列位置建模。
订单簿结构示例(价格档位聚合):
{
"bids": [
{ "price": 100.5, "volume": 1200, "orders": [t1, t2, t3] },
{ "price": 100.4, "volume": 800, "orders": [t4, t5] }
],
"asks": [
{ "price": 100.6, "volume": 900, "orders": [t6, t7] },
{ "price": 100.7, "volume": 1500, "orders": [t8] }
]
}
当新买单以价格 100.6 到达时,引擎会优先匹配卖一档位 100.6 的订单。若卖一档位总量不足,则继续匹配卖二档位。成交后,卖一档位中靠前的订单被消耗,队列位置整体前移。
四、案例与场景:队列位置如何影响成交概率
假设某股票当前卖一档位价格为 100.6,共有 3 笔卖单:t6(数量 300)、t7(数量 400)、t8(数量 500)。此时新买单以 100.6 到达,数量为 500。撮合引擎会优先成交 t6 的 300 股,剩余 200 股继续成交 t7。t7 剩余 200 股留在队列中,t8 未成交。
如果新买单数量为 800,则 t6 全部成交,t7 成交 400 股,t8 成交 100 股。可以看到,队列位置越靠前,被成交的概率越高,且成交数量越完整。对于做市商或高频交易者而言,队列位置直接决定了成交率和持仓风险。
实战提示:在连续竞价中,订单簿的队列位置是动态变化的。当一笔大单成交后,后续订单会整体前移。因此,建模时需要同时考虑当前队列位置和前方订单的消耗速度。
五、常见误区与复盘
- 误区一:价格相同就一定能成交。价格相同只是进入同一队列,成交顺序仍由时间决定。队列靠后的订单可能长时间无法成交。
- 误区二:集合竞价和连续竞价的队列逻辑相同。集合竞价在撮合前不成交,队列位置在撮合瞬间才确定,不能简单套用连续竞价的实时队列模型。
- 误区三:忽略订单簿数据结构的影响。价格档位聚合与逐笔订单队列对队列位置的刻画精度不同,建模时需明确引擎实现方式。
- 误区四:只看静态队列,忽略动态消耗。前方订单的成交速度、撤单行为都会改变队列位置,静态快照无法反映真实成交概率。
复盘要点:在建立队列位置与成交概率模型时,必须明确撮合引擎的竞价模式、订单簿结构、排序规则和队列更新机制。任何一项假设偏差,都会导致概率估计失真。
综上所述,撮合引擎通过价格优先和时间优先规则,将订单组织成有序队列,并在连续竞价或集合竞价模式下完成匹配。队列位置是成交概率的核心变量,其形成和变化受订单到达、成交消耗、撤单等多种因素影响。理解这些机制,是后续建立量化模型的基础。