翠鸟:市场质量

翠鸟:市场质量

市场健康和成熟度不能仅通过价格和交易量来估计。其参与者及其关系对一个行业倾向于采取的方向有重大的…


翠鸟:市场质量

先前刊登于 FTX 2020 年 11 月摘要

市场健康和成熟度不能仅通过价格和交易量来估计。其参与者及其关系对一个行业倾向于采取的方向有重大的影响。我们将审视交易所、主要做市商和常见的市场参与者,以及他们的互动如何塑造加密市场。

在本文中,我们将探讨交易所撮合引擎的物理限制、这对更广泛的加密市场有何影响,以及一些可能使加密市场更公平、更高效的提议。

交易的物理限制

数千年来,人类一直在努力使他们的市场更具弹性、更高效、速度更快。从物流网络到在线支付处理系统,对延迟降低的追求与市场本身一样古老。当一个行业面临无法突破的路障时,会发生什么?硅的发现及其应用使我们能够将信息传播速度推近光速。我们无法使其更快。

在 Euronext 撮合引擎上工作过,我了解了如何充分利用硬件的物理限制并开发更快的撮合引擎(ME)。

撮合引擎是任何交易所的核心。技艺高超的马拉松选手拥有缓慢但强劲的心跳,可以完成很多工作,每一次心跳都经过优化,以提供最佳的效率和速度,将营养物质输送到组织和肌肉。同样,撮合引擎负责高效、快速地解决交易操作,同时确保将产生的信息可靠、有弹性地中继到交易所基础设施的正确部分。由于交易所团队的辛勤工作,撮合引擎的延迟逐年下降,而一些老牌领导者开始自满,每天都在失去越来越多的客户。

“如果你不向上发展,你就会向下发展”

让我们向下深入以求向上:解密 CPU 101:

21 世纪中叶标志着摩尔定律时代的结束,当时升级到更高频率的硬件可以带来自动的性能提升。相反,该行业转向了一种性能提升来自于增加更多执行单元(核心)的模型。但是,利用多核架构需要额外的开发和测试工作,而天真地增加更多线程往往无法达到可扩展性的预期。为什么?

“一个中央处理器(CPU)非常擅长一项任务,但多个 CPU 默认情况下作为团队协作并不出色。”

CPU 由处理单元和内存单元组成。一个 CPU 核心被组织成以其频率速度执行指令。例如,一个 3 GHz 的 CPU 以 0.333 纳秒(1,000,000,000 纳秒 = 1 秒)处理每条指令。半导体技术(以纳米为单位)决定了物理边界。

现实要复杂得多。我们假设指令和数据已经存储在与 CPU 频率相同速度运行的 CPU 物理寄存器中。实际上,指令和数据存储在多层缓存内存架构(L1/L2/L3)中。它在物理上越靠近 CPU 处理单元,速度就越快,尺寸也越小。因此,L1 缓存是最快、最小的。图 1 显示了多核 CPU 微架构以及每个缓存级别对应的尺寸/速度。

图 1:多核 CPU 微架构

要了解是什么导致延迟变长和周期消失,我们必须了解通用可扩展性定律在多核 CPU 系统上的应用基础。影响可扩展性的主要参数是:

  • 核心资源争用: 例如,由于超线程。多个软件线程希望同时访问相同的执行单元,因此处理是串行化和优先排序的。
  • 缓存内存争用: 当同一核心争用其私有缓存内存(L1/L2)时发生,这发生在操作系统上下文切换时,或者当问题规模太大而无法存储在私有缓存内存中时。这种现象被称为缓存抖动(cache thrashing)。在多核中,缓存抖动发生在核心之间共享的 L3 缓存(或 LLC 最后一级缓存)上。因此,其影响是延迟损失了数百纳秒。解决方案应该是一种智能软件,它能改善缓存内处理的数据局部性,从而提高内存带宽利用率,同时让 CPU 核心忙于本地计算;这是一个非常困难的问题,目前没有简单的解决方案。
  • 缓存一致性: 这是一种硬件机制,允许在发生软件同步(互斥锁、屏障等……)或两个核心访问同一内存区域时,核心之间进行无缝通信。一次简单的缓存一致性操作(一个缓存行)至少需要 600 个周期。

撮合引擎承受的负载

