Qlib依赖的机器学习包,科学计算包,并行计算等特别多,所以,基于anaconda安装会更加简单。
Qlib的安装
Anaconda我选择最新的3.8版本。
Qlib支持pip直接安装:pip install pyqlib。
但是,会有基础包编译不通过,有两个方案:
一是可以使用编译好的包,遇到两个包,scs, ecos。
https://www.lfd.uci.edu/~gohlke/pythonlibs/#ecos
这个网址可以找到对应版本的预编译包。
二是安装微软生成工具,这个好处是未来很多包可以自行编译。
https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
Hello Qlib!
Qlib官方代码的examples下有一个使用案例:workflow_by_code.py。
可以直接运行。
workflow_by_code可以看做是qlib的Hello World。
Qlib支持使用ymal配置。
port_analysis_config = {
"executor": {
"class": "SimulatorExecutor",
"module_path": "qlib.backtest.executor",
"kwargs": {
"time_per_step":"day",
"generate_portfolio_metrics": True,
},
},
"strategy": {
"class": "TopkDropoutStrategy",
"module_path": "qlib.contrib.strategy.model_strategy",
"kwargs": {
"model": model,
"dataset": dataset,
"topk": 50,
"n_drop": 5,
},
},
"backtest": {
"start_time": "2017-01-01",
"end_time": "2021-08-01",
"account": 100000000,
"benchmark": CSI300_BENCH,
"exchange_kwargs": {
"freq":"day",
"limit_threshold":0.095,
"deal_price":"close",
"open_cost": 0.0005,
"close_cost": 0.0015,
"min_cost": 5,
},
},
}
主要看下backtest这一节,起始时间是2017年1月,结束时间是2020年8月,基于全市场选股,标注的label是第二天的收益率,选择分数高的构建出投资组合。
一共3年半,基准是沪深300指数。
大家主要关心两个指标:年化收益和最大回撤。
如果不考虑交易成本,年化收益是15%,而基准是11.3%;最大回撤相比于基准的37%,模型是最大回撤是10.2%。那么夏普比是得到明显提升的,考虑了成本之后,则年化下降至10.2%。
微软还开发了一个qrun的工具,这个在安装qlib的时候是内置的。
只需要定位到相应的代码目录下,然后使用qrun命令去自动化的运行配置好的模型。
qrun examples/workflow_config_lightgbm_configurable_dataset.yaml。
直接运行一个yaml。
Qlib所有的参数都可以通过一个yaml文件来配置。
从学习的角度,还是从代码的角度去应用,这个才能知其然且知其所以然。我们需要仔细去学习和拆解各个模块,为我们所用。
策略的拆解
一个典型的机器学习驱动的量化模型会分成如下几个主要步骤:
首先是基本数据加载,从价量的角度看就是OHLCV等数据。
其次是数据标准,计算因子和label。
然后把数据分割成训练集和测试集。
选择合适的模型,并配置适当的参数。
模型训练。
利用模型数据样本外数据进行回测,得到回测结果。
对回测结果进行可视化。
这里可以回归到项目的文档,文档还是组织的非常清楚的。
https://qlib.readthedocs.io/en/latest/
qlib初始化,比较简单,就是指定下载的数据所在的目录即可。Region参数是指中国市场还是美国市场。
import qlib
# region in [REG_CN, REG_US]
from qlib.config import REG_CN
provider_uri="~/.qlib/qlib_data/cn_data" # target_dir
qlib.init(provider_uri=provider_uri,region=REG_CN)
如果没有报错则初始化成功。