首先,1 ms 在 HFT 中是永恒的。如果您认为不是,那么最好多阅读有关该域的内容。(就像距离交易所 100 英里一样。)吞吐量和延迟是紧密交织在一起的,任何基本排队理论教科书中的公式都会告诉你。相同的公式将显示抖动值(如果网络结构正确并且您没有配置足够多的内核,则通常由 CPU 队列延迟的标准偏差决定)。
高频交易套利的问题之一是,一旦您决定获取价差,就有两条腿(或更多条腿)来实现利润。如果你没有打完所有的腿,你可能会得到一个你真的不想要的头寸(以及随后的损失)——毕竟你是在套利而不是投资。
除非您的策略是预测(非常近期!!!)未来(不管你信不信,这件事做得非常成功),否则你不想要头寸。如果您距离交易所只有 1 毫秒,那么您的大部分订单将不会被执行,而您想要的将会被取走。最有可能已经执行了一条腿的人最终会失败,或者至少不会盈利。
无论你的策略是为了争论,让我们说它最终的赢/输率是 55%/45%。即使是赢/输比率的微小变化也可能导致盈利能力发生巨大变化。
回复:“运行数十个(甚至数百个)”似乎相差了几个数量级即使每秒查看 20000 个滴答声似乎也很低,尽管这可能是他正在查看的仪器组一整天的平均值。
在任何给定的秒内看到的速率都有很大的可变性。我举个例子。在我的一些测试中,我在一天的中间查看了 7 支场外交易股票(CSCO、GOOG、MSFT、EBAY、AAPL、INTC、DELL),该流的每秒速率可以从 0 mps(非常非常罕见)到每个峰值秒几乎有近 2000 个报价和交易。(看看为什么我认为上面的 20000 很低。)
我为这个领域构建了基础设施和测量软件,我们谈论的数字是每秒 100000 和数百万。我有 C++ 生产者/消费者基础设施库,可以在生产者和消费者(32 位,2.4 GHz 内核)之间推送几乎 5000000(500 万)条消息/秒。这些是 64 字节的消息,在生产者端具有新的、构造的、入队的、同步的、同步的、出队的、触摸每个字节的、运行虚拟析构函数的、免费的在消费者方面。现在诚然,这是一个没有 Socket IO 的简单基准测试(并且套接字 IO 可能很难看),就像在端点管道阶段的端点一样。它是所有自定义同步类,仅在空时同步,自定义分配器,自定义无锁队列和列表,偶尔的 STL(带有自定义分配器)但更常见的是自定义侵入式集合(其中我有一个重要的库)。我不止一次地为这个领域的供应商提供了四倍(甚至更多)的吞吐量,而没有增加套接字端点的批处理。
我有 OrderBook 和 OrderBook::Universe 类,当平均超过 22000 个仪器时,新、插入、查找、部分填充、查找、第二次填充、擦除、删除序列所需的时间不到 2us。该基准在插入第一次填充和最后一次填充之间连续迭代所有 22000 个仪器,因此不涉及廉价的缓存技巧。对同一本书的操作被 22000 本书的访问分开。这些都不是真实数据的缓存特性。真实数据在时间上更加本地化,连续交易经常出现在同一本书中。
所有这些工作都涉及仔细考虑所用集合的任何算法成本中的常量和缓存特性。(有时,K O(n) K O(n*log n) 等中的 K 似乎被忽略了一点太圆滑了)
我从事市场数据基础设施方面的工作。甚至想到使用 java 或托管环境来完成这项工作都是不可思议的。当您可以使用 C++ 获得这种性能时,我认为在托管环境中获得百万以上/mps 的性能是相当困难的)我无法想象任何重要的投资银行或对冲基金(他们的薪水为 250000 美元)一流的 C++ 程序员什么都不是)不会使用 C++。
有人真的从托管环境中获得 2000000+/mps 的性能吗?我在这个领域认识一些人,但从来没有人向我吹嘘过。而且我认为托管环境中的 2mm 会有一些吹牛的权利。
我知道一位主要参与者的 FIX 顺序解码器每秒进行 12000000 场解码。(3Ghz CPU)它是 C++,编写它的人几乎向任何人提出了挑战,要在托管环境中提出甚至是该速度一半的东西。
从技术上讲,这是一个有趣的领域,有很多有趣的性能挑战。考虑当基础证券发生变化时的期权市场 - 可能会有 6 个具有 3 或 4 个不同到期日的未偿价格点。现在每笔交易可能有 10-20 个报价。这些报价可以触发期权的价格变化。因此,对于每笔交易,期权报价可能会有 100 或 200 次变化。这只是大量的数据——不是大型强子对撞机碰撞检测器般的数据量,但仍然有点挑战。这与处理击键有点不同。
甚至关于 FPGA 的争论也在继续。许多人认为运行在 3GHZ 商品硬件上的编码良好的解析器可以击败 500MHz FPGA。但即使稍微慢一点(不是说它们慢),基于 FPGA 的系统也往往具有更紧密的延迟分布。(阅读“趋向”——这不是一个笼统的陈述)当然,如果你有一个很棒的 C++ 解析器,你可以通过 Cfront 推送,然后通过 FPGA 图像生成器推送它……但那是另一场辩论……