面對(duì)海量增長(zhǎng)的高頻數(shù)據(jù),關(guān)系型數(shù)據(jù)庫多次崩潰。在對(duì) DolphinDB、MongoDB 和 KDB+ 進(jìn)行充分調(diào)研對(duì)比后,辰鈺投資選擇了高性能、易學(xué)習(xí)、同時(shí)提供豐富金融函數(shù)的時(shí)序數(shù)據(jù)庫 DolphinDB。在DolphinDB 的助力下,辰鈺投資的量化投研效率得到極大提升。本文將由辰鈺投資分享使用DolphinDB的具體實(shí)踐。
本文作者:辰鈺投資 董事長(zhǎng) 李棟,董事 陳志凌, 高級(jí)工程師 蘇虎臣
圖1 辰鈺的核心策略發(fā)展圖
目前辰鈺投資使用的系統(tǒng)可以輕松實(shí)現(xiàn) Tick-to-trade 微秒級(jí)延時(shí),支持多策略、大并發(fā)報(bào)單,同時(shí)支持券商多種風(fēng)控模式,形成了低延時(shí)、高并發(fā)、強(qiáng)風(fēng)控的顯著優(yōu)勢(shì)。
投研到交易,全流程效率提升
在系統(tǒng)中,我們使用高性能時(shí)序數(shù)據(jù)庫 DolphinDB 來幫助提升投研和交易的生產(chǎn)效率。面對(duì)每天 20GB 左右的新增數(shù)據(jù),DolphinDB 在我們的研究端起到了支撐作用。目前我們的主要業(yè)務(wù)是數(shù)據(jù)挖掘和策略研究。在做量化的過程中比如進(jìn)行因子挖掘、性能計(jì)算時(shí),對(duì)數(shù)據(jù)處理的性能要求非常高。在使用 DolphinDB 后,業(yè)務(wù)效率提升了5-10倍。
圖2 DolphinDB 的系統(tǒng)架構(gòu)圖
首先,我們使用 DolphinDB 進(jìn)行數(shù)據(jù)的準(zhǔn)備、清洗和挖掘。比如數(shù)據(jù)清洗。隨著數(shù)據(jù)量的持續(xù)增長(zhǎng),難免出現(xiàn)殘缺、錯(cuò)誤或者重復(fù)的數(shù)據(jù),那么在進(jìn)行因子挖掘、策略研究等操作前要先找出并消除這些不符合規(guī)范的數(shù)據(jù)。之前使用的數(shù)據(jù)清洗工具的性能會(huì)隨著數(shù)據(jù)量的增大而下降,無法處理 TB 級(jí)別以上的數(shù)據(jù)。但是通過 DolphinDB 內(nèi)置的分布式文件系統(tǒng),合理設(shè)計(jì)分區(qū),分布式計(jì)算與數(shù)據(jù)清洗性能基本不會(huì)隨著數(shù)據(jù)量的增大而下降,目前效率提升超過70倍。
其次,使用 DolphinDB 強(qiáng)大的流數(shù)據(jù)功能助力指數(shù)增強(qiáng)、CTA、套利等方面策略研究。比如中證500指數(shù)增強(qiáng),我們以大量全新的 Alpha 因子為技術(shù)核心,同時(shí)結(jié)合全新改版的交易算法和日內(nèi)回轉(zhuǎn)交易算法進(jìn)行選股。在研發(fā)環(huán)境中,以行情回放的方式模擬實(shí)時(shí)數(shù)據(jù)流,通過流數(shù)據(jù)訂閱發(fā)布機(jī)制和時(shí)間序列聚合引擎、響應(yīng)式狀態(tài)引擎、橫截面引擎等多種流計(jì)算引擎,實(shí)時(shí)高效地計(jì)算主買、主賣等量?jī)r(jià)指標(biāo),極大地提升了研發(fā)效能。
最后,我們使用 DolphinDB 的分布式計(jì)算功能處理高頻數(shù)據(jù)。研發(fā)策略時(shí),需要處理大量的逐筆行情數(shù)據(jù),之前使用的關(guān)系型數(shù)據(jù)庫的性能非常差,遠(yuǎn)遠(yuǎn)不能滿足我們的業(yè)務(wù)需求。DolphinDB 的分布式架構(gòu)可以輕松實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的毫秒級(jí)快速訪問和計(jì)算。再比如處理一些股票或者標(biāo)的,每天要進(jìn)行幾十萬、甚至上百萬筆的自動(dòng)交易,關(guān)系型數(shù)據(jù)庫很難對(duì)此進(jìn)行處理,但是 DolphinDB 可以快速基于逐筆數(shù)據(jù)建立策略,極大提升了研發(fā)效率。由于團(tuán)隊(duì)的技術(shù)人員大多熟悉 Python,在實(shí)際使用中,我們將 DolphinDB 封裝成一個(gè)庫,可以通過 Python 直接進(jìn)行訪問。僅僅通過一行命令就可以高效、充分地使用 DolphinDB 的海量存儲(chǔ)和快速計(jì)算功能。
存儲(chǔ)大 PK
在使用 DolphinDB 前,我們先后使用過文件系統(tǒng)、MySQL 和 PostgreSQL 存儲(chǔ)數(shù)據(jù)。
之前使用文件系統(tǒng)會(huì)先將數(shù)據(jù)落在本地,然后用 Python 進(jìn)行計(jì)算。但是文件系統(tǒng)在實(shí)際應(yīng)用中存在一些不足。首先,在存儲(chǔ)過程中文件系統(tǒng)的 IO 是一個(gè)很大的瓶頸。其次,在處理大量數(shù)據(jù)時(shí),文件系統(tǒng)過于龐大,進(jìn)行存儲(chǔ)、查詢等操作費(fèi)時(shí)且費(fèi)力。同樣地,MySQL 和 PostgreSQL 這兩個(gè)數(shù)據(jù)庫在實(shí)際測(cè)試中都非常慢。如果要處理的數(shù)據(jù)量很大,系統(tǒng)甚至?xí)o法工作。
因此,我們想要搭建一套新的系統(tǒng)。主要考慮的數(shù)據(jù)庫有 DolphinDB、MongoDB 和 KDB+。
由于 MongoDB 缺乏函數(shù)支持、舊代碼改起來比較費(fèi)勁,KDB+的語言較難學(xué)習(xí),整體上手很慢,所以我們放棄了這兩個(gè)數(shù)據(jù)庫。
反觀 DolphinDB,性能比 KDB+更好,語言類 SQL 容易上手,同時(shí)提供豐富的金融函數(shù)。在低頻轉(zhuǎn)向高頻的過程中,原來的系統(tǒng)無法處理驟然劇增的數(shù)據(jù),但 DolphinDB 是這方面的專家,相較之下新系統(tǒng)的速度可以提升10倍左右。在處理逐筆數(shù)據(jù)時(shí),相比之前使用過的文件系統(tǒng),現(xiàn)在的系統(tǒng)效率得到大大提升,并且使用起來也非常方便。此外,DolphinDB 作為一站式數(shù)據(jù)庫,綜合了分布式存儲(chǔ)、編程建模和高性能計(jì)算,可以在研究時(shí)快速抽取某些特定的數(shù)據(jù),這大大加快了我們的研究進(jìn)度。
代碼“驚魂”
因?yàn)橹暗暮芏鄻I(yè)務(wù)都用 Python 進(jìn)行相關(guān)計(jì)算,所以需要將代碼轉(zhuǎn)移到 DolphinDB 中。當(dāng)時(shí)發(fā)生了一件極其反常的事情——用 Python 和 DolphinDB 分別計(jì)算同一個(gè)問題,但最后得到了不同的結(jié)果!
究竟哪個(gè)計(jì)算結(jié)果是對(duì)的?為什么會(huì)發(fā)生這種情況?會(huì)不會(huì)影響到實(shí)際生產(chǎn)?
帶著這些疑慮,我不斷進(jìn)行調(diào)試,最后發(fā)現(xiàn)原來是Python的腳本出現(xiàn)了編寫失誤。一個(gè)因子有很多計(jì)算方法,必須深入到每個(gè)因子的具體需求才能對(duì)應(yīng)實(shí)現(xiàn),相應(yīng)的代碼也會(huì)較為復(fù)雜。當(dāng)時(shí) Python 的腳本中使用了很多嵌套循環(huán),編寫的代碼較多較復(fù)雜,難免出現(xiàn)腳本編寫錯(cuò)誤的情況。但是 DolphinDB 的語言非常簡(jiǎn)潔,實(shí)際中不需要那么多循環(huán),只要一行代碼就可以全部解決,這大大降低了腳本出錯(cuò)的概率,同時(shí)也可以減輕開發(fā)人員的壓力,有效提升研發(fā)的效率。
本文最后
我覺得想要用好 DolphinDB,關(guān)鍵在于理解架構(gòu)。只有清楚一些技術(shù)細(xì)節(jié)比如分區(qū)表的設(shè)計(jì)原理,才能高效使用工具進(jìn)行量化投研。剛開始使用 DolphinDB 的時(shí)候,我發(fā)現(xiàn)使用時(shí)系統(tǒng)的反應(yīng)速度并不是特別快,后來研究了 DolphinDB 的底層架構(gòu)后,我重新優(yōu)化了代碼,發(fā)現(xiàn)速度立刻提升了很多。所以我覺得 DolphinDB 比較考驗(yàn)使用者的水平。使用不同的設(shè)計(jì)方法解決具體的業(yè)務(wù)問題,會(huì)得到完全不一樣的效率。
在此簡(jiǎn)單分享我司使用 DolphinDB 提升投研效率的經(jīng)歷。希望有更多的朋友了解并使用高性能時(shí)序數(shù)據(jù)庫 DolphinDB!
免責(zé)聲明:市場(chǎng)有風(fēng)險(xiǎn),選擇需謹(jǐn)慎!此文僅供參考,不作買賣依據(jù)。
關(guān)鍵詞:
凡注有"實(shí)況網(wǎng)-重新發(fā)現(xiàn)生活"或電頭為"實(shí)況網(wǎng)-重新發(fā)現(xiàn)生活"的稿件,均為實(shí)況網(wǎng)-重新發(fā)現(xiàn)生活獨(dú)家版權(quán)所有,未經(jīng)許可不得轉(zhuǎn)載或鏡像;授權(quán)轉(zhuǎn)載必須注明來源為"實(shí)況網(wǎng)-重新發(fā)現(xiàn)生活",并保留"實(shí)況網(wǎng)-重新發(fā)現(xiàn)生活"的電頭。
熱點(diǎn)
- 中國(guó)電熱毯成歐洲御寒爆品 歐洲人為何爆買中國(guó)?
- “國(guó)慶黃金周”即將來臨 長(zhǎng)沙一手住宅供應(yīng)環(huán)比上漲115%
- 七成蔬菜價(jià)格下跌 湖南水果市場(chǎng)迎來“大換季”價(jià)格回落
- 國(guó)慶假期 “即興度假”成新趨勢(shì)!“本地探索”成為主流
- 包裝上標(biāo)注干酪含量的奶酪棒 到底是不是“天然奶酪”?
- 人民幣匯率“破7” 依然是SDR籃子里的優(yōu)等生
- 8月湖南新能源汽車上險(xiǎn)數(shù)環(huán)比增長(zhǎng)11.6% 占全省過半
- 從“網(wǎng)紅”到“長(zhǎng)紅” 火鍋業(yè)的新趨勢(shì)是什么?
- “雙11”還未到直播間已燃起火藥味 超級(jí)主播能成為直播的定心丸嗎?
- 國(guó)慶出游升溫在望 預(yù)計(jì)國(guó)慶長(zhǎng)途游產(chǎn)品日均訂單大幅增長(zhǎng)
頭條
- 高價(jià)農(nóng)產(chǎn)品頻現(xiàn)市場(chǎng) “谷賤傷農(nóng)”的話題再一次引起各方關(guān)注
- 班期為兩周一班的國(guó)際遠(yuǎn)洋航線填補(bǔ)了海南通往非洲的集裝箱航線空白
- 實(shí)現(xiàn)跨境電商與網(wǎng)絡(luò)直播的有效聯(lián)動(dòng) 曹妃甸電商產(chǎn)業(yè)發(fā)展跑出“新速度”
- 從明令禁止到有序放開 “網(wǎng)售處方藥”開閘已歷經(jīng)多年探索與醞釀
- 金價(jià)下降疊加國(guó)慶傳統(tǒng)婚慶旺季 上周末北京多家金店內(nèi)迎來不少“淘金”客
- 國(guó)民經(jīng)濟(jì)延續(xù)恢復(fù)發(fā)展態(tài)勢(shì) 就業(yè)物價(jià)等總體穩(wěn)定多數(shù)指標(biāo)好于7月
- 存款準(zhǔn)備金率下調(diào)2個(gè)百分點(diǎn) 未來中國(guó)外匯儲(chǔ)備將呈現(xiàn)怎樣的走勢(shì)?
- 4大商圈將打造國(guó)際消費(fèi)體驗(yàn)區(qū) 新IP將成為北京社會(huì)治理現(xiàn)代化的新標(biāo)桿
- 短期“破7”并不意味著人民幣匯率將出現(xiàn)大幅下行 雙向波動(dòng)是常態(tài)
- 有強(qiáng)力支撐和堅(jiān)實(shí)基礎(chǔ)做支撐 人民幣匯率保持基本穩(wěn)定