Qlib 量化投资平台指南:如何从数据快速跑通一次完整回测
【免费下载链接】qlibQlib is an AI-oriented Quant investment platform that aims to use AI tech to empower Quant Research, from exploring ideas to implementing productions. Qlib supports diverse ML modeling paradigms, including supervised learning, market dynamics modeling, and RL, and is now equipped with https://github.com/microsoft/RD-Agent to automate R&D process.项目地址: https://gitcode.com/GitHub_Trending/qli/qlib
因子计算、特征清洗、模型训练、回测报告,每个环节都要自己搭,一个想法验证下来要好几天。Qlib 是一个开源的 AI 量化投资平台,把数据处理、模型训练和回测评估串成一条可执行的工作流,让你专注在想法本身。
🧭 项目定位:是什么、不是什么
- 一句话定位:面向 AI 的量化研究平台,覆盖数据处理、模型训练、回测的完整流水线,向上延伸出 alpha 挖掘、风险建模、组合优化、订单执行(README.md 第 85 行的官方表述)。
- 适合谁:会 Python、想做股票预测研究或想横向比较多模型的人。
- 不适合谁:想直接接券商实盘交易的。Qlib 的回测跑在模拟撮合上(配置里的
exchange_kwargs就是模拟参数),且自带样本数据来自 Yahoo 爬取,官方明确提示"数据可能不完美,建议有高质量数据源时自己准备"。 - 成熟度:MIT 协议,PyPI 包名
pyqlib,支持 Python 3.8–3.12(见 pyproject.toml)。pip 装到的是最新稳定版,main 分支处于活跃开发状态——想试新特性再考虑从源码安装。
⚙️ Qlib 回测工作流是怎么工作的
这张图从上到下分三层。底层是基础设施:数据服务器、训练器、模型管理器,负责把数据喂上来、把模型存下去。中间的工作流层是主干:Information Extractor 先从原始行情里抽出因子和特征,Forecast Model 把特征变成每只股票的预测分数,Portfolio Generator 按分数生成持仓策略,Order Executor 把策略拆成可执行的订单——这四步由 Meta Controller 统一调度。顶层的 Analyst 负责事后分析,比如收益归因、风险报告。对你最有用的信息是:这几块是松耦合的,换掉其中任何一环(比如把 LightGBM 换成 LSTM),其他部分不用动。
🚀 Qlib 从零跑通:安装、取数、跑回测三步走
第 1 步,安装。这条命令装 Qlib 稳定版及全部依赖(含 lightgbm、mlflow),没有任何输出,不报错即成功。
pip install pyqlib第 2 步,取数据。这条命令把中国 A 股日频数据下载到~/.qlib/qlib_data/cn_data,成功后该目录会生成行情、交易日历等.bin数据文件,可用 scripts/check_data_health.py 检查数据健康度。
python -m qlib.cli.data qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn注意:README 提示官方数据集可能临时不可用,下载失败时按 README.md 的 Data Preparation 一节换社区数据源或自行准备。
第 3 步,跑第一个例子。这两行先克隆仓库进入 examples 目录(README 特意提醒:不要在含 qlib 源码包的目录里运行,避免模块被本地未编译代码遮蔽),然后qrun读取 LightGBM 配置,自动完成建数据集、训练、回测、评估。成功后终端会打印"含成本/不含成本"两组超额收益表,含年化收益、信息比率、最大回撤等数字。
git clone https://gitcode.com/GitHub_Trending/qli/qlib && cd qlib/examples qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml📊 三个真实用法:模型对比、滚动重训、RL 订单执行
用法一:同一套数据上对比多个模型。你遇到什么:手上有 20 个候选模型,不知道哪个在你的数据上更靠谱,各模型论文里的数字没法互相比较。 用它怎么做:examples/benchmarks/ 下每个模型目录都带可直接qrun的 yaml 配置,逐条跑;批量跑用 examples/run_all_model.py,它会给每个模型单独建虚拟环境、跑完清理。 得到什么:统一数据、统一回测口径下的 IC、年化收益、最大回撤对比表,官方基线结果在 examples/benchmarks/README.md,数据基于 CSI300、每模型 20 个随机种子取均值。
用法二:模型上线一段时间后预测变差。你遇到什么:市场风格漂移,用历史数据训练的模型在近期数据上效果下滑。 用它怎么做:examples/benchmarks_dynamic/ 提供两套方案:滚动重训练的 LightGBM/Linear 基线(rolling_benchmark.py),以及 AAAI 2022 论文 DDG-DA 的概念漂移适应实现。 得到什么:按滚动窗口重训的完整配置和数据生成脚本,可以量化"漂移后掉多少分、重训能找回多少"。
用法三:大单拆单执行,降低冲击成本。你遇到什么:一笔大买单如果一次性砸进市场,会把均价推高,需要决定怎么拆、什么时候下。 用它怎么做:examples/rl_order_execution/ 把拆单建模成强化学习问题,exp_configs/ 里备有 TWAP(定时均匀拆单)、PPO、OPDS 三种策略的训练和回测配置。 得到什么:一个在回测模拟器里训练出的下单策略,能直接和 TWAP 的执行成本做对比。
⚠️ 新手常踩的坑:数据、Redis 锁与环境
以下 5 条均来自 docs/FAQ/FAQ.rst 和 README 的提示。
ModuleNotFoundError: No module named 'qlib.data._libs.rolling'——在仓库目录内运行时,本地未编译的 Cython 模块遮蔽了已安装的包。解法:换到仓库外目录运行,或先执行python setup.py build_ext --inplace就地编译。QlibCacheException: It sees the key(...) of the redis lock has existed——上次运行遗留的缓存锁键没释放。解法:redis-cli进select 1后flushdb清键重跑。- Windows 上报 multiprocessing 的 RuntimeError——Windows 子进程机制要求主保护。解法:把
qlib.init()和D.features调用放进if __name__ == "__main__":块里。 - Mac M1 上源码安装时 LightGBM 编译失败——系统缺 OpenMP。解法:先
brew install libomp再pip install .。 - 官方数据下载失败——README 明确说官方数据集因数据安全策略临时停用。解法:按 README.md 的 Data Preparation 一节使用社区数据源,或用自己的数据。
🧗 往深里走:初学、进阶、改源码三条路线
初学(先把组件拆开看一遍):
- examples/workflow_by_code.py——看如何用代码而非 yaml 搭建完整工作流,每个模块的角色一眼可见
- examples/tutorial/detailed_workflow.ipynb——交互式教程,把常用组件过一遍
- docs/introduction/quick.rst——官方快速上手文档
进阶(换数据、换策略、追论文):
- examples/benchmarks/README.md——20+ 模型在 Alpha158/Alpha360 上的基线成绩,选模型的参照系
- docs/advanced/alpha.rst——如何自定义因子和 dataset
- examples/benchmarks_dynamic/DDG-DA/——市场动态适应的完整案例
想改源码(从接口边界入手):
- qlib/data/——数据引擎与表达式算子的实现,读懂
D.features的底层机制 - qlib/model/base.py——模型基类接口,自定义预测模型的入口
- docs/developer/code_standard_and_dev_guide.rst——代码规范与开发指南,提 PR 前先过一遍
下一步:先按上面三步拿到第一组基线数字;想换模型,从 examples/benchmarks/ 挑一个目录直接qrun;想写自己的策略,从 examples/workflow_by_code.py 抄结构再改。
【免费下载链接】qlibQlib is an AI-oriented Quant investment platform that aims to use AI tech to empower Quant Research, from exploring ideas to implementing productions. Qlib supports diverse ML modeling paradigms, including supervised learning, market dynamics modeling, and RL, and is now equipped with https://github.com/microsoft/RD-Agent to automate R&D process.项目地址: https://gitcode.com/GitHub_Trending/qli/qlib
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考