组播与市场

2020-09-24 06:46:28

欢迎收看“信号与线索”栏目,我们将深入探讨简街的每一层技术。我是罗恩·明斯基。今天,我将与Brian Nigito进行一次对话,本质上是关于金融市场的技术基础,以及如果你习惯了开放互联网和云基础设施的工作方式,这些基础与你可能预期的不同之处。我们将会讨论很多事情,但是会有很多的焦点放在网络上,以及在这个层面上的一些技术,包括IP组播之类的东西。布莱恩·尼吉托(Brian Nigito)是一个很适合与之交谈的人,因为他在金融市场有着深厚而悠久的历史。他在市场工作了20年,其中一些时间他在交易所层面工作,在那里他做了很多基础工作,导致了我们今天所知的现代交易所架构。他还在各种不同的贸易公司工作过。在过去的八年里,Brian一直在简街工作,他在这里的工作涵盖了很多不同的领域,但今天,他花了很多时间考虑高性能、低延迟,特别是网络级的东西。所以让我们开始潜水吧。我认为有一件事我非常敏感,那就是很多正在倾听的人对金融市场及其运作方式一无所知。作为开始,布莱恩可以给出一个关于交换是什么的相当基本的解释。

我想当你听说交易所的时候,你会想到很多不同种类的市场。但当我们谈论交易所时,我们谈论的是正式的证券交易所。这些都是美国证券交易委员会监管的交易所,它们符合允许人们进行证券交易的所有必要规则。因此,当我们松散地使用它时,是的,它与普通的跳蚤市场非常不同。反正应该是这样的。

这显然是一个功能,很久以前,是在同一个位置的人身上完成的,对吗?这些人被转移到更正式、更有组织的交流中,得到了更多的电子支持。最后,在过去的20年里,基本上发生了这样的转变,其中人的因素发生了巨大的变化。现在,人类显然深深地参与到了正在发生的事情中,但人类几乎都在交换之外,交换本身本质上已经成为一种纯粹的电子媒介。

是的,这是一个非常有趣的故事,因为你有通讯技术和电子交易的例子,可以追溯到60年代末,但可能更早于70年代中期(我对日期有点松散),但它总是存在的。但是规则集的设计并不是为了强迫人们在电子系统会导致你操作的那种时间尺度上操作。这是相当宽容的。所以你知道,如果地板上有人不想处理电子交易,那么电子交易就得等一等。在过去的10到15年里,这有点颠倒了,所以一般来说,我们倾向于总是可以访问的电子报价。

后退一点。正如您所说,交易所是人们见面和交易的地方,用来宣传他们的价格。让人们相互交易。除了买卖的人,其他在交易所层面互动的人是什么,其他类型的实体在那里上钩了吗?

显然,那些以自己的身份或代表他人进行证券交易的实体正在进行证券交易,但还有一些金融机构正在清算和担保这些交易,为交易的参与者提供一些资本或杠杆,他们显然想知道那里发生了什么。你有其他的交易所,因为规则集要求交易所尊重彼此的报价--以这种奇怪的方式,有一个网站,在这个网站上,交易所是彼此的客户。你也可能有各种各样的市场数据提供商。因此,那些反映交易所活动的报价最终会一直向下,你可能会在电视、经纪屏幕或财经新闻网站等的底部看到滚动的内容。我猜,当“华尔街日报”打印交易价格时,它们甚至会一直向下滚动到印刷页。“华尔街日报”(Wall Street Journal)打印交易价格时,这些报价甚至会一直向下滚动到电视或经纪屏幕或财经新闻网站的底部。我猜,它们甚至会一直向下滚动到印刷页。

那么,在更系统的层面上,这看起来是什么样子呢?不同的参与者来回发送的信息是什么?

最原始的东西是你有订单或指令,还有其他平台我们有报价,我们可能会随意使用,但我们只会说订单。订单只是说,我想买或卖,比方说,一种特定的股票,我愿意以不低于这个价格,不超过这个数量的价格这样做,这可能意味着我可以按以下的价格买入或卖出,那就是说,我可以按这个价格买进或卖出,也就是说,我可能会以不超过这个数量的价格成交