考虑到 CPU 的限制,交易所必须管理其操作。首先,交易所必须管理交易者的头寸。这使它们在高度波动的市场事件期间发生大规模清算时面临流动性风险。交易所倾向于以某种方式管理这些头寸的清算,以避免在发生大规模清算时对其他市场参与者产生连锁反应。它们还需要执行市场规则和积压交易,以确保其服务的弹性和一致性。

99% 百分位数代表在给定时间间隔内对给定任务评估的查询的最高 1% 延迟值。一个有弹性且高效的软件将被 99% 百分位数视为广告的延迟阈值。无论交易所的撮合引擎编码得多好,它们总是会受到这些延迟的限制,从而限制了其用户的总交易吞吐量。如果一个交易所每秒的交易量是有限制的。

这加起来意味着撮合引擎需要管理数千次操作才能完成一次撮合指令。它们在处理与服务许多金融工具和每秒处理数百万条消息相关的业务查询时也存在限制。

如何从架构角度实现可扩展性和稳定性?

撮合引擎是一个高度互连的工作流计算配置文件,它结合了来自多个源的数据,其中模块之间的通信频率及其相互依赖性很高且是动态的。线程同步和调度需要快速、动态地完成。

反应式软件(Reactive software)是一种设计理念和范式转变,它包括构建大规模的反应式微服务和细粒度的反应式应用程序(单个进程)。基于异步消息传递设计,存在着大量的并发编程模型,允许从头开始构建反应式软件。Actor 模型就是这样一种久经考验的编程模式。

Actor 是一个非常高效的概念,支持从开发到生产的整个生命周期。通过直接映射到功能概念,Actor 缩短了业务和功能架构之间的距离;它们以足够精细的粒度封装逻辑,以便在开发人员之间划分工作;它们是可直接用于测试的概念;并且它们允许管理员根据可用硬件和应用程序负载动态决定拓扑结构。

接收这些操作的撮合引擎会将所需的计算分配给可用的 CPU 核心。如果一个核心已满,数据将被发送到更高级别的缓存、主板插槽,或者在最坏的情况下,返回到 RAM 并发送到硬件资源(这成本最高,因为它需要到达其他组件)。

每当一个核心需要同步以平衡负载时,它们都会支付“延迟费用”。你添加的核心越多,数据可以分散得越多,但你支付的延迟费用也越多。这种费用呈指数级增长。这主要是为什么交易所不能仅仅通过购买更多服务器来扩展的原因,也是它们可能成为自身成功的受害者的原因。延迟的关键点发生在熵开始发挥作用时,数据分散到许多核心,它们只是互相承诺等待数据来执行指令。

工程师使用的策略是为每个核心分配一个特定的角色,并且永不执行其他任何操作,确保它们不会接收过多的数据或指令,并尽可能避免输入中的任何同步和随机性。为实现这一目标,他们将不得不花钱进行研究和/或投资于软件来管理内存分配和核心控制。尤其是需要严格的工程师,不浪费 CPU 时间的每一秒。

困境:

交易所和整个市场发现自己处于一个困境:以增加负载为代价,使他们的速度和延迟限制更加明显。

卖方:

从卖方(交易所)的角度来看,你花费大量资金开发解决方案来更好地处理熵。你需要了解延迟困境的优秀开发人员,包括由于客户群不断增长(交易软件、算法交易员、做市商)而产生的熵。在某个时刻,设计限制被物理规则所限制。考虑到这一点,任何错误都会堆积起来,并可能很快变得痛苦,这最终限制了开发能力,直到由于害怕产生新的延迟成本而扼杀了创新。交易所最终不得不降低因可能类似于合法市场参与者发起的分布式拒绝服务攻击而导致的撮合引擎故障的风险。

为了减轻这些风险,它们会应用速率限制,并优先考虑能带来最佳业务机会的指令。CPU 和延迟是物理和数学问题。研究、严谨性和“公平”的概念取决于人类的判断。如果你减慢所有人的速度,你就会使市场对大多数交易者来说效率降低。这反而使拥有资源的人(低级编码工程师、可部署的资本、研究团队、交易量)处于优势。另一个值得一提的点是,出于法律原因,每项操作都必须保存,即使它是在几毫秒后取消订单。高频交易(HFT)公司给交易所带来了巨大的负载,其中大部分是浪费的资源,代价是交易所。

