• 微软 AI 量化投资平台 Qlib 体验



    华泰人工智能系列之四十
    核心观点
    本文介绍微软 AI 量化投资平台 Qlib 基础和进阶功能,对比传统量化策略
    开发流程和 Qlib 提供的解决方案,提炼 Qlib 特色及优势,并探讨笔者使用
    体会。Qlib 于 2020 年 9 月公开初版源码,2020 年 12 月获微软官网报道
    并引发热议。我们认为 Qlib 的主要优势在于:1)覆盖量化投资全过程,
    用户无需切换工具包或编程语言,降低 AI 算法使用门槛;2)从工程实现
    角度,对因子数据储存、因子计算等环节提出创新解决方案,提升运算性
    能和开发效率,或能解决量化投资研究中的部分痛点。
    笔者使用体会:侧重量价选股,解决部分痛点,开源或推动技术发展
    笔者使用 Qlib 的体会是,Qlib 在“术”层面的创新要大于在“道”层面的
    创新。Qlib 在宣传中称其为“业内首个 AI 量化投资开源平台”
    ,而就目前
    公开的功能看,Qlib 的核心是“量价因子结合 AI 模型选股流程”
    ,在“道”
    的层面未脱离传统因子选股方法论。在“术”的层面, Qlib 提出的数据存
    储方案、表达式引擎等工程创新一定程度上能够解决研究中的部分痛点。
    微软此次的开源尝试能够降低整个行业的学习和研发成本,或能推动量化
    投资行业的技术发展。
    Qlib 基础功能:以港股日频量价因子 LightGBM 选股策略为例
    Qlib 官方推荐的学习素材有 GitHub 文档和在线文档,包含 A 股日频量价
    因子 AI 选股策略案例,然而直接学习官方代码的“代入感”不强,并且官
    方代码绕过了很多“坑”,但研究者在实际学习使用时可能绕不开这些“坑”

    为了帮助读者快速上手 Qlib,我们参考官方代码,设计新的应用场景,以
    港股日频量价因子 LightGBM 选股策略为例,分 Qlib 安装、数据准备、因
    子生成、策略构建、结果展示各步骤,讲解 Qlib 基础功能。
    Qlib 进阶功能:自定义策略组件
    我们以自定义因子、标签、数据预处理方式、AI 模型为例讲解 Qlib 的进阶功
    能。 AI 选股模型包含因子生成和预处理、模型训练、策略回测等组件,在 Qlib
    中这些组件通过工作流 workflow 串联在一起,每个组件均有对应参数控制。
    因此最简单的自定义策略方式是直接修改参数。另外,每个组件都有其对应源
    码,更灵活的自定义策略方式是修改源码或仿照源码创建新的继承类。
    Qlib 特色:覆盖量化投资全过程,拥有多项工程上的创新
    Qlib 的设计初衷之一在于覆盖量化投资的全过程,为用户的 AI 算法提供高
    性能的底层基础架构,降低 AI 算法的使用门槛,便于金融从业者使用。
    Qlib 的“高性能底层基础架构”体现在多项工程上的创新,例如数据存储
    方案、表达式引擎和缓存系统。据论文 Qlib: An AI-oriented Quantitative
    Investment Platform 测试显示,Qlib 在读取原始数据和生成因子任务上的
    性能表现优于传统关系型数据库 MySQL、非关系型数据库 MongoDB、时
    序数据库 InfluxDB 和 HDF5。
    风险提示:本文的港股 AI 选股策略仅作案例教学使用,不具备实际投资价
    值,例如未剔除低价股、低流动性股票,训练集和测试集较短,未进行参
    数优化等。Qlib 仍在开发中,部分功能未加完善和验证,使用存在风险。
    人工智能挖掘市场规律是对历史的总结,市场规律在未来可能失效。人工
    智能技术存在过拟合风险。

    正文目录
    研究导读 ........................................................................................................................... 4
    快速上手 Qlib:以港股日频量价因子 AI 选股策略为例 ..................................................... 5
    Qlib 安装 .................................................................................................................... 5
    安装 Microsoft C++生成工具 ............................................................................. 5
    setup.py 安装 ..................................................................................................... 6
    数据准备 .................................................................................................................... 7
    get_data 下载官方数据 ...................................................................................... 7
    dump_all 转换用户数据格式 .............................................................................. 7
    港股日频量价因子生成 .............................................................................................. 9
    初始化运行环境和原始数据读取 ........................................................................ 9
    自定义股票池 ................................................................................................... 11
    Alpha158 因子库 ............................................................................................. 11
    LightGBM 选股策略构建 ......................................................................................... 13
    选股策略回测 .......................................................................................................... 16
    回测和绩效分析结果展示 ........................................................................................ 18
    Qlib 进阶:自定义策略组件 ............................................................................................ 20
    自定义特征 .............................................................................................................. 20
    自定义标签 .............................................................................................................. 21
    更换数据预处理方法 ................................................................................................ 21
    更换 AI 模型 ............................................................................................................ 23
    其它功能 .................................................................................................................. 24
    Qlib 特色及使用体会 ....................................................................................................... 25
    Qlib 覆盖量化投资全过程 ........................................................................................ 25
    传统量化投资策略开发 .................................................................................... 25
    Qlib 的改进 ...................................................................................................... 26
    工程创新:数据存储设计,表达式引擎,缓存系统 ................................................ 27
    数据存储方案 ................................................................................................... 28
    表达式引擎 ...................................................................................................... 29
    缓存系统 .......................................................................................................... 30
    使用体会:侧重量价选股,解决部分痛点,开源或推动技术发展 ........................... 30
    参考文献 .................................................................................................................. 30
    风险提示 .................................................................................................................. 31
    图表目录
    图表 1: Microsoft C++生成工具下载 .............................................................................. 5
    图表 2: Microsoft C++生成工具安装 .............................................................................. 6
    图表 3: setup.py 安装 Qlib ............................................................................................. 6
    图表 4: get_data 下载官方数据...................................................................................... 7
    图表 5: dump_all 转换前的 csv 文件 .............................................................................. 7
    图表 6: 港股行情 csv 数据(以腾讯控股 0700 HK 为例) ............................................. 8
    图表 7: csv 数据字段说明 .............................................................................................. 8

    图表 8: dump_all 转换用户数据格式 .............................................................................. 9
    图表 9: dump_all 转换后的 bin 和 txt 文件 ..................................................................... 9
    图表 10: 初始化运行环境 ............................................................................................. 10
    图表 11: 获取交易日期和全部股票代码 ....................................................................... 10
    图表 12: 获取指定股票指定日期指定字段数据 ............................................................ 10
    图表 13: 自定义股票池................................................................................................. 11
    图表 14: 生成 Alpha158 特征(当期因子)和标签(下期收益) ................................ 12
    图表 15: 获取 Alpha158 因子库标签(下期收益) ...................................................... 12
    图表 16: 获取 Alpha158 因子库特征(当期因子) ...................................................... 13
    图表 17: 导入 Qlib 模块代码 ........................................................................................ 14
    图表 18: 定义股票池和基准指数代码 ........................................................................... 14
    图表 19: 模型训练参数 task 的 AI 模型参数 model ...................................................... 14
    图表 20: 模型训练参数 task 的 AI 模型参数 dataset .................................................... 15
    图表 21: 因子生成参数 data_handler_config 和模型训练参数 task 设置代码.............. 15
    图表 22: 模型训练代码................................................................................................. 16
    图表 23: 策略回测参数 port_analysis_config ............................................................... 16
    图表 24: 选股策略回测参数设置代码 ........................................................................... 17
    图表 25: 选股策略回测代码 ......................................................................................... 17
    图表 26: 回测和绩效分析结果读取代码 ....................................................................... 18
    图表 27: AI 模型预测结果 IC 和 Rank IC ..................................................................... 18
    图表 28: 策略净值、超额收益净值、最大回撤和换手率 .............................................. 19
    图表 29: 各组件参数及对应源码所在路径.................................................................... 20
    图表 30: 自定义特征代码 ............................................................................................. 20
    图表 31: 通过设置参数自定义标签代码 ....................................................................... 21
    图表 32: 通过修改因子库源码自定义标签代码 ............................................................ 21
    图表 33: Qlib 内置数据预处理方法(qlib.data.dataset.processor)............................ 22
    图表 34: Alpha158 和 Alpha360 因子库默认预处理方式 ............................................. 22
    图表 35: 自定义数据预处理代码 .................................................................................. 22
    图表 36: Qlib 内置 AI 模型(qlib.contrib.model)........................................................ 23
    图表 37: 通过设置参数自定义 AI 模型代码 .................................................................. 23
    图表 38: 通过创建新 Model 子类(如 SVR 支持向量回归)自定义 AI 模型代码 ......... 24
    图表 39: 某团队人工智能选股模型开发流程 ................................................................ 25
    图表 40: Qlib 提供的人工智能选股模型开发解决方案 ................................................. 26
    图表 41: Qlib 的三层框架:基础架构层、量化投资流程层和交互层 ............................ 26
    图表 42: Qlib 各模块的另一种拆解:静态流程、动态建模和分析模块 ........................ 27
    图表 43: Qlib 高性能底层基础架构 .............................................................................. 28
    图表 44: 不同因子数据存储方案的长处和短板 ............................................................ 28
    图表 45: Qlib 数据存储方案 ......................................................................................... 29
    图表 46: 不同因子数据存储方案下的性能比较 ............................................................ 29
    图表 47: Qlib 缓存系统 ................................................................................................ 30

    研究导读
    2020 年 9 月,微软亚洲研究院在学术论文预印本平台 arXiv 发布论文 Qlib: An AI-oriented
    Quantitative Investment Platform,公开其开发的业内首个 AI 量化投资开源平台 Qlib,并
    在代码托管平台 GitHub 上开放源代码。2020 年 12 月,微软亚洲研究院在官网报道该消
    息,一石激起千层浪。微软称 Qlib“通过创建一个通用的技术平台,帮助实现量化投资流
    程的 AI 闭环”。
    AI 量化投资开源平台对于量化投资领域的意义不凡。一套标准化的代码能提升整个行业的
    研究效率,避免重复造轮子;代码开源使得研究者能够学习业内同行的先进经验,并根据
    实际需求自由修改和添加功能。投资者关心的问题是,Qlib 是否如宣传得那么强大?Qlib
    包含哪些功能,有哪些使用场景?Qlib 解决了传统量化策略开发流程中的哪些痛点?Qlib
    的实际使用体验如何?
    带着上述问题,笔者将从实操层面一探究竟。本文第一部分以港股日频量价因子 LightGBM
    选股策略为例,带领读者快速上手 Qlib。第二部分深入讲解如何自定义策略中的各个组件,
    如自定义因子、标签、数据预处理方式、AI 模型等环节。第三部分结合 Qlib 论文,介绍
    Qlib 的特色以及相比传统量化策略开发流程的改进之处,最后谈谈笔者的使用体会。
    我们认为,Qlib 的主要优势在于:1)覆盖量化投资全过程,用户无需切换工具包或编程
    语言,降低 AI 算法使用门槛;2)从工程实现角度,对因子数据储存、因子计算等环节提
    出创新解决方案,提升运算性能和开发效率,或能解决量化投资研究中的部分痛点。

    快速上手 Qlib:以港股日频量价因子 AI 选股策略为例
    Qlib 官方推荐的学习素材有 GitHub 文档(https://github.com/microsoft/qlib)和在线文档
    (https://qlib.readthedocs.io/en/latest/index.html)。学习素材包含 A 股日频量价因子 AI
    选股策略案例。然而直接学习官方代码的“代入感”不强,并且官方代码绕过了很多“坑”
    ,
    但研究者在实际学习使用时可能绕不开这些“坑”
    。为了帮助读者快速上手 Qlib,我们参
    考官方代码,设计新的应用场景,以港股日频量价因子 AI 选股策略为例,分 Qlib 安装、
    数据准备、因子生成、策略构建、结果展示各步骤,讲解 Qlib 使用方法。
    Qlib 安装
    Qlib 安装是读者容易遇到的第一个“坑”。首先推荐在 Python 3.7 及更新版的 Python 环
    境下安装。Qlib 官方提供 1)pip 和 2)setup.py 两种安装方式。其中 pip 安装较为简单,
    在命令行直接运行 pip install pyqlib 即可,将自动安装最新的 Qlib 稳定版。不过笔者经
    Windows 和 Mac 系统下测试,更推荐 setup.py 方式。具体安装步骤如下。
    安装 Microsoft C++生成工具
    Qlib 运行依赖 Microsoft Visual C++ 14.0,否则安装过程中会报如下错误:
    error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio":
    https://visualstudio.microsoft.com/downloads/
    注意这里仅安装运行组件(Microsoft Visual C++ Redistributable)无法解决此问题,需要
    安装完整版 Microsoft Visual Studio 或者参考报错信息安装 Microsoft C++生成工具。生成
    工具的下载链接为:https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
    图表1: Microsoft C++生成工具下载
    资料来源:微软官网,华泰证券研究所
    安装生成工具过程中,需要点选部分选项,参考微软官方建议链接及下图:
    https://docs.microsoft.com/en-us/answers/questions/136595/error-microsoft-visual-c-14
    0-or-greater-is-require.html

    setup.py 安装
    Qlib 官方给出的 setup.py 安装方式如下。首先安装或更新 numpy 和 cython 库,在命令行
    运行 pip install numpy 和 pip install --upgrade cython 即可。
    接下来的安装分两种情况:
    1. 若已安装 git 并完成环境配置,在命令行运行下列指令即可:
    git clone https://github.com/microsoft/qlib.git && cd qlib
    python setup.py install
    2. 若未安装 git,可在 GitHub 下载 zip 源码包(https://github.com/microsoft/qlib),解压
    缩至任意路径,如笔者放在 C:/Users/username/anaconda3/Lib/site-packages/qlib,
    确保 setup.py 文件在该路径下,随后在该路径下启动命令行,运行如下指令即可:
    python setup.py install
    Qlib 的 setup.py 安装方式将自动安装包含开发版在内的最新版。例如笔者在 2020 年 12
    月 14 日安装的版本为 0.6.1.dev0。笔者办公网络环境不支持 git 安装,故采用上述第二种
    方式,命令行安装过程如下图。
    图表3: setup.py 安装 Qlib

  • 相关阅读:
    函数定义与调用
    高可用(keepalived)部署方案
    解决 vscode使用Prettier格式化js文件报错:Cannot find module ‘./parser-babylon‘
    Java版本spring cloud + spring boot企业电子招投标系统源代码
    网络卡顿怎么办?快来试试华为云CDN
    加密excel(Python)
    localhost与127.0.0.1和本机ip的区别
    WindTerm 开源的高性能终端模拟器 最酷
    S7-200 SMART与ABB ACS580变频器进行MODBUS RTU通信的具体方法示例
    宝塔面板转aapanel宝塔国际版
  • 原文地址:https://blog.csdn.net/sinat_37574187/article/details/126075741