61

在过去的几周里,我遇到了很多关于高频交易的文章。他们都在谈论计算机和软件对此的重要性,但是由于它们都是从财务角度编写的,因此没有详细说明软件的作用是什么?

谁能从程序员的角度解释一下什么是高频交易?为什么计算机/软件在这个领域如此重要?

4

6 回答 6

64

扩展保罗所说的:

执行 HFT 或 UHFT 的服务器几乎总是配置在交易所的数据中心。这最大限度地减少了延迟,还允许算法使用 Flash 订单(可能很快会被禁止)在订单被广播到市场之前首先查看订单流。许多算法将在几毫秒内评估订单,这是一个毫秒很重要的游戏。众所周知,交易团体会竭尽全力,包括雇用内核开发人员来构建自定义操作系统组件,以更好地优化订单到达 NIC 和采取相应行动之间的时间。

今天常用的策略有几个大桶:

首先是在大宗订单前进行交易。以 Paul 购买 100 万股 IBM 股票为例,HFT 算法将寻找购买压力。位于不同交易所和暗池的公司计算机将需要共享信息,因为订单将被分割并通常在多个交易所和暗池中执行。HFT 算法将使用统计/机器学习模型来预测购买压力的大小,如果它确定有足够的压力,它还将从各个市场积累股票并尝试以略高的价格出售它们。

二是流动性返利交易,交易所将向市场参与者支付费用以增加流动性。(见直接边缘定价)买卖的股票只能持有很短的时间。目标只是收集回扣并在其他所有方面实现收支平衡。

在这两种策略类型中,想法是在交易中赚取便士(或分数)并每天多次这样做。

您可能已经注意到,有很多高频交易工作可供选择,因此交易变得更加拥挤。我认为这有点像 2000 年代初期的统计套利,最终交易不会非常有利可图,因为有很多玩家都在努力做到这一点。

至于为什么软件很重要:毫秒很重要。延迟非常重要,代码需要紧凑、快速和坚如磐石的稳定性。当市场对你不利时,算法崩溃并被股票抓住并不是很有利可图。这些要求的工程必然是不同的,需要不同的技能。实时处理完整的订单簿确实需要一些马力和良好的算法。不过这很有趣也很有趣。

于 2009-08-14T19:48:15.243 回答
20

任何 HFT 系统都有两个部分:

  1. 实时超低延迟交易 - 订阅来自许多不同来源的实时订单簿和价格信息,执行旨在以最小滑点执行大订单的校准算法(即您想在最后购买 100 万股 IBM当天没有太多的市场波动),或者只是试图在统计上基于短期套利赚钱。该系统还必须提供良好的风险和头寸管理工具,以允许一名或多名人工操作员有效地监控和控制系统正在做什么。

  2. 隔夜/每周等分析大量“分时数据”(价格、时间和订单簿信息,以及系统先前交易活动的历史数据),以优化和“搜索”要实际执行的最佳算法第 1 部分的时间。即“校准”并测试将在#1 中执行的算法。

第一个要求低延迟和极好的市场准入(即以最少的跳数直接连接到交易所)。这部分通常必须用 C 或 C++ 等非 GC 语言编写(垃圾收集器停止世界时的半秒延迟可能会非常昂贵)。第二个通常需要一个网格和许多好的模拟和统计分析软件、人工智能算法等。

于 2009-07-24T11:22:19.283 回答
9

我只想补充一点,这种交易中最流行的应用程序往往是 CEP(复杂事件处理)。一些示例是 Streambase、Apama 和 Aleri。另一方面,为了处理海量数据,人们使用高速数据库,如 KDB、OneTick 和 Vhayu。

如果你想了解这种技术挑战,我建议先看看这些供应商。他们的营销材料将使您很好地了解业务应用程序以及技术挑战。

于 2009-09-10T06:19:35.230 回答
7

在某些时候(例如在期货到期时),每分钟有必要进行数千次交易——显然人类无法在没有帮助的情况下做到这一点。顺便说一句,这对程序员来说是一个非常紧张的时期,好像出了什么问题,几乎没有恢复的机会 - 程序员倾向于看着他们的日志文件流淌着他们的心在他们的嘴里。

于 2009-07-24T11:16:44.647 回答
3

您需要跟踪价格,快速决定涨跌并相应地买卖。由于有很多不同的头寸交易,您用于分析和执行交易的软件越好,您可能赚到的钱就越多。

更好的意思是经常更新数据,以一种可以快速对它们做出反应的方式查明有趣的趋势,在执行经常需要的操作时易于使用。

于 2009-07-24T11:10:58.120 回答
1

为什么计算机/软件在这个领域如此重要?

最高性能和最低延迟是可取的,因为您对事物的反应越快,您可能赚到的钱就越多。

于 2009-07-24T11:09:23.630 回答