更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。
微软QLib简介微软亚洲研究院发布了 AI 量化投资开源平台“微矿 Qlib”。Qlib 涵盖了量化投资的全过程,为用户的 AI 算法提供了高性能的底层基础架构,从框架设计上让用户可以更容易地应用 AI 算法来辅助解决量化投资的各个关键问题,比如 Alpha 因子构建、风险预测、市场动态性建模等等。
Qlib 覆盖了量化投资的全过程,从底层构造开始就专为 AI 而生,从数据处理到计算力支撑,再到模型的训练与验证,都为基于 AI 的量化投资提供了全方位的框架支持。用户可以通过 Qlib 平台提供的多个工具模块,更加轻松地管理和使用自己的算法,特别是其 AI 算法。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)会根据下层的预测信号、仓位、执行结果做出详细的分析并呈现给用户。
特别的,Qlib内置了时序量价数据、业内常用因子、以及 常见的金融 AI 模型(例如 LightGBM、GRU、GATs 等十几个模型) , 大大降低了 AI 使用的专业门槛 。Qlib内置数据集和模型分类如下。
数据准备QLib的测试数据支持在线、离线两种模式,QLib默认的是启用离线模式,该模式下,所有的回测数据的存储与读取都将在本地进行,而在线模式的数据将会部署在微软的服务器端。我们更推荐大家使用离线模式来进行策略研发,第一是策略数据一次落地即可使用,无需反复传输,无网络时同样可以测试;第二是策略代码完全在本地运行,保证了策略的安全性。
我们以离线模式为例,为大家展示QLib的数据准备过程。QLib包中提供了从雅虎财经获取金融数据的脚本,只需要在控制台调用对应的Python脚本,制定数据的存储路径,就能将数据下载到本地了。
python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn我们将代码存储在家目录下的qlib_data文件夹内,完成下载后,我们查看对应目录,找到对应的数据位置。