97国产精品视频人人做人人爱,久久精品亚洲日本,亚洲国产精品线播放,亚洲另类欧洲综合久久

      如何高效提升量化投研效率?來自辰鈺投資的案例分享
      2022-09-30 11:37:49 來源:榕城網(wǎng)

      面對(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)鍵詞:

      相關(guān)閱讀
      分享到:
      版權(quán)和免責(zé)申明

      凡注有"實(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)生活"的電頭。