2. 集合竞价订单类型与订单簿状态
集合竞价阶段与连续竞价阶段最大的差别,不在于“撮合算法”本身,而在于订单簿在撮合前是持续累积的,撮合时是一次性集中匹配的。因此,理解集合竞价,必须同时理解两件事:哪些订单可以进入集合竞价订单簿,以及订单簿在开盘前、撮合中、撮合后分别处于什么状态。本节围绕这两条主线展开。
一、三类订单在集合竞价中的准入规则
从订单簿重建的角度,进入集合竞价的订单首先要按类型分流。常见类型包括限价单、市价单和特殊订单(如即时成交剩余撤销 IOC、全额成交或撤销 FOK、本方最优/对手方最优等)。它们在集合竞价中的处理规则差异很大,重建时必须逐类判断。
限价单是集合竞价订单簿的主体。它带有明确价格,进入订单簿后按价格优先、时间优先排队,参与集合竞价统一撮合。重建时,限价单需要完整保留价格、数量、方向、到达时间四个字段,因为集合竞价的成交价由“最大成交量原则”决定,而每个限价单是否成交、成交多少,取决于它与虚拟成交价的位置关系。
市价单在集合竞价中通常不进入订单簿排队,而是作为“价格不确定的流动性需求”参与撮合。多数交易所规定:集合竞价阶段市价单在撮合时以对手方最优价格成交,剩余部分按规则处理(撤销或转为限价)。重建时不能把市价单简单塞进价格档位,而应单独标记为“市价委托”,在撮合计算中作为不计价的买方/卖方需求参与最大成交量求解。
特殊订单需要逐条对照规则。以 IOC 为例,它在集合竞价中若不能立即全部成交,剩余部分撤销,因此它不会在订单簿中留下挂单;FOK 则要求一次性全部成交,否则整单撤销。重建时若把 IOC 当作普通限价单挂入订单簿,会虚增订单簿深度,导致虚拟成交价计算错误。这是集合竞价重建中最常见的错误之一。
二、订单簿在集合竞价各阶段的状态变化
集合竞价不是一瞬间完成的,订单簿会经历“累积—冻结—撮合—释放”四个状态。下图展示了这一状态流转以及各状态下订单簿中实际存在的内容。
累积阶段,订单簿是“活的”:限价单按价格档位不断增厚,市价单以独立标记存在,特殊订单按规则决定是否入簿。冻结阶段,交易所停止接单,对订单簿做一次快照,并基于快照计算虚拟成交价与最大成交量。撮合阶段,所有可成交订单按虚拟价集中匹配,限价单按价格优先、时间优先成交,市价单以对手方最优价参与,IOC/FOK 在此判定去留。释放阶段,未成交的限价挂单转入连续竞价订单簿,撤销类订单移出,订单簿重建到此收口。
三、重建时的关键判断与示例
假设某标的集合竞价快照如下(示例数据,仅用于说明计算逻辑):卖档 10.02×300、10.01×500;买档 10.00×400、9.99×600;另有市价买 200。按最大成交量原则,虚拟价取 10.01 时,买方愿意以不低于 10.01 成交的数量为 0(买档最高仅 10.00),卖方愿意以不高于 10.01 成交的数量为 800,成交量受买方限制为 0;虚拟价取 10.00 时,买方 400,卖方 800,成交量 400;虚拟价取 9.99 时,买方 1000,卖方 800,成交量 800。可见最大成交量出现在 9.99,成交量 800。此时市价买 200 也参与买方需求,实际买方需求为 1200,卖方 800,成交量仍为 800,成交价 9.99。
这个例子说明:市价单虽然不挂在价格档位上,但它会改变买方需求曲线,从而影响最大成交量的位置。重建时若漏掉市价单,虚拟价可能算错。同理,若把 IOC 当成普通限价单挂入卖档,会虚增卖方供给,同样导致虚拟价偏移。
最后需要强调,集合竞价的订单簿状态是阶段性快照,不是连续演化的。重建系统应当以冻结时刻的快照为准,而不是用累积阶段的中间状态去推算成交结果。只有把订单类型准入规则与四阶段状态变化对齐,订单簿重建才能在集合竞价环节做到成交价、成交量、未成交挂单三者的可追溯与可校验。