Qlib 实战教程:5分钟从安装到跑通一个量化策略
【免费下载链接】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
一条命令跑通 LightGBM 选股策略,真的可行吗?这不是演示视频——qrun执行完毕后,你的终端里已经有了模型分数、回测收益和信号评估。Qlib 是微软开源的 AI 量化投资平台:数据、因子、模型、回测、强化学习、在线服务,一套框架全部覆盖。哪怕你只是会一点 Python 的开发者,上手门槛主要卡在时间,而不是难度。📊
功能全景:每项能力你能得到什么
开始动手前先看地图。下面 6 项能力全部开箱即用,路径列可直接打开源码核对:
| 能力 | 主要位置 | 你能得到什么 |
|---|---|---|
| 数据处理 | qlib/data/ | bin 存储 + 表达式查询,高低频混合,磁盘与内存两级缓存 |
| 因子库 | qlib/contrib/data/handler.py | Alpha158(158 个因子)、Alpha360(360 个特征),即插即用 |
| 模型库 | qlib/contrib/model/ | 20+ 预置模型,树模型、神经网络、集成学习齐全 |
| 回测 | qlib/backtest/、qlib/contrib/strategy/ | 模拟撮合交易所:佣金、涨跌停、起收点全部建模 |
| 强化学习 | qlib/rl/ | Agent-Environment 标准接口,面向订单执行的序贯决策 |
| 在线服务 | qlib/workflow/online/ | 滚动重训、预测更新、信号下发,生产链路完整 |
三步安装并跑通示例策略
安装只花三行命令:
pip install pyqlib git clone https://gitcode.com/GitHub_Trending/qli/qlib cd qlib && python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn第一行装库,第二行拉代码,第三行下载沪深 300 的日线示例数据。完成后进入 examples 目录,执行:
qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml
这一行命令依次完成 5 件事:
- 数据预处理:读取
~/.qlib/qlib_data/cn_data下的 A 股日线,标的池为 csi300; - 特征工程:Alpha158 handler 从原始行情合成 158 个因子;
- 模型训练:
LGBModel(LightGBM 封装)在 2008–2014 训练、2015–2016 验证; - 回测评估:2017–2020 测试期,策略是
TopkDropoutStrategy——持有分数最高的 50 只(topk=50),每天只换掉最差的 5 只(n_drop=5); - 报告生成:
SignalRecord、SigAnaRecord、PortAnaRecord三个记录器把分数、IC、收益曲线写入实验记录。
第 4 步的换仓规则如图所示,"只换 5 只"这一手控制了换手率,也就压住了成本:
以上参数全部写在那份 yaml 里。改任意一个数字再重跑,就是一次完整的实验循环。
量化策略在 Qlib 里如何流转:数据流视角
qrun 能一键跑完,是因为 Qlib 把数据流固定成了:Information Extractor → Forecast Model → Portfolio Generator → Order Executor,由 Meta Controller 自上而下调度。
四步各司其职:
- Information Extractor负责从数据里提信息,支持 Factor、Text、Graph、Event 四类输入;
- Forecast Model把信息变成预测信号,除 Alpha 外还可输出 Risk、Earning 信号;
- Portfolio Generator把信号变成目标仓位;
- Order Executor决定订单怎么下,含 VWAP、收盘价与高频执行器。
图的最上层是界面层(分析器、模型解释器、在线服务),最底层是基础设施层(数据服务器、Trainer、模型管理器)。你可以把每层理解成插座:自己写模块时照着接口实现,插进去就能被调度。
模型怎么选:按场景对号入座
qlib/contrib/model/下有 20 多个模型,基准测试里每个都配了 yaml 和 README。别追最新,按场景选:
| 你的场景 | 推荐类型 | 代表模型 | 为什么 |
|---|---|---|---|
| 有因子表、数据量中等 | 树模型 | LightGBM、XGBoost、CatBoost | 训练快、过拟合少,标准基线 |
| 想直接吃行情序列 | 时序神经网络 | LSTM、GRU、ALSTM、Transformer | 能学习时间依赖 |
| 建模个股间关系 | 图/注意力 | GATs、IGMTF | 显式建模股票间交互 |
| 担心单模型不稳 | 集成学习 | DoubleEnsemble | 多轮纠偏,结果更稳 |
| 优化下单过程本身 | 强化学习 | PPO、OPDS | 序贯决策,最小化执行成本 |
一个建议:先跑 LightGBM 拿到基线收益和 IC。等你能解释树模型性能来自哪里,再上神经网络——否则收益涨跌都归因不了。
回测频率怎么选,以及三个可靠性指标
先定频率。Qlib 默认示例是日频回测,中长周期选股够用;分钟级高频看examples/highfreq/;策略本身多频率混合时,有现成配置workflow_config_lightgbm_Alpha158_multi_freq.yaml。
回测完看三类指标:
- 收益:年化收益、累计收益,和基准比(示例基准为 SH000300);
- 风险:最大回撤、标准差。收益高但回撤深,未必拿得住;
- 风险调整:夏普比率、信息比率(相对基准),这是横向比较策略的主指标。
示例报告还会给出分位对比:按模型分数把股票分成 5 组,画 Group1–Group5 与 long-short 的累计收益。Group1 明显在 Group5 上方、多空曲线单调抬升,说明模型有区分度:
最后提一个坑:未来数据泄露。用基本面、财报数据时,必须只取"当时已披露"的值。Qlib 提供 PIT(Point-In-Time)数据支持,入口在qlib/data/pit.py,文档见docs/advanced/PIT.rst。不然回测收益虚高,实盘直接翻车。⚠️
三条扩展路径:自定义策略、RL 执行、在线服务
1. 自定义交易策略。不满足于 TopkDropout 规则,继承BaseStrategy并实现generate_trade_decision即可(接口定义在qlib/contrib/strategy/signal_strategy.py),然后替换 yaml 里的策略类。
2. 强化学习优化订单执行。问题形式是"一笔大单怎么拆、怎么下,成本最低"。qlib/rl/提供 Agent-Environment 交互循环,examples/rl_order_execution/有 PPO、OPDS 的训练与回测配置。🤖
3. 在线服务。模型要定期重训才能保持时效。qlib/workflow/online/把生产拆成固定周期:Update Prediction → Train Task → Prepare Online Models → Prepare Signals,由 OnlineManager 与 OnlineStrategy 分工协调,示例脚本在examples/online_srv/。
高效研究的五个实用技巧
- 开缓存。同一表达式反复计算是慢的最大来源,init 时打开三个开关:
import qlib qlib.init( provider_uri="~/.qlib/qlib_data/cn_data", region="cn", expression_cache=True, dataset_cache=True, mem_cache_size_limit=1024, )- 按时间顺序切分数据。train/valid/test 严格顺时序,绝不能打乱。示例切法是 2008–2014 / 2015–2016 / 2017–2020;滚动重训参考
qlib/contrib/rolling/ddgda.py。 - 用领域知识剪特征。360 个特征全塞进去并不可取,先看 IC 排名,砍掉无效因子再谈调参。
- 超参交给搜索。
qlib/contrib/tuner/提供搜索空间与 launcher,LightGBM 超参搜索示例在examples/hyperparameter/LightGBM/。 - 算足交易成本。别只看毛收益。示例 yaml 的
exchange_kwargs里写明了:open_cost 0.0005、close_cost 0.0015、min_cost 5 元、limit_threshold 0.095。高频策略扣完这些常常所剩无几。
量化研究学习路线:一张表跟下来
| 阶段 | 建议周期 | 目标 | 推荐材料 |
|---|---|---|---|
| 入门 | 1–2 周 | 跑通 qrun,读懂 yaml 与报告 | 示例代码、workflow_by_code.py |
| 进阶 | 1–2 个月 | 对比模型、自定义特征、看懂回测指标 | 官方文档、examples/benchmarks/ |
| 深入 | 3–6 个月 | 读源码、写自定义策略与滚动训练 | qlib/contrib/、docs/advanced/ |
| 深耕 | 6 个月以上 | 复现论文、参与社区贡献 | docs/developer/、项目 issues |
每阶段的标准是"能跑通、能讲清",不求面面俱到。
读完之后,可以马上做的三件事
- 按三步装好环境,跑一次 LightGBM + Alpha158 示例,记下报告里的年化收益和最大回撤。
- 复制那份 yaml,把 topk 从 50 改成 10 再跑一次,对比换手率与收益,体会集中度的代价。
- 打开
docs/component/strategy.rst,通读 TopkDropoutStrategy 一节,想清楚你第一版自定义策略改哪里。
Qlib 不会替你发现 alpha,它把"跑一次完整实验"从几天压缩到几分钟——剩下的,靠你自己的想法和执行力。
【免费下载链接】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),仅供参考