三分钟玩转微软AI量化投资开源库QLib (2)

三分钟玩转微软AI量化投资开源库QLib

下一步,我们调用QLib库中的相关方法,尝试读取我们刚才下载到本地的数据,并尝试读取CIS300指数的成分股。

import qlib
from qlib.data import D
qlib.init(provider_uri='~/.qlib/qlib_data/cn_data')
instruments = D.instruments(market='csi300')
D.list_instruments(instruments=instruments, start_time='2010-01-01', end_time='2017-12-31', as_list=True)[:20]

三分钟玩转微软AI量化投资开源库QLib

workflow配置

在数据落地到本地,并且成功使用QLib库读取到本地数据之后,我们再来看QLib中最重要的一个配置文件,该配置文件叫做workflow。workflow中需要配置数据集地址、策略回测参数、训练模型参数、模型存储地址等,在整个测试过程中的关键配置。我们来看QLib一个完整的workflow配置示例。该示例包含两部分代码,我们分别展示,首先是qlib_init部分。

qlib_init:
   provider_uri: "~/.qlib/qlib_data/cn_data"
   region: cn
   market: &market csi300
   benchmark: &benchmark SH000300
   data_handler_config: &data_handler_config
   start_time: 2008-01-01
   end_time: 2020-08-01
   fit_start_time: 2008-01-01
   fit_end_time: 2014-12-31
   instruments: *market
   port_analysis_config: &port_analysis_config
   strategy:
       class: TopkDropoutStrategy
       module_path: qlib.contrib.strategy.strategy
       kwargs:
           topk: 50
           n_drop: 5
   backtest:
       verbose: False
       limit_threshold: 0.095
       account: 100000000
       benchmark: *benchmark
       deal_price: close
       open_cost: 0.0005
       close_cost: 0.0015
       min_cost: 5

qlib_init部分的关键配置参数包括:回测数据存储路径(provider_uri),即我们刚才下载数据的路径;market:股票池的选股范围是csi300;benchmark:策略比较基准是沪深300指数;start_time、end_time代表策略测试的起始、终止时间,而fit_start_time、fit_end_time代表训练样本的起始、终止时间;strategy:策略的选股规则,我们采用TopkDropoutStrategy,即选中topk的股票,并去掉n_drop数量;backtest是历史回测的参数,包括策略阈值、初始资金、成交价格、手续费等的设置。然后,我们来看第二部分,task部分的配置代码。

task:
   model:
       class: LGBModel
       module_path: qlib.contrib.model.gbdt
       kwargs:
           loss: mse
           colsample_bytree: 0.8879
           learning_rate: 0.0421
           subsample: 0.8789
           lambda_l1: 205.6999
           lambda_l2: 580.9768
           max_depth: 8
           num_leaves: 210
           num_threads: 20
   dataset:
       class: DatasetH
       module_path: qlib.data.dataset
       kwargs:
           handler:
               class: Alpha158
               module_path: qlib.contrib.data.handler
               kwargs: *data_handler_config
           segments:
               train: [2008-01-01, 2014-12-31]
               valid: [2015-01-01, 2016-12-31]
               test: [2017-01-01, 2020-08-01]
   record:
       - class: SignalRecord
       module_path: qlib.workflow.record_temp
       kwargs: {}
       - class: PortAnaRecord
       module_path: qlib.workflow.record_temp
       kwargs:
           config: *port_analysis_config

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzfzw.html