1. 程式人生 > >證券交易系統 -- 為什麼要低延遲?

證券交易系統 -- 為什麼要低延遲?

最近幾年在證券交易領域最熱門的話題不是技術分析,不是交易演算法,而是高頻交易和高頻交易的技術核心,低延遲的交易系統。 在很久以前,所有的交易都是手工完成的。人們買賣股票就是憑證件到券商的視窗去填寫表格,券商檢查帳戶裡的股票現金無誤後,就派專門跑街的人把這個單子送到他們在交易所的紅馬甲那裡去交易。當天交易結束後,交易所把成箱的交易結果送回券商和清算公司。 如果某公司快要倒閉,你想要經快把手裡這家公司的股票脫手,那就當然要儘快的衝到券商那裡把表格填完,然後祈禱跑街的小子跑得快些,券商的紅馬甲動作快些,好讓你的股票在價格跌到零之前賣出去。這時候人們最希望的就是股票交易瞬間完成,最好沒有跑街的人和紅馬甲這些過程。可是該死的跑街的小子在路上還去買了杯咖啡,紅馬甲沒把我的單子放在最上面。這太讓人無法忍受了,我們需要最快的成交方式。 我們今天講的就是股票交易的延遲。上面的例子已經是一個世紀以前的交易方式了,電報和電話的出現取代了跑街送單的人,計算機和網路的出現完全取消了交易過程中的人工操作,一個普通人可以在一秒之內完成一個交易,交易速度如此之快,它已經超出了人們的反應速度,讓人很難相信更快的交易系統有沒有意義。實事上這只是我們要講的故事的開始... 從上世紀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%。如果這個命中率達到了我們的要求,我們就說系統延遲可以接受了。