← 最新论文
💰 quantitative finance

Packets, Transactions and Queues: Design Principles for HFT Systems from a Measurement Study of CME Market Data

通过分析超过一年的 CME 市场数据,本文挑战了传统的单线程高频交易(HFT)设计,证明了虽然单线程足以处理子周期数据包,但两阶段线程架构可以显著降低由交易突发引起的队列尾部延迟,前提是这种拆分能够缩短系统中最慢阶段的耗时。

原作者: Vincent Maciejewski

发布于 2026-09-29✓ Author reviewed ⓘ
📖 1 分钟阅读☕ 轻松阅读

原作者: Vincent Maciejewski

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 ✨ 这是对下方论文的AI生成解释。它不是由作者撰写的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

在高频交易的世界里,计算机在几分之一秒内买卖股票,速度不仅是一种优势,更是整个游戏的规则。这些系统基于一个简单的前提:如果你能比任何人都快地处理市场信息,你就能在微小的价格差异消失之前从中获利。为了实现这一点,工程师们构建了专门的软件,用于监听来自证券交易所的持续数据流,对其进行解码并做出决策,整个过程仅需微秒级的时间。多年来,该行业一直遵循一条严格的规则:将这种软件最关键的部分保留在单个处理器核心上。其逻辑在于,在不同核心或“线程”之间移动数据太慢且风险较高,会增加延迟,从而毁掉系统的速度。这种方法将软件视为一个专注的单人工作者,从不交接任务,认为任何中断带来的成本都会超过工作本身。

然而,这一长期持有的信念依赖于一个关于市场数据到达方式的假设:即数据是随机且平稳地到来,就像雨滴以不可预测的间隔落下。如果情况确实如此,那么单线程方法确实是最快的。但如果数据并非随机到达呢?如果数据是以突然、剧烈的爆发形式到达,即在眨眼之间就有数千次更新冲击系统呢?一项针对芝加哥商品交易所(CME)真实市场数据的最新测量研究表明,在最繁忙的时刻,旧规则可能并不适用。通过对一年多来数十亿个数据包进行追踪,研究人员发现市场数据并非随机到达。相反,它以紧密的集群形式到达,其中一个事件会触发一系列快速发生的后续事件,形成一种“自激”(self-exciting)模式。这一发现改变了速度的数学逻辑。事实证明,当数据以这种特定的集群爆发形式到达时,只要系统设计得当,能够正确处理这种爆发的节奏,将工作拆分到多个处理器上实际上可以使系统更快、更可靠。

研究人员首先观察了数据从交易所的撮合引擎(处理订单的地方)传输到交易者计算机时的原始数据流。他们追踪了每一个数据包,精确记录了它们离开交易所的时间以及到达的时间。他们发现,交易所的系统扮演着一个具有固定限速的角色。即使撮合引擎处理订单的速度极快——有时彼此之间仅间隔不到一微秒——交易所的数据发布器也无法一次性发送所有数据。它会逐个发送数据包,每个数据包之间保持约 7.5 微秒的最小间隔。这创造了一列数据包,无论源头的活动多么混乱,它们都会以一种稳定、有节奏的间距到达交易者的计算机。

这种有节奏的到达是新发现的关键。研究人员构建了一个计算机模拟实验,以测试不同的软件设计如何处理这种特定的节奏。他们将传统的单线程方法(由一个处理器完成所有工作)与多级流水线方法(将工作按顺序分配给多个处理器)进行了对比。在模拟中,他们向系统输入了与真实数据包完全一致的计时信息。结果非常明确:对于处理时间超过数据包之间 7.5 微秒间隔的任务,单线程方法会导致严重的积压。当爆发式数据到达时,单个处理器会被压垮,导致爆发中最后几个数据包的延迟比任务本身长出数十倍。这种延迟就是交易者所恐惧的“尾部延迟”,因为它意味着他们的决策做出时已经太晚了。

相比之下,多级流水线能够轻松应对这些爆发。通过拆分工作,系统可以并行处理传入的数据包列。当第一个处理器正在解码第一个数据包时,第二个处理器已经在处理第二个数据包了,依此类推。这使得系统能够更快地消化积压,使每个数据包的延迟都保持在较低且稳定的水平。模拟显示,对于处理时间在 16 微秒或更长的任务,拆分工作可以将最坏情况下的延迟降低十倍以上,而对于典型的非爆发时刻,仅会产生微小的性能损失。研究人员证实,这种改进并非由于数据量的增加,而是专门针对到达时间的集群爆发特性。当他们模拟同样数量的数据以随机方式到达时,多级系统并没有表现出优势,单线程系统依然保持高效。

该研究还排除了其他几种潜在的延迟原因。他们发现,数据包的大小或其中包含的消息数量并不是导致减速的主要驱动因素。即使他们重新排列数据以消除爆发,但保持相同的数据包数量,那些巨大的延迟也会消失。这证明问题纯粹在于到达的时机。研究人员还调查了交易所本身,以了解数据为何以这种集群形式到达。他们发现,交易所的撮合引擎经常几乎同时处理多个订单,这可能是因为许多交易者都在同时对同一个市场事件做出反应。然而,交易所的发布器随后将这些订单进行间隔处理,从而创造了交易者系统必须处理的有节奏的数据列。

对于这些交易系统的设计者,该论文提供了一份清晰的、基于数据的指南。如果系统的处理时间短于数据包之间 7.5 微秒的间隔,那么旧规则仍然适用:保持在单线程上。拆分工作并无益处,只会增加不必要的复杂性。但如果处理时间长于这个间隔,单线程方法会在爆发期间失效,此时应当将工作拆分为多个阶段。研究人员强调,目标不是使用尽可能多的处理器,而是要确保处理过程中最慢的部分能够跟上交易所的节奏。他们还发现,处理器的具体排列方式并不如确保最慢阶段得到高效处理那样重要。

这项工作并不声称已经解决了高频交易中的所有问题,也不意味着单线程方法已经过时。它只是提供了一个精确的度量标准,用以判断何时该方法不再奏效,以及何时需要采用不同的设计。通过测量现实世界而非依赖理论模型,研究人员为工程师提供了一个具体的衡量阈值。他们证明了数据流的本质——特别是其呈现自激爆发的倾向——决定了构建消费该数据的软件的最佳方式。其教训是,在金融的高速世界中,理解数据的节奏与理解计算机的速度同样重要。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →