微软开源 AI 量化投资开源平台 QLib-微矿

近日,量化平台大家庭又增一位新成员,业内首个AI量化投资开源平台:Qlib——微矿

file

来头也不小——微软亚洲研究院。
微矿开源仅一个月多,目前已经在Github 上获得了800+颗星。
地址:https://github.com/microsoft/qlib

背景介绍

根据微软亚洲研究院官方报道,微软亚洲研究院“创新汇”成立至今已有三年时间,创新汇的成员企业如今已扩展到了27家,包含了来自金融、物流、教育、医疗健康、制造、零售等多个行业的龙头企业和创新公司。

创新汇成员华夏基金与微软亚洲研究院自2017年开始在量化投资——多因子选股领域合作,基于“AI+指数增强”的策略,双方挖掘出了与传统投资方法低相关性的投资组合,实现了华夏基金在金融市场中的差异化竞争。

事实上,在整个股票投资的过程中,选股只是一小步,如果要确保投资成功,还需了解建仓股票之间的关系,从而进行风险控制,以避免“鸡蛋放在一个篮子”的问题发生,如同类股票要谨慎购买,相关联企业要分散投资等等。同时,还需要将交易成本、换手率等约束条件纳入考虑之中;当形成最优投资组合之后,还要考虑订单的执行和交易因素等等。

基于这样的思路,微软亚洲研究院在此前的研究基础上,打造了一个 AI 量化投资平台:Qlib——微矿,希望实现量化投资流程的 AI 闭环。作为一个开源工具包,该平台可供金融机构、从业个人使用,以提升投资者的技术储备和综合水准,提高整个市场的效率,从而在投资领域形成更大规模的良性循环。

从Qlib的官网介绍来看:

Qlib包含了数据处理、模型训练、回测等完整的机器学习pipeline,并涵盖了量化投资的整个链条:Alpha挖掘、风险建模、投资组合优化、定单执行等等。

同时,Qlib还专门为此写了一篇论文,里面有关于数据储存结构的设计等等细节问题,大家可以进行查阅:

file

https://arxiv.org/pdf/2009.11189.pdf

根据官方对Qlib的表述:

Qlib 平台大大降低了使用 AI 算法的门槛,其内部集成了十几个AI算法在金融场景下的使用样例以供参考,并且为整个金融行业提供了一个适应AI算法的高性能基础设施和数据、模型管理平台。而对于AI从业者来说,Qlib则提供了一个完备的投资研究框架,以及基于领域知识设计的多个跨市场的数据集和业内领先的基准。

Qlib的框架

Qlib的功能就是由下述模块构成,每个模块都可以单独使用:

file

Infrastructure层

该层为量化研究提供了基础支持。Data Server模块为用户管理和检索原始数据提供了高性能的基础架构。Trainer模块提供了灵活的接口来定义模型的训练过程,同时也为分布式训练提供了接口。Model Manager模块可以让用户更好地管理繁多的AI模型,更快地迭代其AI算法。

Workflow层

该层涵盖了量化投资的整个工作流。Information Extractor模块为模型提取数据。Forecast Model侧重于为其他模块产生各种预测信号(如Alpha信号、风险信号),利用这些信号,Portfolio Generator模块将生成目标投资组合,并由Order Executor模块执行交易。Meta Controller模块就是在解决不同时期调整模型、策略、执行的问题,辅助用户进行操作。

Interface层

交互层是为底层系统提供一个友好的界面。Analyser模块为用户提供详细的预测信号、投资组合和执行结果的分析报告。

Qlib的语言

Qlib支持Python3,可以在Windows和Linux下运行。Qlib也需要lightgbm和pytorch包的支持。

pip install pyqlib
import qlib
from qlib.config import REG_CN
provider_uri = "~/.qlib/qlib_data/cn_data"
qlib.init(provider_uri=provider_uri, region=REG_CN)

Qlib的数据处理性能

Qlib将其与其他几个数据存储解决方案进行了比较,通过同任务来评估其性能。该比较方案从股票市场(2007年至2020年每天月800支股票)的基本数据(开、高、低、收、成交量) 创建一个数据集(14个特征/因子)。该方案涉及数据查询和数据处理。
file

大多数通用数据库在加载数据上花费了太多时间。Qlib发现在通用数据库解决方案中,数据要经过了太多的接口层和不必要的格式转换。这大大地减缓了数据加载过程。Qlib的数据以一种紧凑的格式存储,对金融数据和运算进行了存储和计算优化,这种格式可以有效地组合成数组用于计算科学。相比传统IT平台,Qlib的计算性能要快数十倍!

自动量化研究workflow

Qlib提供了一个名为qrun的工具来自动运行整个workflow(包括构建数据集、训练模型、回测和评估)。具体文档看这里:
file

https://qlib.readthedocs.io/en/latest/component/workflow.html

图形报告分析——预测信号(模型预测)分析:
file

file

自定义workflow

自动化的workflow不一定适合所有量化研究者的研究workflow。为了支持灵活的量化研究workflow,Qlib还提供了一个模块化界面,允许研究人员通过代码构建自己的workflow。下面是一个通过代码定制量化研究workflow的示例(部分代码展示):
file

Qaunt模型Zoo

Qlib目前内置了许多常见的金融AI算法模型:

  • GBDT based on LightGBM
  • GBDT based on Catboost
  • GBDT based on XGBoost
  • MLP based on pytorch
  • GRU based on pytorch
  • LSTM based on pytorcn
  • ALSTM based on pytorcn
  • GATs based on pytorch
  • SFM based on pytorch
  • TFT based on tensorflow

···

例如GBDT based on XGBoost的代码:
file

同时,大家可以看到相关模型的一些详细信息:

file

除了Qlib提供的默认模型外,用户还可以将自己的定制模型集成到Qlib中。

最后,用户可以基于平台和自己的数据甚至是引用的最新的外部论文去创建全新的模型,挖掘差异化的投资因子,针对不同的数据和目标训练相应的预测模型并构建自己的投资组合。

写在最后

Qlib的优点在于将相关问题拆分,并在每一步和每个模块中提供了简单易学的AI技术、数据引入的方法,以及模型的训练方式,大大降低了AI使用的专业门槛。

相信在后续的迭代更新中,Qlib能有更出色的表现,给Quant们带来福音!


相关文章:
微软也搞AI量化平台?还是开源的!

为者常成,行者常至