这里的一个关键属性是您有一个相当简单的核心消息集,它的核心是称为“书”的基本数据结构,它是一组尚未满足的订单。然后人们可以发送消息来添加订单和删除订单。然后,如果两个订单交叉,如果有两个订单是兼容的,交易可以上升,那么执行就会发生,信息就会流出。在它的核心有一个相当简单的核心机器,但也有许多不同的参与者,他们想要不同的信息子集用于不同的目的。有一些人自己也在交易,他们当然想看到他们自己的活动和所有的细节。他们还想看到我们所说的“市场数据”,这种交易活动的公开匿名版本,这样你就可以看到广告上的价格是什么,供你去交易。最后,您需要构建一台能够运行此核心引擎、速度足够快、足够可靠的计算机…。如果你没有想过,也许有一件事并不明显:有一笔令人不安、令人眼花缭乱的钱处于危险之中。哦,天哪,你不想跟不上交易吧?如果你像这样说,“哦,你们做了这笔交易,”然后你忘记了,没有报告,或者你向一方报告,而不是另一方,可怕的事情就会发生。所以可靠性是关键。

是的,我认为回到过去,有很多不同的消费者,很多不同的参与者。我认为关键字是有很多竞争对手。所以有一件事你没有提到,那就是公平地传播所有的信息。因此,试图同时让每个人都知道这是一个真正的挑战,参与者正在非常、非常仔细地研究,并在规则集内寻找任何他们可以在技术上获得的优势,等等。因此,额外的一层竞争让问题变得更加复杂,也更具挑战性。

这个公平问题是你从内部看到的,在Island和Instinet从事早期交换基础设施的工作,这最终成为纳斯达克的基础技术。早些时候,你们建立了一个基础设施,我认为它没有现代交流发生的所有公平保证。你能更多地说一下这在实践中是如何发挥作用的吗?

在孤岛系统上工作时,最初是非常接近“公平”的,因为你有相同的物理机器,你有一个底层的交付机制,我们稍后会谈到,在把它送到这些单独的机器上是非常公平的。然后,你在给每个人看完一份申请表后,就会把订单或说明书的复印件发送给每个人。所以你们都通过了几乎相同的工作量和几乎相同数量的设备。但它实际上效率很低,我们使用了数千台机器,这些机器大多处于闲置状态。因此,一旦我们开始尝试在一台机器上处理多个客户端,就会暴露出一些明显而愚蠢的问题。人们会进行连接的天真实现,我们会收集所有这些连接。然后,当我们收到一条消息时,我们会在连接上连续发送它们,通常是按照人们连接的顺序。嗯,在交易所开盘前,这立即导致了每秒数千条信息,有人试图成为这条线路上的第一个连接。然后你开始轮询,所以你知道,你从一个开始,然后下一次,你从两个开始,以此类推,试图将其随机化。然后,人们会尽可能多地连接不同的端口,并使用每个端口中最快的端口。所以这些激励是非常非常强烈的,我们想要最大限度地利用机器,但为每个参与者提供他们自己的独特机器给每个连接也开始变得荒谬起来。

其中很多都是TCP协议。在那些日子里,我们实际上有相当数量的人通过开放的互联网连接。我认为我们没有直接通过开放的互联网提供交易服务,但我们确实通过这种方式提供了市场数据。还有TCP,这可能是您在Internet之类的东西上唯一合理的选择。但是,一旦你开始转向主机托管,走向更多的私有网络,人们的机器都在同一个数据中心,实际上离发布机器只有两三个网络设备,那么开始使用不同形式的网络、不可靠的网络、UDP就变得更加可行了,这就把你引向了一种称为多播的东西,在这种情况下,你不是向n个人发送消息的多个副本,而是发送一个副本,允许网络基础设施以更确定的方式进行电子复制和交付。

