高频交易

在过去的几周里,我遇到了很多关于高频交易的文章。 他们都谈论计算机和软件的重要性,但是因为它们都是从财务的angular度出发的,所以没有关于软件做什么的细节。

任何人都可以从程序员的angular度来解释什么是高频交易? 为什么电脑/软件在这个领域如此重要?

为了扩大保罗所说的话:

执行HFT或UHFT的服务器几乎总是位于交换机的数据中心。 这可以最大限度地减less延迟,并允许algorithm使用Flash订单(可能会很快被禁止)在订单被广播到市场之前首先查看订单stream。 很多algorithm会在几毫秒内评估一个命令,这是一个毫秒级的游戏。 交易团队已经知道所有的停止,包括聘请内核开发人员build立自定义操作系统组件,以更好地优化时间点击NIC和采取的行动之间的时间。

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

第一个交易是在大宗交易之前进行。 为了用保罗的例子来购买IBM的100万股股票,HFTalgorithm公司将寻求购买压力。 不同交易所和暗池的公司计算机将需要共享信息,因为订单将被划分,通常在多个交易所和暗池中执行。 HFTalgorithm将使用统计/机器学习模型来预测购买压力的大小,如果它确定了足够多的话,它也将积累来自不同市场的股票,并试图以稍高的价格出售它们。

二是stream动性回扣交易,交易所将向市场参与者增加stream动性。 ( 请参阅直接边缘定价 )购买或出售的股份只能在很短的时间内持有。 目标只是收取回扣,甚至在其他一切事情上都能挣脱。

在这两种策略types中,这个想法都是在交易中创造便士(或分数),并且每天多次这样做。

正如你可能已经注意到有很多HFT工作可用,因此交易变得更加拥挤。 我认为这有点像21世纪初期的统计数字,并且最终交易将不会很有利可图,因为有那么多球员正在努力。

至于软件为什么重要:毫秒重要。 延迟是非常重要的,代码需要紧密,快速和稳定的稳定。 当市场违背你的行为时,发生阿尔戈崩溃和股票陷入困境并不是很有利可图。 针对这些要求进行工程devise是必然的,需要不同的技能 实时处理完整订单的书需要一些马力和很好的algorithm。 虽然这很有趣也很有趣。

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

  1. 实时超低延迟交易 – 订阅来自各种不同来源的实时订单书和价格信息,执行校准algorithm,devise为以最小的滑点执行大量订单(即,您希望最终购买100万股IBM而没有太多的移动市场),或者只是试图统计基于短期套利赚钱。 该系统还必须提供良好的风险和职位pipe理工具,以允许一个或多个人类操作员有效地监控和控制系统正在做什么。

  2. 大量的“时间点数据”(价格,时间和订单书信息,以及系统上一次交易活动的历史数据)的“隔夜/每周”等分析,希望优化和“search”要在真实中执行的最佳algorithm时间由第一部分。 即“校准”并testing将在#1中执行的algorithm。

第一个要求低延迟和非常好的市场准入(即以最小的跳数直接与交换机进行networking连接)。 这部分通常必须用C或C ++等非GC语言编写(半秒钟的延迟,而垃圾收集器阻止世界可能是非常昂贵的)。 第二个通常需要一个网格和很多好的模拟和统计分析软件,AIalgorithm等等。

我只想补充一下,在这种交易中最stream行的应用往往是CEP(复杂事件处理)。 一些例子是Streambase,Apama和Aleri。 另一方面,为了处理大量的数据,人们使用KDB,OneTick,Vhayu等高速数据库。

如果你想了解这种技术挑战,我build议先看看这些供应商。 他们的营销材料将给你一个良好的商业应用意识,以及技术挑战。

在某些时候(例如期货到期),有必要每分钟进行数千次交易 – 显然人类无法做到这一点。 对于程序员来说,这个BTW是一个非常紧张的时刻,因为如果出了什么问题,几乎没有恢复的机会 – 程序员倾向于把他们的日志文件放在他们的嘴里。

您需要跟踪价格,快速决定上涨和下跌,并相应地进行买卖。 由于有许多不同的职位交易,用于分析和执行的更好的软件可以为您创造更多的收益。

更好的意思是经常更新数据,确定有趣的趋势,以便您能够快速做出反应,在执行经常需要的操作时易于使用。

为什么电脑/软件在这个领域如此重要?

最高的性能和最低的延迟是可取的,因为你可以对事物做出反应的速度越快,你就可以赚更多的钱。