Qlib是一個面向AI的量化投資平臺,旨在實現潛力,增強研究能力並創造AI技術在量化投資中的價值。
它包含數據處理,模型訓練,回測的完整ML管道;並涵蓋了定量投資的整個鏈:alpha搜索,風險建模,投資組合優化和訂單執行。
藉助Qlib,用戶可以輕鬆嘗試想法,以創建更好的量化投資策略。
有關更多詳細信息,請參閱我們的論文“ Qlib:面向AI的量化投資平臺”。
Qlib框架
在模塊級別,Qlib是一個由以上組件組成的平臺。這些組件被設計爲松耦合模塊,每個組件可以獨立使用。
名稱 | 描述 |
---|---|
Infrastructure 層 |
Infrastructure 層爲Quant研究提供了基礎支持。DataServer 爲用戶提供了高性能的基礎架構來管理和檢索原始數據。Trainer 提供靈活的界面來控制模型的訓練過程,從而使算法可以控制訓練過程。 |
Workflow 層 |
Workflow 層涵蓋了定量投資的整個工作流程。Information Extractor 提取模型數據。Forecast Model 專注於爲其他模塊生成各種預測信號(例如alpha,風險)。有了這些信號,Portfolio Generator 就會產生目標投資組合,併產生待執行的訂單Order Executor 。 |
Interface 層 |
Interface 層嘗試爲基礎系統提供用戶友好的界面。Analyser 該模塊將爲用戶提供有關預測信號,投資組合和執行結果的詳細分析報告 |
- 手繪樣式的模塊正在開發中,並將在將來發布。
- 帶有虛線邊框的模塊是高度用戶可定製和可擴展的。
快速開始
本快速入門指南試圖演示
- 構建完整的Quant研究工作流並使用Qlib嘗試您的想法非常容易。
- 儘管具有公共數據和簡單模型,但是機器學習技術在實際的Quant投資中效果很好。
這是一個快速演示,演示瞭如何使用進行安裝Qlib
和運行LightGBM qrun
。但是,請確保已按照說明準備好數據。
安裝
用戶可以Qlib
根據以下命令通過pip輕鬆安裝(當前,Qlib僅支持Python 3.6、3.7和3.8)。
點安裝pyqlib
注意:pip將安裝最新的穩定qlib。但是,qlib的主要分支正在積極開發中。如果要在主分支中測試最新的腳本或功能。請使用以下方法安裝qlib。
此外,用戶可以Qlib
按照以下步驟通過源代碼安裝最新的dev版本:
-
Qlib
從源安裝之前,用戶需要安裝一些依賴項:點安裝numpy pip install-升級cython
注意:請注意,
Qlib
從源代碼安裝時,在Python 3.6中安裝cython會引發一些錯誤。如果用戶在自己的計算機上使用Python 3.6,建議將Python升級到3.7版或使用conda
的PythonQlib
從源代碼安裝。 -
克隆存儲庫並按以下方式安裝
Qlib
。- 如果
pip install pyqlib
之前尚未通過命令安裝qlib :git clone https://github.com/microsoft/qlib.git && cd qlib python setup.py安裝
- 如果您已經通過以下命令安裝了穩定版本
pip install pyqlib
:git clone https://github.com/microsoft/qlib.git && cd qlib 點安裝。
注意:只有命令
pip install .
可以覆蓋安裝的穩定版本pip install pyqlib
,而命令python setup.py install
不能。 - 如果
提示:如果您無法Qlib
在環境中安裝或運行示例,則比較步驟和CI工作流程可能有助於您發現問題。
資料準備
通過運行以下代碼來加載和準備數據:
Python腳本/ get_data.py qlib_data --target_dir 〜 /.qlib/qlib_data/cn_data --region CN
該數據集由爬蟲腳本收集的公共數據創建,這些爬蟲腳本已在同一存儲庫中發佈。用戶可以使用它創建相同的數據集。
請注意,數據是從Yahoo Finance收集的,數據可能並不完美。如果用戶擁有高質量的數據集,我們建議他們準備自己的數據。有關更多信息,用戶可以參考相關文檔。
自動定量研究工作流程
Qlib提供了一個名爲qrun
自動運行整個工作流程的工具(包括構建數據集,訓練模型,回測和評估)。您可以按照以下步驟啓動自動定量研究工作流程並進行圖形報告分析:
-
定量研究工作流程:運行
qrun
與lightgbm工作流程配置(workflow_config_lightgbm_Alpha158.yaml如下。cd示例 #避免在包含qlib目錄的目錄下運行程序 qrun基準/LightGBM/workflow_config_lightgbm_Alpha158.yaml
的結果
qrun
如下,有關結果的更多詳細信息,請參閱日內交易。“以下是超額收益無成本的分析結果。' 風險 均值0.000708 標準0.005626 Annualized_return 0.178316 信息比率1.996555 max_drawdown -0.081806 “以下是超額收益與成本的分析結果。' 風險 均值0.000512 標準0.005626 Annualized_return 0.128982 信息比率1.444287 max_drawdown -0.091078
以下是
qrun
和工作流程的詳細文檔。 -
圖形報表分析:運行
examples/workflow_by_code.ipynb
與jupyter notebook
得到的圖形報告
通過代碼構建定製的量化研究工作流
自動工作流程可能不適合所有Quant研究人員的研究工作流程。爲了支持靈活的Quant研究工作流,Qlib還提供了模塊化界面,允許研究人員通過代碼構建自己的工作流。這是通過代碼定製的Quant研究工作流的演示。
定量模型動物園
這是建立在上的模型的列表Qlib
。
- 基於LightGBM的GBDT(Guolin Ke等)
- 基於Catboost的GBDT(Liudmila Prokhorenkova等)
- 基於XGBoost的GBDT(Tianqi Chen等)
- 基於pytorch的MLP
- 基於pytorch的GRU(Kyunghyun Cho等)
- 基於pytorcn的LSTM(Sepp Hochreiter等)
- 基於pytorcn的ALSTM(姚欽等)
- 基於火炬的GAT(Petar Velickovic等)
- 基於pytorch的SFM(Liheng Zhang等)
- 基於張量流的TFT(Bryan Lim等)
非常歡迎您對新的Quant型號進行PR。
可在此處找到每個模型在Alpha158
和Alpha360
數據集上的性能。
運行一個模型
上面列出的所有模型都可以通過運行Qlib
。用戶可以通過基準文件夾找到我們提供的配置文件以及有關該模型的一些詳細信息。可以在上面列出的模型文件中檢索更多信息。
Qlib
提供了三種運行單個模型的不同方法,用戶可以選擇最適合其情況的一種:
-
用戶可以使用上述工具
qrun
從配置文件中運行模型的工作流程。 -
用戶可以創建一個
workflow_by_code
基於Python腳本一個中列出的examples
文件夾中。 -
用戶可以使用文件夾中
run_all_model.py
列出的腳本examples
來運行模型。這是要使用的特定shell命令的示例:python run_all_model.py --models=lightgbm
,其中--models
參數可以採用上面列出的任意數量的模型(可用的模型可以在基準測試中找到)。有關更多用例,請參考文件的docstrings。
運行多個模型
Qlib
還提供了run_all_model.py
可以運行多個模型進行多次迭代的腳本。(注意:該腳本目前僅支持Linux。將來將支持其他操作系統。此外,它還不支持同時運行同一模型多次的parrallel,並且在將來的開發中也將修復。)
該腳本將爲每個模型創建一個唯一的虛擬環境,並在訓練後刪除該環境。因此,只會生成和存儲諸如IC
和的實驗結果backtest
。
這是運行所有模型進行10次迭代的示例:
python run_all_model。py 10
它還提供了可以立即運行特定模型的API。有關更多用例,請參考文件的docstrings。
定量數據集動物園
數據集在Quant中起着非常重要的作用。這是建立在Qlib
以下基礎上的數據集的列表:
數據集 | 美國市場 | 中國市場 |
---|---|---|
Alpha360 | √ | √ |
Alpha158 | √ | √ |
這是使用生成數據集的教程Qlib
。我們歡迎您建立新的Quant數據集的PR。
有關Qlib的更多信息
詳細文檔在docs中組織。 Sphinx和readthedocs主題是構建html格式的文檔所必需的。
cd docs / conda安裝sphinx sphinx_rtd_theme -y #否則,你可以用PIP安裝它們 #畫中畫安裝獅身人面像sphinx_rtd_theme 將HTML
您也可以直接在線查看最新文檔。
Qlib正在積極且持續的發展中。我們的計劃在路線圖中,該路線圖作爲github項目管理。
離線模式和在線模式
Qlib的數據服務器可以部署爲Offline
mode或Online
mode。默認模式是離線模式。
在Offline
模式下,數據將在本地部署。
在Online
模式下,數據將被部署爲共享數據服務。數據及其緩存將由所有客戶端共享。由於較高的高速緩存命中率,因此有望提高數據檢索性能。它也會消耗更少的磁盤空間。在線模式的文檔可以在Qlib-Server中找到。可以使用基於Azure CLI的腳本自動部署聯機模式。在線數據服務器的源代碼可以在Qlib-Server倉庫中找到。
Qlib數據服務器的性能
數據處理的性能對於像AI技術這樣的數據驅動方法很重要。作爲一個面向AI的平臺,Qlib爲數據存儲和數據處理提供了一個解決方案。爲了演示Qlib數據服務器的性能,我們將其與其他幾種數據存儲解決方案進行了比較。
我們通過完成同一任務來評估幾種存儲解決方案的性能,該任務將從股票市場(2007年至2020年每天800支股票)的基本OHLCV每日數據中創建一個數據集(14個特徵/要素)。該任務涉及數據查詢和處理。
HDF5 | 的MySQL | MongoDB | InfluxDB | Qlib -E -D | Qlib + E -D | Qlib + E + D | |
---|---|---|---|---|---|---|---|
總計(1CPU)(秒) | 184.4±3.7 | 365.3±7.5 | 253.6±6.7 | 368.2±3.6 | 147.0±8.8 | 47.6±1.0 | 7.4±0.3 |
總計(64CPU)(秒) | 8.8±0.6 | 4.2±0.2 |
+(-)E
表示(出)ExpressionCache
+(-)D
表示(出)DatasetCache
大多數通用數據庫在加載數據上花費太多時間。在研究了基礎實現之後,我們發現數據在通用數據庫解決方案中經過了太多的接口層和不必要的格式轉換。這樣的開銷極大地減慢了數據加載過程。Qlib數據以緊湊格式存儲,可以高效地組合成數組以進行科學計算。
相關報告
貢獻
該項目歡迎您的貢獻和建議。大多數捐款要求您同意一份《捐款者許可協議》(CLA),聲明您有權並實際上確實授予我們使用您的捐款的權利。有關詳細信息,請訪問https://cla.opensource.microsoft.com。
當您提交拉取請求時,CLA機器人會自動確定您是否需要提供CLA並適當地裝飾PR(例如,狀態檢查,評論)。只需按照機器人提供的說明進行操作即可。您只需使用我們的CLA在所有存儲庫中執行一次即可。
該項目採用了Microsoft開源行爲準則。有關更多信息,請參見《行爲準則》常見問題解答,或與[email protected]聯繫,並提出其他任何問題或意見。