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