Thursday, February 21, 2013

证券交易系统 -- 为什么要低延迟? [ miketan ]

证券交易系统 -- 为什么要低延迟? [ ] 于:2012-01-23 23:08:55 主题帖
最近几年在证券交易领域最热门的话题不是技术分析,不是交易算法,而是高频交易和高频交易的技术核心,低延迟的交易系统。
在很久以前,所有的交易都是手工完成的。人们买卖股票就是凭证件到券商的窗口去填写表格,券商检查帐户里的股票现金无误后,就派专门跑街的人把这个单子送到他们在交易所的红马甲那里去交易。当天交易结束后,交易所把成箱的交易结果送回券商和清算公司。
如果某公司快要倒闭,你想要经快把手里这家公司的股票脱手,那就当然要尽快的冲到券商那里把表格填完,然后祈祷跑街的小子跑得快些,券商的红马甲动作快些,好让你的股票在价格跌到零之前卖出去。这时候人们最希望的就是股票交易瞬间完成,最好没有跑街的人和红马甲这些过程。可是该死的跑街的小子在路上还去买了杯咖啡,红马甲没把我的单子放在最上面。这太让人无法忍受了,我们需要最快的成交方式。
我们今天讲的就是股票交易的延迟。上面的例子已经是一个世纪以前的交易方式了,电报和电话的出现取代了跑街送单的人,计算机和网络的出现完全取消了交易过程中的人工操作,一个普通人可以在一秒之内完成一个交易,交易速度如此之快,它已经超出了人们的反应速度,让人很难相信更快的交易系统有没有意义。实事上这只是我们要讲的故事的开始...
从上世纪80年代开始,机构交易员用计算机下单已经比较普遍,一些公司开始尝试让计算机自动下单,这就是现在流行的算法交易(Algo Trading)的开始。现在很多公司都有各种高度保密的黑盒子算法交易系统,前几年高盛的一个程序员Sergey Aleynikov因为把高盛的一套算法交易源程序放到互联网上被判了刑,成了街上(Wall Street, Bay Street, JinRongJie Street...)和监管者的热门话题。另一个有关的更莫测的词汇是高频交易(High Frequency Trading, HFT),想不想试一下一个人每秒交易一千次的感受?
对于最早出现的基于历史统计数据的算法交易比如TWAP和VWAP等,延迟不是问题,这些交易算法每隔一定时间,比如5分钟,根据历史交易情况安排下一时间段的交易。后来的很多基于机会的交易策略就需要分析行情数据来安排交易,这样的交易策略需要高质量(低延迟的同义词)的行情数据,和低延迟的下单系统。
现在正式进入这一章的主题: 为什么要低延迟?
低延迟的行情数据:如果行情数据的延迟是三秒钟,那么我们刚收到的行情数据实际上是三秒钟前的市场行情,现在的市场价格可能完全不同。如果我们的交易算法基于这样的行情数据,那结果就完全不可预测。如果我们的行情数据的延迟是零,我们看到的就是当前的真实行情价格,太美妙了!实际上所有的系统都有延迟,这包括交易所系统的延迟和我们自己系统的延迟。我们可以假定交易所的延迟对所有的人都是相同的(实际上不总是这样,但交易所决不会承认,请交易所的技术人员吃个饭可能会了解到一些内幕。有些大玩家花大本钱接到交易所较快的端口上),我们只要改进自己的系统就可以了。
低延迟的交易算法和下单系统:和行情数据的延迟差不多,如果我们下的单用了很长时间才到,这个单子就会偏离当前行情,变得莫名其妙。
系统的延迟当然是越低越好,当延迟低到毫秒一下时,降低延迟就会变得极为昂贵。这里说的延迟是系统延迟,从算法生成一个单子到离开自己的机器和网络,进入到交易所的网络和主机。为了降低网络延迟,要把自己的机器和交易所的机器放在同一个机房(co-location),中间用纳秒级低延迟的交换机,不使用网络IP地址转换(NAT),用FPGA处理行情数据。在这种延迟级别上,光速变成了瓶颈,因为光每微妙只能走0.3公里,如果我们的机器离交易主机几个街口,就意味着延迟增加几个微秒。如果在不同的城市,那延迟就不可接受了。这些需要数百万美元或更多的研发费用,还有每月至少数万美元的运营费用。
在降低延迟的过程中,降低到多少才我们的目标呢?其实不要太低,只要比竞争对手低一微秒就可以了。这就是两个人遇到熊的故事,一个人说,不要跑了,我们跑不过熊的。另一个人说,我不要跑过熊,我只要跑过你就可以了.
在实际运行中,我们使用的指标是命中率(Hit ratio):我们送出一百个单子,其中九十个达到交易目标,我们说命中率是90%。如果这个命中率达到了我们的要求,我们就说系统延迟可以接受了。

通宝推:李根,自以为是,一目十行,镐梓,牛栏山二锅头,肖邦,

No comments:

Post a Comment