因子收益率怎么計算,復雜因子秒級計算,文諦資產是這樣做到的...
因子收益率怎么計算,復雜因子秒級計算,文諦資產是這樣做到的...
上海文諦資產管理有限公司(以下簡稱“文諦資產”)秉持理性、務實、高效、專業的投資精神,憑借科學的量化投資戰略、先進的量化交易技術和成熟的風險管理能力深耕量化領域,以創造長期穩定收益為投資目標,為國內外投資者和合作機構提供專業的投資服務。文諦資產業務持續保持穩健發展,公司主要從事 CTA 和股票的量化策略研究與運作。
本文由文諦資產的首席策略官劉一夫、首席框架官吳永華、首席數據分析師王哲共同撰寫,分享關于 DolphinDB 的使用場景、使用效果、技術服務、選型過程和學習經驗。
文諦資產首席策略官 劉一夫
文諦資產首席框架官 吳永華
文諦資產首席數據分析師 王哲
大數據技術的飛速發展為量化投資注入了新鮮活力,隨著數據挖掘工具的更迭換代,各大投資機構也在不斷夯實自身的數據處理和分析能力。文諦資產作為量化統計及應用數學領域的投顧專家,在存儲、計算和分析大量時間序列數據的過程中,選擇了高性能的分布式時序數據庫 DolphinDB 作為強有力的研究工具。在合作的三年間,DolphinDB 為文諦資產提供了集數據庫、分布式計算和編程建模于一體的專業服務。

使用場景
我們主要在行情存儲、因子挖掘和模型回測三方面用到了 DolphinDB。
行情存儲
在行情存儲方面,我們主要使用 DolphinDB 進行數據的入庫、清洗與查詢。
在存儲數據時,我們借助 DolphinDB 的分布式特性,通過提前確定好數據導入的分區字段與分區粒度,提高后續數據檢索與分析的效率。比如在查詢數據時,DolphinDB 會以分區字段為數據過濾,通過 SQL 引擎快速定位要查找的數據塊,從而避免對整張表進行掃描,這極大提高了查詢速度。此外,為方便后續的數據分析工作,我們會使用 DolphinDB 對海量時序數據進行高效清洗, 找出并消除殘缺、錯誤或重復的數據,進而輸出一份高質量的、滿足業務需求的數據。相比其他數據清洗工具隨著數據量的增大自身性能會下降的情況,DolphinDB 在實際應用中能夠保持穩定性能。
因子挖掘
在因子挖掘方面,我們主要使用 DolphinDB 處理數據量龐大、運算復雜的工作任務。
目前我們處理的總數據量大概在幾十 TB,每日新增數據約為 70GB。在使用過程中,我們不僅會用到 DolphinDB 高速存取數據的基本功能,同時會用到其內置的多范式編程語言與多種計算引擎。
比如在處理一些 tick 數據時,我們會使用 DolphinDB 完成前期的一些運算,然后通過 Python API, 將計算結果導入 Python 模型進行組合。其中我們會用到 DolphinDB 的流計算框架,進行流數據的發布、訂閱、預處理、實時內存計算以及復雜指標計算等。以 DolphinDB 內置的時間序列聚合引擎為例,僅需設定幾個參數指標,配合 wsum、corr 等聚合函數的使用,就可以快速方便地實現復雜的滑動時間窗口聚合計算。
模型回測
在模型回測方面,我們會用到 DolphinDB 提供的函數接口、元編程和計算框架,根據這些現有的方法和框架來進行高效回測。
一些現成函數如 context by、crossStat 等的使用可以幫助我們大大提升數據處理、特別是編程的工作效率。例如 context by,該函數作為 DolphinDB 的獨創功能可以實現對時序數據的快速分組。相比 group by 每組只能返回一個標量值的特性,context by 可以使每一個組返回一個和組內元素數量相同的向量。并且在回測工作中,group by 只能配合聚合函數使用,但是 context by 可以與其他聚合函數、移動窗口函數或累計函數等結合使用,這極大方便了研發工作。總的來說,DolphinDB 獨創的諸多函數功能豐富、使用方便,切實有效地幫助我們提升了回測效率。

