用DolphinDB快速搭建Level2快照流批一體因子計算平臺
在因子投研和生產(chǎn)過程中,往往需要基于大量因子進一步加工有狀態(tài)的復雜指標,比如計算實時 K 線和 MACD、RSI 等。
假設要計算1000個因子,每個因子實現(xiàn)邏輯各不相同,并有特定的如窗口關閉信號、計算窗口邊界等配置,重復搭建流處理框架、多次計算同一中間變量,必然是非常低效的。有沒有什么方法可以對大量因子的流式計算規(guī)范化、格式化,實現(xiàn)工程化管理呢?——DolphinDB 推出了一個方便、快捷、擴展性好和兼容性強的流批一體因子計算平臺原型,提供基于快照數(shù)據(jù)計算分鐘因子和進一步加工分鐘因子為復雜因子的功能,用戶可以根據(jù)我們給出的腳本和部署教程,快速搭建和調試。
完整的平臺搭建步驟和開發(fā)流程,請關注DolphinDB公眾號。
有了這一套流批一體因子計算平臺,業(yè)務人員無需理解 DolphinDB 流計算框架的底層架構,僅需根據(jù)業(yè)務因子計算邏輯編寫函數(shù)表達式,然后調度因子計算平臺的計算接口,便可完成因子計算。
同時,開發(fā)人員也無需再轉寫代碼,因子投研和生產(chǎn)只需一套系統(tǒng)、一種腳本即可無縫切換,極大降低了開發(fā)運維成本,提高了因子投產(chǎn)的全流程效率。
因子計算平臺的架構和功能
Level 2 快照數(shù)據(jù)流批一體因子計算平臺的架構如下圖所示:
主要包含以下幾個功能模塊:
·實時數(shù)據(jù)低延時接入:API 實時數(shù)據(jù)寫入接口、實時行情接入插件、消息中間件訂閱插件;
·歷史數(shù)據(jù)回放:單表和多表嚴格按照時間順序控速回放,將存儲在 DolphinDB 數(shù)據(jù)庫中的歷史數(shù)據(jù)回放成流;
·流計算引擎:對快照數(shù)據(jù)做滾動窗口的聚合計算使用了時間序列聚合引擎,進一步加工成復雜因子依賴響應式狀態(tài)引擎;
·集成開發(fā)環(huán)境:DolphinDB GUI 和 DolphinDB Vscode 用于因子表達式代碼的開發(fā)和調試,通過 API 交互進行任務調度和作業(yè)執(zhí)行;
·低延時消息總線發(fā)布:對接各種消息隊列中間件,把實時計算結果推送到 Kafka, zmq, RabbitMQ, MQTT 等。
因子計算平臺怎么使用?
按照本教程部署完基于 DolphinDB 搭建的因子計算平臺后,基于歷史數(shù)據(jù)的因子開發(fā)階段的調試流程如下:
基于歷史數(shù)據(jù)的因子開發(fā)
因子業(yè)務開發(fā)人員只需要在 DolphinDB 提供的集成開發(fā)環(huán)境中編寫因子計算的函數(shù)表達式,然后調用因子計算平臺的計算接口就可以完成調試。如果編寫因子符合 DolphinDB 的語法,就可以成功執(zhí)行并返回計算結果。如果編寫因子不符合 DolphinDB 的語法,就會報錯中斷。
在已經(jīng)開發(fā)了一定數(shù)量的因子后,需要在生產(chǎn)環(huán)境部署實時計算業(yè)務,部署流程如下:
基于實時數(shù)據(jù)的生產(chǎn)環(huán)境部署
因子業(yè)務開發(fā)人員只需通過客戶端調用封裝好的實時因子計算服務執(zhí)行函數(shù),便可以完成部署。執(zhí)行完以后,DolphinDB server 會出現(xiàn)該流計算服務的入口,是一個表對象,可以通過 DolphinDB 提供的實時數(shù)據(jù)接入工具來接入數(shù)據(jù)。同時也會自動創(chuàng)建流計算服務的出口,也是一個表對象,存儲計算結果。具體的部署步驟和因子開發(fā)流程,可以點擊文末閱讀原文進行參考。
總的來說——
寫個對應的因子函數(shù),
生成 Json 配置文件,
調度新的 Json 文件,
大功告成!
值得一提的是,本次我們推出的因子計算平臺只涉及分鐘頻的因子計算,但是 DolphinDB 的計算能力不局限于此,接下來我們會陸續(xù)發(fā)布快照頻率、1s 頻率甚至更高頻率的因子計算平臺構建最佳實踐教程,敬請期待!