3. 竞价价格的形成过程解析
集合竞价并不是“先到先得”的排队成交,而是一次性把所有有效申报集中起来,按一套明确的规则计算出一个统一成交价,再让所有满足条件的买卖申报以该价格成交。理解这个过程,关键要抓住三件事:最大成交量原则决定价格落在哪个价位,价格优先决定谁先被满足,时间优先决定同价位下谁排在前面。开盘竞价与收盘竞价在撮合算法上基本一致,差别主要体现在申报时段、是否允许撤单以及行情披露节奏上。
一、撮合原则:先定价格,再定成交对象
集合竞价的撮合可以拆成两个阶段。第一阶段是“定价”:系统对每一个可能的价格逐一试算,统计在该价位上能够成交的数量,选出成交量最大的那个价位作为成交价。第二阶段是“分配”:以该成交价为准,所有买入申报价不低于成交价、卖出申报价不高于成交价的申报都具备成交资格,再按价格优先、时间优先排序,逐笔配对直到一方耗尽。
这里有一个容易被忽略的细节:成交量最大并不等于“所有能成交的都成交”。在成交价上,买卖双方中至少有一方的申报会被全部满足,另一方则可能部分成交。未被满足的部分不会顺延到连续竞价,而是直接失效——这正是集合竞价与连续竞价在订单处理上的根本区别。
二、最大成交量定价:用试算表看清价格怎么选出来
假设某标的在开盘集合竞价阶段收到如下申报(示例数据,仅用于说明算法):
| 方向 | 申报价(元) | 数量(手) |
|---|---|---|
| 买入 | 10.20 | 300 |
| 买入 | 10.10 | 500 |
| 买入 | 10.00 | 400 |
| 卖出 | 9.90 | 200 |
| 卖出 | 10.00 | 600 |
| 卖出 | 10.10 | 500 |
对每个候选价位,可成交量 = min(该价位及以上的买入累计量,该价位及以下的卖出累计量)。以 10.00 元为例:买入累计为 300+500+400=1200 手,卖出累计为 200+600=800 手,可成交 800 手。以 10.10 元为例:买入累计 800 手,卖出累计 200+600+500=1300 手,可成交 800 手。以 9.90 元为例:买入累计 1200 手,卖出累计 200 手,可成交 200 手。可见 10.00 与 10.10 都达到最大成交量 800 手,此时需要启用“第二顺位”规则:若最大成交量对应多个价位,取最接近前收盘价的价位;若仍相同,则取较高价位(不同交易所细则略有差异,实操中应以所在市场规则为准)。假设前收盘价为 10.05 元,则 10.00 元更接近,成交价定为 10.00 元。
三、价格优先与时间优先:同价位下谁先成交
成交价确定后,进入分配环节。价格优先的含义是:买入申报价越高越优先,卖出申报价越低越优先。以 10.00 元成交价为例,买入价 10.20 元的 300 手排在最前,其次是 10.10 元的 500 手,最后是 10.00 元的 400 手;卖出侧 9.90 元的 200 手优先于 10.00 元的 600 手。按序配对后,买入侧前两档共 800 手全部成交,10.00 元的 400 手只成交 0 手(因为卖方 800 手已被前面吃完),卖出侧则全部成交。这说明成交价上的申报并不保证全部成交,排序位置决定了实际成交结果。
时间优先只在“同方向、同价格”的申报之间起作用。例如两笔都以 10.10 元买入,先申报的 300 手先于后申报的 200 手被满足。实操中,申报时间以交易所主机接收时间为准,而不是客户端点击时间,因此网络延迟、券商柜台处理速度都会影响排队位置。对于资金量较大、需要抢时间优先的投资者,提前在申报时段开始前完成委托录入、避免在截止瞬间集中提交,是更稳妥的做法。
四、开盘竞价与收盘竞价的具体差异
开盘集合竞价通常分为申报时段和撮合时段,申报时段内可以申报也可以撤单,撮合时段内不接受撤单,最后统一撮合产生开盘价。收盘集合竞价则常见于部分市场,其特点是申报时段内不允许撤单,目的是防止尾盘通过虚假申报影响收盘价。两者在“最大成交量定价 + 价格优先 + 时间优先”的核心算法上一致,但撤单权限和行情披露方式不同:开盘竞价过程中往往披露虚拟开盘参考价和虚拟匹配量,收盘竞价则可能只披露部分信息或不披露,以减少操纵空间。
把上述过程串起来看,集合竞价的本质是一次“集中定价 + 排序分配”。定价阶段解决“以什么价格成交”,分配阶段解决“谁和谁成交、成交多少”。掌握这两个阶段的输入、计算和输出,才能在开盘、收盘的关键时点判断自己的委托能否成交、成交多少,并为后续连续竞价阶段的挂单策略提供依据。