同時,我們會使用 DolphinDB 的元編程功能。利用元編程設計的程序具有讀取、生成、分析及轉化其他程序的功能。通過生成動態表達式以及延遲執行的元編程,使得研究人員即便在代碼運行時仍可自行修改代碼。此外,一些計算框架如 MapReduce 幫助我們進行并發計算,極大提升了計算效率。
使用效果
在行情存儲方面,我們的研究人員能夠清晰感受到 DolphinDB 的壓縮比率之高和數據落庫速度之快。舉例來說,在處理幾十 TB 的歷史數據時,需要在 DolphinDB 中壓縮數據,而 DolphinDB 的壓縮比例非常優秀, 最高可以達到 10:1,能夠切實地滿足我們的業務需求。
在因子挖掘方面,我們經常會計算一些復雜因子。比如使用單日新增數據計算一個復雜因子,可以實現秒級計算。如果使用大量的歷史數據,整個測試的運算時間甚至可以控制在分鐘級別。
在模型回測方面,由于 DolphinDB 支持數據項目化的批量處理,因此總體的回測效率很高。比如在進行某個特定參數的測試,整體時間可以控制在 1 分鐘內。再比如對大量歷史數據測試全方位的特定參數,從邏輯的實現到最后的產出,整體效率非常高。
技術服務
談及對 DolphinDB 最深刻的印象,就是技術支持服務。
2020年,我們與 DolphinDB CEO 周小華博士及技術團隊當面進行了深入交流。周博士為我們提供了許多專業的建議,同時技術團隊針對我們的業務需求進行了詳細記錄,并且在后續的跟蹤服務中幫助我們逐一實現了需求。
在之后的使用中,我們也會遇到技術疑惑與功能需求。比如今年在處理一些高頻數據時,我們急需一些函數的詳細用法。在與我們溝通后,DolphinDB 的工程師及時教授了我們關于函數的構建、以及改善調優的方法。在平時的技術咨詢中,不論是多晚,即便有時是在周末,我們總會得到技術支持工程師們的及時回復。當然,除了技術咨詢,我們也會向 DolphinDB 提出一些開發需求。比如實現因子,雖然有些因子是不常規的、甚至非常復雜,DolphinDB 的工程師們都會通過現有的功能向我們提供支持。還有必須提的一點,我們曾經向 DolphinDB 溝通了一個特別的功能需求,結果這個功能很快就在下一個版本中得到實現。從需求的提出到功能的實現,整體速度確實是非常驚人的。
無論是支持效率,還是專業程度,我們對 DolphinDB 的技術支持服務都非常滿意。
時序數據庫選型
我們在選型時對比了多家時序數據庫,其中主要考慮的是 Kdb+與 DolphinDB。
Kdb+作為金融領域的老牌時序數據庫,雖然名氣大、使用面廣,但是其作為國外廠商缺乏國內的技術支持,并且其語法晦澀,培訓成本和學習成本較高。
DolphinDB 在查詢和存儲方面的性能明顯優于其他數據庫,其具備的多種流計算引擎對于流數據處理非常友好。同時 DolphinDB 具有高壓縮比,內置豐富的金融函數庫,可以極大便捷研發生產。此外,DolphinDB 可以提供及時專業的技術支持,同時上手門檻較低。
最終,我們選擇了集存儲、計算與開發于一體的高性能分布式時序數據庫 DolphinDB。
學習和使用經驗
總體來看,DolphinDB 的入門是比較容易的。如果有 Python 和 SQL 的語法基礎,那么只需一兩周的時間就可以上手 DolphinDB。
若要更加精進地使用 DolphinDB,需要對 DolphinDB 進行更加深入的了解。首先要了解存儲引擎的架構,目前 DolphinDB 使用的是 OLAP 和 TSDB 兩種引擎,可以提供很高的寫入吞吐。其次,要深入理解數據庫的設計原理,比如分區表的工作原理,這會大大提升數據查詢的效率。然后,在數據計算方面要學習一些高效處理所需的函數,這樣在實際業務場景中可以更加自如地使用函數。最后,要保持一顆學習的心態。因為 DolphinDB 在不斷地優化提升,不斷地擴展迭代一些新的功能,要用好 DolphinDB,一定要保持學習態度、緊跟版本技術動態。
結尾
在友好合作的三年間,DolphinDB 切實有效地助力文諦資產進行量化投研。希望 DolphinDB 可以精益求精,未來在行業中的發展越來越好,越來越強。文諦資產也會堅守不斷追求創新、大膽向前的精神,推動量化投資向更高更遠發展。
上海文諦資產管理有限公司簡介
上海文諦資產管理公司在中國上海自貿區注冊成立,注冊資金1000萬元人民幣。2018年取得證券投資基金業協會會員資格,2019年取得“3+3投顧資格”。
公司以科學的量化投資戰略、先進的量化交易技術和成熟的風險管理能力為國內外投資者和合作機構帶來世界前沿的投資服務體驗,以創造長期穩定收益為投資理念及投資目標。目前企業的合作機構包括國信證券、光大證券、國海證券、國新證券、華泰期貨、興證期貨、東證期貨、五礦期貨、上海信托等金融機構。