微矿Qlib:业内首个AI量化投资开源平台
近期,微软亚洲研究院正式发布了 AI 量化投资开源平台“微矿 Qlib”。这是微软亚洲研究院成立“创新汇”三年以来,在与金融行业的成员企业合作研究的基础之上,打造的 AI+金融跨界创新的阶段性重要成果,通过创建一个通用的技术平台,帮助实现量化投资流程的 AI 闭环。
Qlib 涵盖了量化投资的全过程,为用户的 AI 算法提供了高性能的底层基础架构,从框架设计上让用户可以更容易地应用 AI 算法来辅助解决量化投资的各个关键问题(例如 Alpha 预测,风险预测,市场动态性建模)。
对于金融从业者来说,Qlib 平台大大降低了使用 AI 算法的门槛,其内部集成了十几个 AI 算法在金融场景下的使用样例以供参考,并且为整个金融行业提供了一个适应 AI 算法的高性能基础设施和数据、模型管理平台。而对于 AI 从业者来说,Qlib 则提供了一个完备的投资研究框架,以及基于领域知识设计的多个跨市场的数据集和业内领先的基准。
专为AI而生的量化投资平台
与传统量化投资工具不同,Qlib 覆盖了量化投资的全过程,而且从底层构造开始就专为 AI 而生,从数据处理到计算力支撑,再到模型的训练与验证,都为基于 AI 的量化投资提供了全方位的框架支持。用户可以通过 Qlib 平台提供的多个工具模块,更加轻松地管理和使用自己的算法,特别是其 AI 算法。Qlib 的三大特点:
涵盖量化投资全流程
从 Qlib 的功能模块图我们便可一窥全貌。
Qlib 平台功能模块
最底层的是基础架构层(Infrastructure)。Qlib 的数据服务模块(Data Server)提供了高性能的数据存储设计,让 AI 算法可以更快地处理更多金融数据。训练模块(Trainer)则为 AI 算法提供了灵活的接口来定义训练模型的过程,让 Auto-ML 等算法成为可能,也为分布式训练提供了接口。而模型管理模块(Model Manager)可以让用户更好地管理繁多的 AI 模型,更快地迭代其 AI 算法。
中间层是量化投资流程(Workflow)。信息抽取模块(Information Extractor)负责从异构数据中提取有效的信息,因为用 AI 进行投资分析数据是关键,尽管金融行业有一定的数据基础,但 AI 模型可以直接使用的高质量数据仍然十分有限,所以这就需要更多精细化处理和信息抽取。之后,预测模型(Forecast Model)会输入抽取的信息,输出可供金融专家参考的未来收益、风险等等预测,然而预测模型需要依靠底层海量数据才能训练出精准、有效的预测模型。而投资组合生成模块(Portfolio Generator)则能根据预测得到 Alpha 信号和风险信号辅助生成投资策略组合。订单执行模块(Order Executor)是投资的最后一步——交易执行,帮助用户判断何时下单也是一门艺术。
在量化投资中,几乎不可能有一个模型在全时段都一直保持卓越的表现,所以对市场动态性建模,以及在不同时期适时地调整模型、策略、执行也是一个非常重要的课题。Qlib 中元控制器模块 (Meta Controller) 的设计正是要支持这类问题的研究,实时提供精准的参考信息和方案,辅助用户进行操作。
最上层是交互层(Interface)。其中,分析模块(Analyzer)会根据下层的预测信号、仓位、执行结果做出详细的分析并呈现给用户。
事实上,传统量化投资开源平台的诞生大多早于 AI 和机器学习的兴起,更偏重于量化投资的回测、分析或执行方面的功能,不少平台只包含其中的某些部分。而 Qlib 所提供的数据处理、模型训练、投资组合生成等部分都是其特有的能力。Qlib 完整的投资流程框架不仅让分析人员可以拥有更加整体的视角,而且工具齐全,需要什么都可以信手拈来。
数据、算法和算力,聚齐AI三大要素
由于 AI 技术是最近几年才开始进入投资研究领域的,传统的量化投资几乎没有采用 AI 技术,只需应对传统算法,所以基于 AI 的量化投资平台自然需要提供更强大的底层架构和接口支持。因此,Qlib 提供了一个高性能的基础平台,从算力支撑到数据存取,都能够满足金融 AI 对于性能的高级别要求。
在数据层面,Qlib 提供了基于领域知识设计的多个跨市场的数据集。其数据服务模块中内含了为金融数据专门设计的表达式计算引擎,对金融数据和运算进行了存储和计算优化。相比传统 IT 平台,Qlib 的计算性能要快数十倍,可以让用户的 AI 模型更轻松地驾驭更多的数据。在数据的使用方面,AI 模型与传统模式也有很大不同,传统量化投资的信息抽取依赖于金融行业研究员根据经验和领域知识实现的因子,但 AI 算法则有能力自动从数据中抽取信息。对此,Qlib 的数据管理框架未来会满足 AI 模型所特有的使用方式。
在算法与模型层面,Qlib 目前内置了常见的金融 AI 模型(例如 LightGBM、GRU、GATs 等十几个模型),用户可以基于平台和自己的数据甚至是引用的最新的外部论文去创建全新的模型,挖掘差异化的投资因子,针对不同的数据和目标训练相应的预测模型并构建自己的投资组合。如果用户愿意分享自己的模型,也可以开源到 Qlib 平台,与更多业内人士共享。
值得一提的是,模型管理也是 Qlib 特有的部分。由于管理过程中会涉及模型众多、参数复杂、数据海量、管理追踪难/复现难等问题,Qlib 提供了专门的模型管理器模块(Model Manager)帮助用户更加系统化地管理自己的 AI 模型。只有管理有序,才能在需要的时候找到最适合的模型,提高预测分析的效率和准确率。
Qlib 支持的数据集和 AI 模型(持续更新中), 点击以下链接,一键“跑遍”所有模型https://github.com/Microsoft/qlib/blob/main/examples/run_all_model.py
所有模块均可灵活配置
投资研究是一个复杂的过程,其中的每个环节实际上都可以独立出来作为一个单独的研究课题。所以,Qlib 在框架构建之初就考虑到了研究过程的灵活性,不能将流程固化,框架中的各个模块分则各具特点,合则浑然一体,这样研究人员就可以根据自己的工作流将不同的模块组合,灵活配置架构。
隔行如隔山?在Qlib这里不存在
人们常说,术业有专攻,隔行如隔山,但在 Qlib,行业区隔不再是难题,因为无论是金融从业者还是 AI 从业人员都可以从中找到自己的所需。
AI 技术人员最擅长的是“调参炼丹”,让他们来做金融投资分析,首先需要学习金融领域的知识,但从何学起很有讲究,如果方法不当,会额外耗费很多精力。Qlib 在每个模块中都预置了一系列相关问题、金融领域数据处理知识以及完备的投资研究框架。例如,在最常见的选股场景中,非金融专业人员很可能一开始就会选择大盘的涨跌进行研究,但这是行业内非常困难的一个问题,无疑会给研究过程带来极大的挑战。而 Qlib 会基于框架分类设定步骤,AI 技术人员只需根据样例就能循序渐进地切入到金融领域,避免走弯路。
另一方面,对于传统金融从业者来说,尽管他们十分熟悉量化投资的流程,但却不清楚应该在哪个环节、引入哪项 AI 技术或哪个算法。因此,Qlib 平台将相关问题拆分,并在每一步和每个模块中提供了简单易学的 AI 技术、数据引入的方法,以及模型的训练方式,大大降低了 AI 使用的专业门槛。Qlib 还提供了很多现成的例子、模型供相关人员参考。随着更多用户愿意在 Qlib 平台上开源自己的模型算法,今后将会有越来越多的用户从中受益。
此外,Qlib 也正在逐步成为学术界科研人员的有力工具。Qlib 提供了大量的公开数据集、业界基准和相对统一的评价指标,有助于研究人员在测试新算法时省去不必要的、与核心工作无关的工作而专心于研究任务,同时也能够帮助研究人员定义合理的学术研究问题。
Qlib 平台开源仅一个月多,目前已经在 Github 上获得了近700颗星的好评,并得到了社区成员和用户的积极反馈。现在 Qlib 的更新非常活跃,未来还将有更多功能开放出来。欢迎大家关注、使用 Qlib 平台:https://github.com/microsoft/qlib,希望通过基于 Qlib 平台更多的交流和分享,可以助力投资领域形成更大规模的良性循环。