WILLIAM O’NEIL 高級工程師 陸強
WILLIAM O’NEIL(威廉歐奈爾),成立于1963年,致力于為投資機構和投資者提供投資建議和獨立調研報告,目前已服務超過500家世界頂級投資機構。
我所在的是威廉歐奈爾信息科技上海有限公司,團隊負責公司所有量化基金產品的業務,同時進行所有數據相關的技術研發。
1. 我們用 DolphinDB 做了什么
目前我們使用 DolphinDB 處理所有的時序數據,主要進行因子研發、中高頻數據處理和 tick 級流數據處理。每天的新增數據量在1000萬~5000萬條級別,如果存為 CSV 文件的話,總共為4~5 GB。
1. 1 因子研發
我們結合財報和日線數據衍生出大量因子,然后使用 DolphinDB 的分布式存儲、分布式計算和實時流計算等功能進行因子的存儲、計算和建模。在使用 DolphinDB 進行因子研發的過程中,我們可以快速處理高達 PB 級別的數據集,利用內置的多范式的編程語言,高效開發出不同風格的因子。在計算得到一些因子后,我們可以再次使用 DolphinDB 實時計算產生基于這些因子的衍生因子,投研效率得到極大提升。
此外,我們使用 DolphinDB 進行因子評估來測試因子的有效性。之前我們使用 Python 加上某國外知名云服務商的數據庫進行因子回測,在使用 DolphinDB 之后,發現 DolphinDB 也提供了一些高效的回測工具。比如通過一個 replay 函數,我們就可以模擬真實的生產環境,通過模擬回放的方式將數據注入到流計算框架中,方便之后的回測計算。在這個過程中,我們可以使用不同的回放形式,并且通過設置不同的回放速率進行勻速、倍速或者極速回放,還可以將多個表的數據回放到同一張表中,總體來說使用非常方便。未來隨著項目的推進,我們計劃將這塊業務逐漸遷移到 DolphinDB 中。
1.2 處理中高頻數據
目前我們團隊專攻中高頻數據,這塊的數據量非常龐大,歷史數據大概在 TB 級別。在使用 DolphinDB 處理高頻數據時,我們會對輸入的行情數據使用時間序列聚合引擎生成分鐘級 K 線,然后根據分鐘級 K 線使用自定義函數生成狀態因子,同時將輸出結果指向另一個流數據表以方便之后的其他計算。在 DolphinDB 的助力下,我們實現了日線數據的高效處理,并且將研究的數據精度推進到分鐘級,在降低開發成本的基礎上極大提升了研發效率。
1.3 搭建 tick 級數據流架構
我們團隊在去年搭建了一個處理 tick 級數據的數據流架構——使用 Kafka 連接數據流,然后傳到 DolphinDB 中進行計算分析,最后得到所需數據。該數據流框架能夠實時產生我們需要的市場信號。
在我看來,只要把 Kafka 接數據流這步做好,后邊的很多事情并不需要操心。因為 DolphinDB 提供了非常成熟的實時流計算框架,其中最核心的部件是流計算引擎和流數據表。我們通過流數據引擎進行時間序列處理、橫截面處理、窗口處理、表關聯和異常檢測等操作。同時可以將流數據表作為簡化版的消息中間件,實現數據的發布和訂閱。在投研階段封裝好的基于批量數據開發的因子函數,可以無縫投入實際生產,實現批流一體,加速開發進程。目前 DolphinDB 的延時可以控制在毫秒級,這完全滿足了我們的需求。
2. 回顧數據庫選型
之前我們主要研究中低頻數據,使用某國外知名云服務商來存儲數據,然后用 Python 進行分析計算。當公司有處理高頻數據的需求時,我們發現這套系統并不能滿足對數據處理的理想需求,尤其在數據分析方面,這套系統的反應速度非常慢。
于是我們在市面上尋找匹配公司需求的新產品,希望這款產品能夠實現高效處理時序數據,并且方便未來擴展。
經過一番市場調研與產品性能測試,我們在選型會議上討論了三套方案。
第一套方案是 KDB+。由于 KDB+語言晦澀,學習成本過高,這套方案并沒有被采納。
第二套方案是 NoSQL Cassandra。經過討論,這套方案需要額外招人進行系統的重構搭建,并且后續需要專人進行維護。這會極大增加成本,所以并沒有采用。
第三套方案是 DolphinDB。當時是21年初,市面上已經出現了金融行業處理時序數據“非 KDB+即DolphinDB”的兩家爭霸趨勢。我在會議上對照 KDB+的算法例子做了一些 DolphinDB 的性能測試,然后展示了同樣的例子使用 DolphinDB 語言來寫,腳本明顯會變得更加簡潔。在一些例子中,DolphinDB 的性能超越了KDB+。當時基金經理們大多熟悉 KDB+,我在會議上做完演示后,他們也非常驚訝于 DolphinDB 的優秀性能。
最后在方案表決時,DolphinDB 以壓倒性優勢勝出。
3. 對 DolphinDB 的評價
使用 DolphinDB 已經有一年多了,讓我印象最深刻的就是它的高性能、易上手與及時支持。
高性能
在性能方面,DolphinDB 可以對實時數據進行快速地計算與分析,實現毫秒級的響應速度,完全滿足了我們高效處理時序數據的需求。
易上手
在學習成本方面,由于 DolphinDB 的腳本語言類似 Python,同時提供了很多官方的技術教程,我認為DolphinDB 是非常好上手的。如果是一個有著 C 或 Python 開發經驗的同事,只需要2周、最多1個月的時間,這位同事就能對布置的項目實現上手開發。
及時支持
DolphinDB 技術支持團隊的響應速度非常好。除過一些日常的技術交流,在和技術支持團隊溝通的過程中,我會反饋一些 DolphinDB 原本不提供的接口或者函數的開發需求。不到一個月的時間,我發現之前提到的需求會隨著 DolphinDB 的新版本同時上線,這樣快速且及時的反應速度極大地幫助了我們的研發生產。
4. 文章最后
使用 DolphinDB 給我們的業務帶來了極大的改善。作為一家跨國公司,我們在與國外的同事交流時,也會向他們推薦性能優秀的時序數據庫 DolphinDB。衷心希望 DolphinDB 能夠越做越強,未來在國際上打出更高的知名度!
本文為企業推廣,本網站不做任何建議,僅提供參考,作為信息展示!
推薦閱讀:葉紫
網友評論
請登錄后進行評論|
0條評論
請文明發言,還可以輸入140字
您的評論已經發表成功,請等候審核
小提示:您要為您發表的言論后果負責,請各位遵守法紀注意語言文明