对于不太熟悉低水平的人来说

交换机的速度非常快,如何做到这一点是确定的。因为,我认为他们在行业中的使用,他们变得更快,更具确定性。因此,它们只需将这些位同时电重复到交换机可能具有的48个端口或其他端口即可。这比你试图在通用服务器上写多份拷贝写到多个地方要快得多,也更有规律,你真的不能把这两者相提并论。在通用服务器上,你可能要写多个拷贝,写到多个地方,你真的不能将两者相提并论。

使用交换机的主要优势之一是,交换机在专门的硬件中执行复制,这从根本上说比您在自己的机器上执行的速度要快。这里还有一个分布式组件。当您使多播流可用时,有一个在交换机上运行的分布式算法,它本质上学习我们所说的“多播树”。在每一层,每台交换机都知道它需要将数据包转发到哪些其他交换机,然后这些交换机知道它们需要将数据包转发到哪个端口。这给了你某种程度上分配复印工作的能力。因此,如果您在某个远程网络中有12个收件人,您可以将其中一个发送到本地交换机,然后在最后一层进行最终复制,在最高效的位置进行复制。这是多播为您提供的基本魔术。

随着网络变得越来越简单,我们使用的第一个版本甚至没有使用多播。我们用的是一种叫广播的东西,意思就是,“你得到的任何东西,我都要你随时随地重复。”这很有趣,因为你可以想象,你肯定可以用这种方式压倒一个网络。而TCP带来的不确定性和变化很大程度上是这些非常关注网络健康的自学习算法。当我们与Linux内核维护人员一起工作,并对我们看到的可变性有疑问时,他们会说,“嗯,您不应该使用TCP。如果您关心延迟,就不应该使用TCP。TCP一直在进行权衡,比如为了网络健康等等。对于互联网来说,这是绝对必要的。如果你真的有这些超级严格的要求,你真的想让他们快速到达那里,而且你有一个丢包很少的受控网络,而且参与者之间的层很少,你应该使用UDP。“。而且他们可能是对的。我们现在主要是买这些东西,但花了一段时间才到那里。

在某种程度上,他们是对的,这是完全不可动摇的。也就是说,有一系列标准化的协议,关于您在发送命令时的通信方式。关于交易世界的另一件事是,如果你退后一步,看看我们使用的协议是如何被打破的,交易公司会遇到两种主要的数据流,至少当我们与交易所交谈时是这样。有:订单流连接,在那里我们发送特定的订单和特定的取消,并查看对这些订单和取消的特定响应,这几乎总是通过TCP连接完成的;然后是市场数据的接收,这就是您要发送的数据,每个人都需要看到完全相同的匿名数据流,这几乎总是通过多播完成的。因此,有一部分数据是按照Linux内核开发人员推荐的方式通过UDP完成的,还有一部分数据流至今仍在TCP下完成。我认为不同的是,我们不再像以前那样使用开放的互联网。我认为已经发生了这种转变,交易公司不再把东西送到干线上,让东西绕过开放互联网的大桶,而是通常会有很多主机托管地点,在那里他们会把一些服务器放在离交易所管理的交换机非常近的地方,他们将有我们所说的交叉连接:我们将把我们的交换机连接到他们的交换机,然后在两个网络之间桥接,在这些控制非常严格、消息丢失率非常低的局域网上提供多播。因此,在某种意义上,我们在一个与世界上大多数人使用的网络环境截然不同的网络环境中运行这些东西。

是的,有几个有趣的观察:这意味着主机托管使专业参与者之间的竞争更加公平-它使我们能够使用这些类型的技术,而如果没有主机托管,你对人们如何联系你的控制较少,最终参与者之间的差异可能会更大。我认为同样值得一提的是,我们谈论的很多事情都有点偏向美国股票,而且总体上是偏向美国股票的。还有很多其他的交易协议更具双边色彩,不是每个人都遵守一个单一的价格。你知道,在过去