3. 集合竞价撮合原理与价格确定
集合竞价与连续竞价最大的区别在于:它不按“先到先得、逐笔撮合”的方式成交,而是在一个时间窗口内先把所有买卖申报收集起来,等到撮合时点一次性集中匹配,最终只产生一个成交价格。因此,理解集合竞价的关键,不是盯着某一笔委托,而是理解“在哪个价位上能成交最多、剩余最少、谁先谁后”。本节围绕最大成交量原则、最小剩余量原则以及价格优先与时间优先在集合竞价中的具体应用展开,并给出可复算的计算示例。
一、集合竞价的撮合目标:先定价格,再定成交
集合竞价撮合可以拆成两个阶段。第一阶段是价格确定:在所有可能的申报价格中,选出一个能够使成交量最大的价格作为成交价。第二阶段是成交分配:在确定的成交价上,按照价格优先、时间优先的规则决定哪些申报成交、成交多少。这个顺序非常重要——集合竞价不是先按时间排队再逐笔成交,而是先由全体申报共同决定一个价格,再在这个价格上分配成交量。
设某一时刻的买单集合为 B,卖单集合为 S。对任意候选价格 P,能够成交的买盘是“买价 ≥ P”的申报总量,能够成交的卖盘是“卖价 ≤ P”的申报总量,两者取较小值即为该价格下的可成交量:
可成交量(P) = min( Σ 买价≥P 的买入数量, Σ 卖价≤P 的卖出数量 )
剩余量(P) = | Σ 买价≥P 的买入数量 − Σ 卖价≤P 的卖出数量 |
把所有候选价格的可成交量算出来,取最大者对应的价格,就是最大成交量原则选出的价格。如果出现多个价格的可成交量相同,则进入最小剩余量原则进行二次筛选。
二、最大成交量原则与最小剩余量原则
最大成交量原则是集合竞价价格确定的第一准则:成交价应使市场在该价位上实现的成交量最大。它体现的是“让尽可能多的申报得到满足”的公平性。直观上,成交价会落在买卖申报重叠最密集的区间内。
最小剩余量原则是第二准则:当多个候选价格的可成交量相同时,选择未成交量(剩余量)最小的价格。剩余量越小,说明该价位上买卖力量的匹配程度越高,价格越接近真实均衡。若仍有多个价格满足,则通常再按“高于参考价的价格优先”或交易所规定的其他规则确定,具体以交易所规则为准。
三、价格优先与时间优先在集合竞价中的具体应用
成交价 P 确定后,所有买价 ≥ P 的买单和所有卖价 ≤ P 的卖单都具备成交资格。此时按以下顺序分配:
- 价格优先:买方出价越高越优先成交,卖方要价越低越优先成交。例如买价 P+0.02 的委托优先于买价 P 的委托;卖价 P−0.01 的委托优先于卖价 P 的委托。
- 时间优先:在同一价格上,申报时间早的优先成交。时间以交易所接收申报的时间为准。
- 成交量分配:按上述优先级依次满足,直到可成交量被分配完。处于成交价边缘、未能全部成交的申报,按剩余可成交量部分成交。
需要注意,集合竞价中“价格优先”的含义与连续竞价略有不同:连续竞价是逐笔比价成交,而集合竞价中价格优先只影响成交价确定后的分配顺序,所有优于成交价的申报都会成交,只有等于成交价的申报才可能部分成交。
四、计算示例:一个可复算的撮合过程
假设某标的集合竞价阶段收到如下申报(示例数据,仅用于演示计算):
| 买方申报 | 价格 | 数量 | 卖方申报 | 价格 | 数量 |
|---|---|---|---|---|---|
| B1 | 10.05 | 200 | S1 | 10.00 | 300 |
| B2 | 10.03 | 300 | S2 | 10.02 | 200 |
| B3 | 10.01 | 400 | S3 | 10.04 | 400 |
| B4 | 10.00 | 500 | S4 | 10.06 | 300 |
对候选价格逐一计算可成交量。以 P=10.02 为例:买价 ≥ 10.02 的有 B1(200)、B2(300),合计 500;卖价 ≤ 10.02 的有 S1(300)、S2(200),合计 500;可成交量 = min(500,500)=500,剩余量 = 0。再算 P=10.01:买盘 B1+B2+B3=900,卖盘 S1+S2=500,可成交量 500,剩余量 400。P=10.03:买盘 B1+B2=500,卖盘 S1+S2=500,可成交量 500,剩余量 0。P=10.00:买盘全部 1400,卖盘 S1=300,可成交量 300。
可见 P=10.02 与 P=10.03 的可成交量都是 500,且剩余量都为 0,出现并列。此时按最小剩余量原则仍无法区分,需按交易所补充规则处理(例如取接近参考价或较高价格)。假设规则取较高价,则成交价定为 10.03。
成交价 10.03 确定后分配成交量:买方中 B1(10.05) 价格优先于 B2(10.03),B1 全部成交 200;B2 与成交价相同,成交 300 中的剩余可成交量 300,恰好全部成交。卖方中 S1(10.00)、S2(10.02) 均优于成交价,全部成交,合计 500,与买方 500 匹配。S3(10.04) 高于成交价,不成交。整个过程成交量 500,剩余量为 0。
五、工程实现中的几个易错点
在订单簿重建系统中处理集合竞价时,有几个细节容易出错。第一,候选价格集合应取所有申报价格,而不是人为设定的价格网格,否则可能漏掉真实的最大成交量价位。第二,累计量的计算方向要统一:买盘按价格从高到低累加,卖盘按价格从低到高累加,再逐价位比较,避免方向混淆导致成交量算反。第三,并列处理必须严格按交易所规则实现,不同市场对最小剩余量之后的补充规则可能不同,不能想当然。第四,成交价确定后,要重新按价格优先、时间优先分配成交量,而不是简单按比例分配,否则会破坏撮合公平性。
此外,集合竞价结束后,未成交的申报通常进入连续竞价阶段继续参与撮合,因此重建订单簿时需要把集合竞价的成交结果与剩余挂单正确衔接:已成交部分从订单簿中扣除,未成交部分保留其原始价格和时间戳,作为连续竞价的初始订单簿状态。这一步处理不当,会导致后续连续竞价的订单簿深度和成交序列出现偏差。
掌握上述原理后,集合竞价就不再是一个“黑箱时点”,而是一个可以逐步复算的过程:收集申报、枚举候选价格、计算可成交量与剩余量、确定成交价、按优先级分配成交、衔接剩余挂单。这条链路也是订单簿重建中处理集合竞价数据的核心逻辑。