定义
一条未合并的数据流按顺序投递每一个事件。一条合并过的数据流以更低的频率投递当前状态:如果某个价位自上一次更新以来变了五次,接收方只会收到第五个值。合并可以作用于报价、作用于深度,而在聚合的形式下也可以作用于成交。
一个算例
随着委托被加入和撤销,某个价位在一秒之内变了 120 次。一条未合并的数据流投递 120 条更新。一条合并到每秒 10 条的数据流最多投递 10 个状态,而另外那 110 个永远不会出现。一个每秒刷新 30 次的显示,最多能显示 30 个状态,即使那 120 个都已经被收到并被应用了。
合并藏起了什么
- 闪烁的委托和短命的流动性,而这对任何研究撤单与堆叠的人都要紧。
- 报价变化相对于成交的确切次序。
- 一笔笔的成交,当成交被按间隔或按价格聚合成一条时。
- 只有一条完整事件流才能重建的队列动态。
数据流合并与显示刷新
两者常常被搞混。如果数据流是未合并的,那么每一个事件都到达了应用并被应用到它的状态上;屏幕随后按它的刷新率显示那个状态。由事件累加出来的那些总量,比如按价格的成交量和 Delta,仍然是精确的。而如果数据流本身被合并了,那些缺失的事件就从未到达应用,任何显示都无法把它们复原。
为什么要合并
合并不是一种缺陷,而是一次权衡。一条繁忙合约的完整委托簿事件流,在活跃时段每秒可以是几万条消息,而把它们全部投递出去,要花带宽、要花接收方的处理能力,还要花接收方跟不上时的那份代价。于是提供方按价格分层出售:便宜或免费的层级被合并,而完整的事件流是最贵的那一档。这就是为什么「我的数据是不是被合并了」这个问题,答案几乎总是写在你所付的那份订阅里,而不是写在软件里。
在 Senzoukria 里
足迹图会聚合它收到的每一笔成交。显示路径按有界的速率刷新:Databento 的委托簿以每秒约 30 条更新推送给热力图,而经纪商的头寸流对每个工具最多合并到每秒 4 条,其中开仓、平仓和反手会立即推送。这些是数据到达之后才施加的显示选择,而不是对数据流的合并。
常见错误
- 在一条合并过的深度数据流上研究幌骗或撤单流动性。
- 把数据流从未发出的那些事件,归咎于显示的帧率。
- 把来自一条聚合成交流的成交笔数,和来自一条未聚合的流作比较。
相关内容
同一栏目
其他语言版本
常见问题
- 一条合并过的数据流更不准确吗?
- 它在它所报告的那些时刻上的数值是正确的,但它省略了这之间发生的事。对价格和那些总量来说这可能没问题;而对研究委托簿动态来说,这是一个真实的损失。
- 我怎么知道我的数据流有没有被合并?
- 去问提供方,或者在它的文档里查更新速率、以及它是否投递每一个委托簿事件。一条不论市场活跃程度都按固定节奏更新的数据流,是合并的一个迹象。