本發(fā)明涉及金融交易設(shè)備領(lǐng)域,具體是一種基于fpga的高頻交易量化系統(tǒng)。
背景技術(shù):
近年來,國際金融行業(yè)的發(fā)展逐步開始聚焦在高頻交易領(lǐng)域,眾多發(fā)達國家中高頻交易所占的交易量已經(jīng)達到了總交易量的50%,在美國這一數(shù)字更是達到了接近70%。
高頻交易系統(tǒng)是一套結(jié)合了軟硬件的綜合處理方案,需要借助高性能計算機強大的運算能力。傳統(tǒng)的交易系統(tǒng),gpu有其強大的浮點運算能力,使用cpu進行邏輯處理和大量的計算,而高頻交易中所需要使用的計算能力已經(jīng)遠遠超出了cpu性能的承受范圍。一種解決方案是使用gpu,然而其對邏輯判斷的處理能力之低下大大影響了其在高頻策略中的應(yīng)用。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種基于fpga的高頻交易量化系統(tǒng),以解決現(xiàn)有技術(shù)存在的問題。
為了達到上述目的,本發(fā)明所采用的技術(shù)方案為:
一種基于fpga的高頻交易量化系統(tǒng),其特征在于:在fpga中構(gòu)建網(wǎng)絡(luò)處理模塊、行情處理模塊、策略運行模塊、linux服務(wù)器四個模塊,fpga首先通過自身網(wǎng)絡(luò)接口接收板卡輸入市場數(shù)據(jù),行情處理模塊將市場數(shù)據(jù)解包,得到最終有效的交易所數(shù)據(jù),策略運行模塊接收到解包后的市場數(shù)據(jù),對數(shù)據(jù)進行處理運算,行情處理模塊以及策略運行模塊通過fpga上塊隨機存儲器blockram進行數(shù)據(jù)緩存,策略運行模塊通過fpga上內(nèi)存控制器實現(xiàn)與內(nèi)存芯片的接口控制,進而實現(xiàn)處理過程中的數(shù)據(jù)緩存,策略運行模塊還通過控制器與pciexpress總線控制器及接口物理層phy模塊將最終盤口數(shù)據(jù)數(shù)據(jù)寫入服務(wù)器的內(nèi)存,以及產(chǎn)生中斷、實現(xiàn)cpu對板卡的控制及狀態(tài)讀取,linux服務(wù)器負(fù)責(zé)處理行情數(shù)據(jù)落盤,以及負(fù)責(zé)處理界面和部分交易過程中人工干預(yù)的邏輯。
本發(fā)明一種基于fpga的高頻交易系統(tǒng),使用硬件技術(shù)替代軟件架構(gòu),達到降低延遲的目的,能有效處理高并發(fā)事件,用fpga網(wǎng)卡實現(xiàn)數(shù)據(jù)數(shù)據(jù)傳輸,具有邏輯靈活等優(yōu)點,用于高頻交易。
附圖說明
圖1為系統(tǒng)整體框架結(jié)構(gòu)圖。
圖2cep模式架構(gòu)示意圖。
圖3vfs層數(shù)據(jù)結(jié)構(gòu)圖。
具體實施方式
如圖1所示,一種基于fpga的高頻交易系統(tǒng),主要包含網(wǎng)絡(luò)處理模塊、行情處理模塊、策略運行模塊、linux服務(wù)器四個模塊,交易的具體實現(xiàn)過程如下:
1.fpga首先通過10gphy(physicallayerinterface)接口接收板卡通過qsfp+接口輸入的市場數(shù)據(jù);
2.10gigemac(mediaaccesscontrol)模塊將數(shù)據(jù)解包;
3.通過行情處理模塊將市場數(shù)據(jù)解包,得到最終有效的交易所數(shù)據(jù);
4.策略運行模塊接收到解包后的市場數(shù)據(jù),對數(shù)據(jù)進行處理運算,行情處理模塊以及策略運行模塊通過fpga片上blockram進行數(shù)據(jù)緩存;
5.策略運行模塊通過內(nèi)存控制器實現(xiàn)與內(nèi)存芯片的接口控制,實現(xiàn)處理過程中的數(shù)據(jù)緩存,策略運行模塊通過控制器與pciexpress總線控制器及接口物理層phy模塊將最終盤口數(shù)據(jù)數(shù)據(jù)寫入服務(wù)器的內(nèi)存,以及產(chǎn)生中斷、實現(xiàn)cpu對板卡的控制及狀態(tài)讀取。
如圖2所示,每個策略獨立地訂閱和接收實時行情和歷史數(shù)據(jù),策略通過對實時行情的運算觸發(fā)交易規(guī)則產(chǎn)生交易信號,輸出交易信號到柜臺執(zhí)行下單命令。從復(fù)雜的系統(tǒng)中看似無關(guān)的事件流中,捕獲事件包含的具體信息,分析出事件流對上層管理和整體業(yè)務(wù)的影響,并及時做出適當(dāng)?shù)姆磻?yīng)。
cep引擎的行情數(shù)據(jù)、歷史數(shù)據(jù)和柜臺的輸入輸出交互數(shù)據(jù)都是通過事先編寫好的適配器或者外部程序傳輸。策略的管理也都完全依靠外部程序。每個策略都單獨地運行于cep平臺上,直接與外部環(huán)境進行數(shù)據(jù)交互。
如圖3所示,為vfs數(shù)據(jù)結(jié)構(gòu)圖,主要有page_cache、buffercache、inode-cache、directorycache。其中page_cache和buffercache主要用于緩沖內(nèi)存結(jié)構(gòu)數(shù)據(jù)和塊設(shè)備數(shù)據(jù)。而inode-cache用于緩沖inode,directory-cache用于緩沖目錄結(jié)構(gòu)數(shù)據(jù)。行情數(shù)據(jù)落盤時,經(jīng)過vfs層,該層的緩沖都放在主機內(nèi)存中,主要在操作系統(tǒng)層緩沖數(shù)據(jù),避免慢速塊設(shè)備讀寫操作,從而影響了io的響應(yīng)時間。vfs和文件系統(tǒng)把數(shù)據(jù)寫到硬件層列。
根據(jù)文件系統(tǒng)和操作系統(tǒng)的不同,一般來說對一個文件的寫入操作包括兩部分,對數(shù)據(jù)本身的寫入操作,以及對文件屬性(metadata元數(shù)據(jù))的寫入操作(這里的文件屬性包括目錄,inode等)。
本發(fā)明中,網(wǎng)絡(luò)處理模塊負(fù)責(zé)行情數(shù)據(jù)的接收和交易信號的發(fā)送。具有高性能的、可擴展性的通用網(wǎng)絡(luò)通信模塊,采用多種系統(tǒng)性能優(yōu)化技術(shù),主要是線程池、對象池和環(huán)形緩存區(qū)等。該模塊能夠支持海量并發(fā)連接,具有較高的數(shù)據(jù)吞吐量,接收海量并發(fā)連接、接收網(wǎng)絡(luò)數(shù)據(jù)包、暫存和發(fā)送應(yīng)用邏輯層的邏輯數(shù)據(jù)。
本發(fā)明中,網(wǎng)絡(luò)通信模塊有足夠的可運行線程來充分利用cpu資源,但線程的數(shù)量不能太多,具體工作線程的數(shù)量和并發(fā)連接數(shù)量不是直接相關(guān)聯(lián)的。該模型提供了最好的可伸縮性,而且其執(zhí)行效率比較高。
本發(fā)明中,行情處理模塊負(fù)責(zé)對交易所lv2加密行情的解析和轉(zhuǎn)碼。
本發(fā)明中,策略運行模塊負(fù)責(zé)處理交易過程中的業(yè)務(wù),包括邏輯和運算。在整個策略運行過程中,數(shù)據(jù)僅僅在fpga內(nèi)傳輸,可大大降低數(shù)據(jù)傳輸和計算的耗時,達到高頻交易的目的。
本發(fā)明中,策略運行模塊用復(fù)雜事件處理cep(complexeventprocessing)來滿足算法交易系統(tǒng)的要求,從而能更好地應(yīng)對算法交易系統(tǒng)實現(xiàn)的復(fù)雜度,以及系統(tǒng)不良的擴展性和兼容性。
本發(fā)明中,linux服務(wù)器負(fù)責(zé)處理行情數(shù)據(jù)落盤,使用數(shù)據(jù)庫或文本等形式;負(fù)責(zé)處理界面和部分交易過程中人工干預(yù)的邏輯。