买方

从买方(客户)的角度来看,一个无限的撮合引擎允许更好的策略、更多的竞争、更有效率的市场、交易所之间更好的套利机会,以及对低交易量交易者更公平的市场,使他们能够与其他人以相同的速度获取流动性。

当客户数量增加时,撮合引擎会变慢,并排挤了大多数交易者。将服务器购买到靠近交易所服务器的地理位置,允许某些市场参与者发送特定的价格模式,这从监管和交易所的角度来看特别重要。在市场波动剧烈的时期,高频交易主要会消耗竞争对手的流动性,并吸收那些设法通过订单流的非高频交易者的被动订单。接受者倾向于充当知情交易者,他们的订单流可能被视为对其他参与者有害。

大多数交易者已经经历过的一个例子是,一种高频交易策略以每秒 6,000 笔下单和取消的速率发送订单。这意味着每个报价的生命周期都短于 160 万分之一秒——光传播约 1,500 英尺所需的时间。距离此距离一半以上的人都没有机会针对这些报价进行执行。这是一种常用的策略,称为报价填充(quote stuffing),之所以成为可能,是因为市场参与者与交易所位于同一数据中心。这导致今天出现了大的隐藏价差,当激进订单冲击交易所时产生。

关于只有卖方可以根据监管机构的激励或自我监管来应用的、旨在提高其服务质量的市场规则,出现了疑问。高频交易的支持者会说,他们通过缩小价差和阻止其他恶意策略(如欺骗)的发生来提高流动性。

其他人会说,这种速度是不公平的。非高频交易者发现自己被夹在速率限制、统计套利策略和幽灵报价之间,这降低了小参与者获胜的可能性。除了高度专业化的参与者之外,像山寨币量化(altcoins quantos)这样的新产品在撰写本文时也出现了,并且是最令人担忧的。ICO 热潮以及关于加密货币市场流动性陷阱的大部分写作和教育,导致交易者更倾向于具有改善流动性的杠杆产品,而不是低流动性的现货币/代币,正如 Clarens Caraccio 在上一篇 FTX 摘要(六月) 中详细介绍的那样。

做多“反向”(Inverse)头寸比“做空”风险更大。随着价格下跌,头寸积累的 Delta 越来越多,使交易者面临更大的清算风险。新一波交易者正在转向具有相同低潜在流动性的高杠杆产品,但这一次,当使用非美元抵押品时,他们对“多头”头寸暴露于负伽马(negative gamma)风险。

做市商寻求中性头寸,他们的接受者订单比率主要取决于其库存。在波动性较高且没有适当激励的情况下,他们不会费心以受控的强度对具有受控限价订单簿进行最佳清算。为了避免潜在损失,他们会针对知情交易者撤回流动性。杠杆参与者最终因底层指数的订单簿被撤回而被交易所的风险引擎清算头寸。

比特币和山寨币市场不受任何关于延迟、价差、抵押品要求或费用结构的通用“公平规则”的监管。但所有交易所都根据交易量应用速率限制。这些限制主要是为了保护撮合引擎免受高需求负载的影响,并提供高效的加密货币市场。

使用新工具快速交易以突破这些限制并捕获可用流动性的行为,使非系统性参与者也能通过更快的执行来捕获这些低效率,从而与做市商进行交易,但这直接与他们发生冲突。为低流动性上限报价是一项繁琐的工作,需要激励措施,现在他们也受到猎杀,所以他们会抱怨 99% 百分位数的恶化,并以此作为抱怨撮合引擎延迟的论据。

关于如何解决这些困境的一些想法

关于交易所如何激励做市商的一点。传统市场提供超额回扣是该行业实施订单簿深度要求的第一个激励计划。与市场质量规则一致执行的交易量将使做市商和交易所的利益保持一致,改善投资者的整体交易环境和市场参与者的市场。

我们建议以下几点作为进一步提高市场质量、交易所执行及其撮合引擎性能的方法。

市场将总是存在由微妙之处播下的陷阱,其中一些陷阱创造了我们今天试图颠覆的中心化世界,让我们不要出于意识形态重复过去的错误,让我们尝试带着最佳实践一起构建最好的世界。市场质量越高,投资者的显性成本就越低,从而确保了更好的执行质量。