绝大多数同学学习qlib,是从qlib提供的基本案例workflow_by_code.ipynb开始的,从文件名workfow可以看出,它隐含了一个基本的使用机器学习执行多因子预测的基本流(工作流)。
这个流程概括出来包括如下步骤:
但是,这个流程只是最基本的研究流程。如果你觉得学习了这个流程就可进行实战,那就大错特错了。为啥这样说呢?先看看例子文件中的一个时段配置如下:
这里,最终模型绩效评估是要用测试集时段的数据来测试的。按此配置,是在训练和验证集上训练模型,然后用这个训练好的模型去预测测试集中每一天的收益率。这就有一个问题,测试集跨度4年时间,相当于在2020年你还在使用4年前模型来预测,这样的评价方式明显不符合实战流程。在实战中,是滚动训练和预测的,比如执行月度调仓,那么可能每月底都要重新训练和预测,这里滚动步长step就是一个月。因此,在进行模型绩效评价时,也要模拟实战这种滚动的过程,这样的评价结果才更加符合实际。
市面上讲股票机器学习多因子预测的文章,通常都是按照workflow_by_code.ipynb的流程模式讲,没有讲更加符合实际的滚动训练与预测(walkforward或rolling)。这是因为,滚动操作的代码比较复杂,甚至很多作者都不知道滚动训练与预测的方法。
针对这个短板,我们开发了使用qlib进行滚动训练预测与回测的视频课程“扫地僧微软AI量化平台Qlib教程系列二:滚动训练、预测、回测与实战”,期望将机器学习用于实战的同学可以去看看,课程头几节是免费的,详细介绍了qlib中滚动训练预测的原理。
因子研究还有一个重要问题,就是预测回测好后,怎样生成订单供给实盘使用?课程里也提供了代码和方法,后面我们会写文章专门讲解。
课程另一个亮点是,将qlib预测结果喂给backtrader,由backtrader来执行回测,这样更加灵活,课程给出了backtrader实现topkdropout策略的源码。