定义
芝商所期货的撮合引擎运行 CME Globex,托管在芝商所集团位于伊利诺伊州奥罗拉的数据中心。订单经由下单网关到达,先被校验(价格带、保护、订单类型规则),然后要么成交、要么停进订单簿。每一次变化都会作为执行报告回送给订单的所有者,并作为行情数据发给所有其他人。
同一价位上挂着的那些订单怎么分配一张到达的订单,由该产品的撮合算法决定,并在每只合约的定义里公布:E-mini 股指期货和许多其他产品是先进先出,另一些产品用按比例分配,或者组合式的分步算法,比如先给主做市商一个份额,或者在先进先出和按比例之间分成两段。所以「我排在第几位」这个问题的答案,取决于你交易的是哪个产品。
算例
卖方一侧在 5,000.25 挂 5 手、在 5,000.50 挂 10 手。一张 12 手的市价买单到达。引擎先在 5,000.25 成交 5 手,再在 5,000.50 成交 7 手,5,000.50 上还剩 3 手。
买方的均价是(5 × 5,000.25 + 7 × 5,000.50)÷ 12 = 60,004.75 ÷ 12,约 5,000.40。主动方是买方,最优卖价移到 5,000.50、剩 3 手,而一张足迹图会把这 12 手卖价成交量分摊记在两个价位上——5,000.25 记 5 手、5,000.50 记 7 手。这就是为什么足迹图上一个价位的数字不等于某一张订单的规模。
从引擎到屏幕
- 引擎按严格的顺序发出事件;数据源给它们编号,这样消费方可以检测到缺口。
- 交易所的数据源可以按价位报告一次撮合,也可以按每一张被动订单分别报告;数据商可能只转发其中一种。
- 你的平台收到的是某家数据商的版本,再叠加网络和处理延迟,然后才画出来。
- 你自己订单的确认和你屏幕上的行情走的是两条不同的路径,到达的先后顺序可能是任意的——确认先到并不代表行情慢了,反之也一样。
为什么要紧
知道引擎是唯一发生成交的地方,能让解读保持诚实:DOM 显示的是它所发布的挂单簿,逐笔成交显示的是它所发布的成交。一个价位在没有成交的情况下消失了,那是在引擎里被撤单或者被隐含订单抵掉了;一笔因为你的数据源滞后而没看到的成交,它在它自己的那一刻确实发生了。
这个原则还有一个实用推论:任何声称能显示「交易所没有发布的东西」的功能,都值得怀疑。订单流软件能做的是把引擎发布的东西重新组织成人能看懂的形状,不能凭空补出引擎没说的部分。
在 Senzoukria 里
软件画的是引擎发布的输出,按它的数据源交付的样子:成交画在足迹图和逐笔成交上,挂着的深度画在 DOM 阶梯和热力图上。它没有任何通往引擎本身的通道;它度量的下单确认延迟——从点击到网关确认——里面包含了券商到引擎的那一段路径。
这也是为什么同一只合约在两个平台上的足迹图可能略有差别:差别不在引擎那边,而在两条数据链路对同一批事件的聚合方式和到达时间上。
常见错误
- 以为一个平台能显示引擎没有发布过的东西。
- 在簿很薄的时候,还以为一张市价单会在单一价位上成交。
- 把自己订单确认的延迟算成行情的延迟,或者反过来。
相关内容
同一栏目
其他语言版本
常见问题
- 芝商所的撮合引擎在哪里?
- CME Globex 托管在芝商所集团位于伊利诺伊州奥罗拉的数据中心,那里也是主机托管客户放置自己服务器的地方。
- 撮合引擎知道我是谁吗?
- 为了发执行报告和执行风控,它知道订单的所有者;但公开的行情数据是匿名的:其他参与者看到的是价格和数量,不是身份。