淘客熙熙

主题:【原创】证券交易系统 -- 为什么要低延迟? -- miketan

共:💬29 🌺214 新:
分页树展主题 · 全看 下页
  • 家园 【原创】证券交易系统 -- 为什么要低延迟?

    最近几年在证券交易领域最热门的话题不是技术分析,不是交易算法,而是高频交易和高频交易的技术核心,低延迟的交易系统。

    在很久以前,所有的交易都是手工完成的。人们买卖股票就是凭证件到券商的窗口去填写表格,券商检查帐户里的股票现金无误后,就派专门跑街的人把这个单子送到他们在交易所的红马甲那里去交易。当天交易结束后,交易所把成箱的交易结果送回券商和清算公司。

    如果某公司快要倒闭,你想要经快把手里这家公司的股票脱手,那就当然要尽快的冲到券商那里把表格填完,然后祈祷跑街的小子跑得快些,券商的红马甲动作快些,好让你的股票在价格跌到零之前卖出去。这时候人们最希望的就是股票交易瞬间完成,最好没有跑街的人和红马甲这些过程。可是该死的跑街的小子在路上还去买了杯咖啡,红马甲没把我的单子放在最上面。这太让人无法忍受了,我们需要最快的成交方式。

    我们今天讲的就是股票交易的延迟。上面的例子已经是一个世纪以前的交易方式了,电报和电话的出现取代了跑街送单的人,计算机和网络的出现完全取消了交易过程中的人工操作,一个普通人可以在一秒之内完成一个交易,交易速度如此之快,它已经超出了人们的反应速度,让人很难相信更快的交易系统有没有意义。实事上这只是我们要讲的故事的开始...

    从上世纪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%。如果这个命中率达到了我们的要求,我们就说系统延迟可以接受了。

    通宝推:博客南,肖邦,牛栏山二锅头,镐梓,一目十行,自以为是,李根,
    • 家园 如果增加交易费的话,HFT立马就死翘翘了

      现在这是炒的正热的话题,到底HFT是抢钱还是增加了市场的流动性,公说公有理,婆说婆有理。

    • 家园 【讨论】楼主可能混淆了两个概念

      我在国内做过几年美股操盘手(前几年很红火,许多刚毕业的毛头小伙子短时间就在此行业内掘到了人生第一桶金),不过现在大多转行了,因为SEC规矩多了,限制多了,不好做了。

      你说的测试大机构的买价是5块的做法,我们称之为暗盘,因为美股交易花样多多,送单的通道非常多,每种通道的手续费计算方式和摆单花样都不尽相同。

      很多大机构都是使用电脑程序买卖的,而不用人工(节约成本)。

      比如,某个大机构(比如某个养老基金)今天想在中午之前以不高于100元的价格买500手IBM的股票,那么他就设置好电脑程序规矩,让电脑程序自动按设定的条件断断续续地买入股票,他人呢?则出去喝咖啡去了。

      比如,有很多大机构摆出来的order是暗的(dark pool),就是任何人都看不到的,称之为暗盘;再比如,很多order是reserve的,也就是说,比如,你从盘面上看到他在ARCA通道上只摆出了一手的买单,可实际上他摆出来的这一手单子背后可能reserve着上千手单子......当然这些谁都看不出来,都是要试要判断才能确定,一旦被某个交易员判断准确了,他就可以疯狂地利用对方的电脑程序的机械化执行去套利了。

      具体说,我在某只股票上测试(也就是做试验,看是否有套利机会):我通过某个暗盘通道在4.80做空(也就是卖出)一手,发现居然成交了(这种成交当然是跟暗盘成交的,而不是跟所有人都能看到的明盘order成交),这说明有人暗地里想在此价位买入(他把order摆在暗盘通道里当然说明他想偷偷地买啦,否则他若正大光明地摆出来一个所有人都能看到的1000手的order,那岂不是相当于告诉所有人“作为一个大机构,我很看好这支股票,所以今天我很想买这只股票,并且打算买1000手”)。

      那我继续测试,测什么?怎么测呢?我得把价格顶上去继续试!具体怎么做呢?我通过某个明单通道(比如NYSE这个通道)在4.85摆上一个一手的买单(也就是所有人都能看到的一个order),然后我再在4.85做空一手暗单,又成交了!说明什么?说明这个买家在4.85这个价位也愿意买入。那好,我继续测试,一直测试到5.00他都愿意买。但是到5.01时我送出的暗单没成交,说明什么?说明他不跟着我走了,说明他最高愿意在5.00买入,再高的价格他就不买了。好!此时我已经知道他愿意接受的最高价格了。

      那么接下来就该我套利了:我会想方设法先把这只股票的价格打压下去,具体步骤不说了,比较繁琐累人复杂。比如说我把价格打压到了4.86,那么我就开始利用明盘买入,所有拦路虎统统吃掉,一直买到5.00为止,此时我手上可能已经累积买入了60手,然后在5.00用暗盘通道将手上的这60手股票一股脑全卖给这个大买家,OK!套利成功,钱到手了。再把价格打压下去,此步骤重复进行......运气好的话,此步骤可能重复一天,也可能重复两三次就结束了。

      至于此套利步骤能做几次,取决于这个买家到底想买多少手。他到底想买多少手?我也不知道啊!因为他摆出的是暗盘啊,除了他自己,谁都猜不到也看不到他到底想买多少。

      如果他想买100手,那我大概做两次就把套利机会用完了,如果他想买很多,在5.00以下的价位有多少买多少,那我就可以做一天了。

      以上就是暗盘套利的做法,说的也只是大概,要完全说明白得很大篇幅。

      楼主可能混淆了一个概念:高频交易。现在说的高频交易,通常是指利用低延迟的高频交易,而非楼主所描述的类似于暗盘交易之类的意思,也非很多人字面理解的在一天内频繁交易的意思。主要是高盛或knight等这些公司的重要赚钱手段,也就是楼主说的下单的主机跟纽交所或纳斯达克的主机在同一机房或者只隔着几个街区,总之,离得很近,并且用最好的机器,比别人要快几个微妙甚至几个毫秒。

      高频交易是我们这些场外交易员痛恨的交易不公的作为,因为高频交易对我们不利。什么不利?因为他撤单快啊!比如我看到4.88摆着10手的offer(就是卖单),我很高兴,因为我很想在如此之低的价位多买点,但当我送出4.88的order去买他时他突然撤掉了,我买和他撤几乎是同时发生的,为什么?他机器指令反应快啊!为什么快?因为他的电脑路由交换机都在美国纽约啊,就在纽交所的交易主机的跟前啊,我从中国跨洋过海的送过去的单子被他快速地知道了,并且他的机器的指令比我的指令跑得快,他马上发出指令把他自己的单子撤掉了,所以我就买不到了。老这么逗我玩,恨死了。就这么简单。我们称之为可恶的闪单。

      通宝推:博客南,
    • 家园 请教一个问题,不知道对于在国内做高频交易如何看?

      最近有人要我去做高频交易,我原来的职业是做软件开发的,但是对股票知识也懂一点,最近看了一两本高频交易的书籍,但是还是没有底,毕竟对高频交易没有接触过,也很难找到人去交流。所以不知道这个是陷阱还是机会。

      • 家园 国内做不了高频的

        至少和美国的高频交易肯定不是一回事,国内的交易所在技术上支持不了,政策上我看也很难通过。

        当然减少延迟总是好的,国内交易的slippage相对很大,做好平台把slippage降下来还是很有价值的;如果你能做出比别人都快的平台,那就非常有价值。

    • 家园 该收交易税了

      这样完全不产生价值,只是收割机构投资者而已,实在是个比较糟糕的事情

      所以说股市不敢玩,没实力的去了哪都是被收割的命,还不如老老实实的干自己的事情,卖点劳力赚钱

      再说一点,普通人想要玩HFT,绝对没可能,入场的门槛非常之高。应该说这个,有能力做得人自然会去做(而不会说)。我们在这讨论的,都还只是场外看戏的,没能力做的,所以在自己没这个能力的时候,也就不必费心力去研究了

      赚钱主要还是赚机构投资者的钱(因为他们钱多),也就是各大养老金之类的钱

      赚钱的算法,有个比较简单的,就是flash order。简单的说就是比如机构投资者挂一些比较大的买入单,比如说目标买入价,在5.00都买入,现在市价是4.80,可是这个时候未必有卖出单。所以这个flash order就是,出一个很小的卖出单,看看4.80有没有人买,有人表示愿意买,但是这单就立刻撤了(没有成交),所以这个时候价格还是4.80,因为没有成交。随后会继续测试,一直测试到比如5.01,这个时候机构投资者挂的单,因为超出了价格,所以就不买了,这时候卖家就知道有人以5.00的价格挂了一个买单(注意这个时候市场的价格还是4.80左右,因为flash order没有成交)。ok,那这时候就可以,比如以任何低于5.00的价格收单(因为他比较快,可以先收?),以高于市价的价格把单子卖给机构投资者了,凭空毫无风险的赚钱,这个可真是零风险的

      原理很简单,而且就算法上来说实在没啥技术含量……可以因为他有效的利用了flash order这个机制,所以就是可以赚钱。我觉得这个事情非常的不合理,可是也没办法具体说到底哪里不合理,只能说感觉比较糟糕

      还有一个逻辑就是,比如说美国伊朗突然擦枪走火开战了,那计算机在收到bloomberg的新闻后,可以用几毫秒的时间立刻买卖股票,可是人类收到这个信息,却要经过很多流程,比如说首先要显示到屏幕上,此外人类还要点开,还要用眼睛去看,还要用大脑去想,还要移动手指,按键,这样可能有很长一段时间的延迟(最短1分钟,最长10分钟),这段时间,嗯,你可以算算HFT已经做了多少单子了。所以等人类这个延迟怪兽反应过来的时候。HFT已经买卖了很多了,就靠这个时间差赚钱

      算法方面,计算机的算法基础的就这么多,都是数学上的东西,当年ibm的深蓝用的还是专门优化的下象棋专用芯片,但是好像也没听说有谁开发了HFT专用的优化算法的trading芯片,而且也没听说有谁构建一个超级计算机专门用来做trading的,没人优化算法大家都是在拼速度和延迟,所以如果说算法上有了多大的创新,可能就还是比较可疑的。顶多是做数据挖掘的时候建模方式不同吧。算法保密,主要还是一个要唬住自己的投资者,一个是泄密了会被人用算法针对,就变成别人赚自己的钱了

      当然我什么都不了解也什么都不懂,这只是胡扯随便说说

      通宝推:博客南,
      • 家园 如果HFT只是leech,现在的问题是算法能不能胜过HF

        T,或者不依赖HFT.

        似乎一部分人说我的算法预测本事很强,不在乎那几秒,甚至说我的算法不是在做日内交易。另一部分人说,狗屁算法,你那是吹牛,我比别人快就是赚那个差价,谁在乎你什么算法不算法的。

        说起来,似乎的确实鸡同鸭讲,有必要把两者区分开。

      • 家园 说得不靠谱

        随后会继续测试,一直测试到比如5.01,这个时候机构投资者挂的单,因为超出了价格,所以就不买了,这时候卖家就知道有人以5.00的价格挂了一个买单(注意这个时候市场的价格还是4.80左右,因为flash order没有成交)。

        别人挂什么单子根本不用测,order book上都有,可以直接读到。另外做高频的应该知道挂的单子根本不靠谱,有大单子买进或卖出都不说明问题,因为大单子基本上都是其他高频挂的,有风吹草动瞬间就撤了。

        ok,那这时候就可以,比如以任何低于5.00的价格收单(因为他比较快,可以先收?),以高于市价的价格把单子卖给机构投资者了,凭空毫无风险的赚钱,这个可真是零风险的

        哪有这么好的事情,先看价格、再看时间,别人已经挂了5.00买,你就不可能以更低的价格买进,除非5.00的单子都下完了。

        还有一个逻辑就是,比如说美国伊朗突然擦枪走火开战了,那计算机在收到bloomberg的新闻后,可以用几毫秒的时间立刻买卖股票,可是人类收到这个信息,却要经过很多流程,比如说首先要显示到屏幕上,此外人类还要点开,还要用眼睛去看,还要用大脑去想,还要移动手指,按键,这样可能有很长一段时间的延迟(最短1分钟,最长10分钟),这段时间,嗯,你可以算算HFT已经做了多少单子了。所以等人类这个延迟怪兽反应过来的时候。HFT已经买卖了很多了,就靠这个时间差赚钱

        这个也不靠谱。首先,高频交易本质上依赖技术分析的(极短的时间内基本面的影响可以忽略),而突发事件是完全随机的,是要回避的。我知道的大多数交易策略,在有新闻前都是要平仓的,新闻过后一段时间再重新交易。当然也有专门针对新闻的策略,但是也不是那么简单就能赚钱的。新闻来临前大单都会被撤,bid和ask会被拉的很开,你第一时刻知道方向第一个下单也未必能稳赚钱。

分页树展主题 · 全看 下页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河