Qlib:微软亚洲研究院 AI 量化投资平台从入门到精通
posts posts 2026-04-08T15:00:00+08:00Qlib 是微软亚洲研究院开源的 AI 量化投资平台,本文从功能边界、核心架构、数据层、模型层、策略层、华炎低代码四大模块全方位深度解析。技术笔记Qlib, 量化投资, AI, 机器学习, 微软亚洲研究院, Python目标读者:想要系统掌握 Qlib 架构与应用的量化开发者、AI 研究者 核心问题:Qlib 是什么?它的数据层、模型层、策略层如何协同?华炎低代码模块如何使用? 难度:⭐⭐⭐⭐(专家设计) 预计阅读时间:50 分钟
§0 三分钟速览
如果你现在只想快速判断这个项目值不值得深入,先记住下面 4 点:
- Qlib 的定位是 AI 量化投资的基础设施,核心是 DataLayer、ModelLayer、StrategyLayer 三层分离的设计,而非开箱即用的实盘策略。
- 它最值得看的不是"有多少 SOTA 模型",而是如何把数据处理、特征工程、模型训练、策略生成组织成一条可复用流水线。
- 华炎(Huawan)低代码模块是 Qlib 的差异化亮点,适合不想写代码但想做量化研究的人群。
- 当前 v0.9.x 版本持续活跃,但 SRL/IRec/AI4Finance 全家桶部分项目 License 与 Qlib 主体不同,使用前需确认。
如果你带着不同目标阅读,可以直接按下面的顺序跳读:
| 你的目标 | 建议优先阅读 |
|---|---|
| 先判断项目边界是否靠谱 | §1、§2、§8 |
| 想快速上手体验 | §3、§4、§5 |
| 想从架构和源码切入 | §2、§6、§7 |
| 想评估是否适合二次开发 | §2、§6、§7、§8 |
§1 阅读目标
读完本文后,你应该能够:
- 准确理解 Qlib 作为 AI 量化基础设施的定位与适用边界。
- 掌握 DataLayer、ModelLayer、StrategyLayer 三层分离的设计思想。
- 理解 Alpha158、Flow、Datamodule 等关键组件的作用。
- 完成 Qlib 的安装配置和基础使用流程。
- 理解华炎低代码模块的设计理念与使用方式。
- 判断这个项目是否适合你的量化研究或工程需求。
§2 项目概述
2.1 什么是 Qlib
Qlib 是微软亚洲研究院(Microsoft Research Asia)开源的 AI 量化投资平台,旨在构建 AI 量化投资的基础设施。
它的核心定位不是"给你一个能赚钱的策略",而是:
- 提供一套完整的量化投资研究流水线框架
- 把数据处理、特征工程、模型训练、策略生成组织成可复用模块
- 让研究者和工程师能够快速实验不同的量化策略
2.2 关键数据
| 指标 | 数值 |
|---|---|
| GitHub Stars | 40.8k |
| GitHub Forks | 6.4k |
| 提交数 | 5,000+ |
| 贡献者 | 200+ |
| 最新版本 | v0.9.5 |
| 协议 | MIT |
| 主要语言 | Python 100% |
2.3 Qlib 的设计哲学
三层分离架构:
| 层级 | 说明 |
|---|---|
| DataLayer | 数据的组织、存储、获取 |
| ModelLayer | 模型的理解、训练、预测 |
| StrategyLayer | 策略的执行、组合管理 |
这种设计的核心价值在于:每一层都可以独立替换和扩展。
你可以在不改变数据层的情况下切换不同的模型,也可以在不改变模型的情况下使用不同的策略。
2.4 这篇文章适合谁读
| 读者类型 | 是否适合 | 原因 |
|---|---|---|
| 量化研究者 | 适合 | 有完整的流水线框架支持实验 |
| AI 开发者 | 适合 | 有丰富的模型和工具 |
| 金融从业者 | 部分适合 | 华炎模块降低门槛,但仍需一定基础 |
| 寻找实盘系统的人 | 不适合 | Qlib 是研究基础设施,不是交易系统 |
§3 先建立边界:哪些是事实,哪些需要谨慎
3.1 当前可确认的已实现能力
| 能力 | 当前状态 | 说明 |
|---|---|---|
| 三层分离架构 | ✅ 已实现 | DataLayer/ModelLayer/StrategyLayer |
| 离线数据管理 | ✅ 已实现 | 完整的 Dataset 和 Storage |
| 丰富的模型库 | ✅ 已实现 | Alpha158、LightGBM、MLP 等 |
| 自动特征工程 | ✅ 已实现 | 内置因子库 |
| 回测框架 | ✅ 已实现 | Backtest仿真 |
| 华炎低代码 | ✅ 已实现 | Web 界面 |
| 实时行情 | 部分实现 | 需要额外配置 |
3.2 需要特别注意的事项
| 注意事项 | 说明 |
|---|---|
| 实盘交易 | Qlib 不包含实盘交易执行模块 |
| 数据源限制 | 免费数据源有限,专业数据需额外购买 |
| License 差异 | SRL/IRec/AI4Finance 部分项目 License 不同 |
| 实时性能 | 离线研究为主,实时场景需额外开发 |
3.3 为什么这个边界必须写清楚
Qlib 是一个研究基础设施,不是交易系统。用户需要清楚:
- Qlib 提供的是研究框架,不是实盘执行
- 数据质量和覆盖范围有明确限制
- 模型效果取决于特征工程和数据质量
§4 核心架构分析
4.1 整体架构图
┌─────────────────────────────────────────────────────────────────────────────┐
│ Qlib 整体架构 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 用户应用层 │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌───────────┐ │ │
│ │ │ 批量 │ │ 交互 │ │ 低代码 │ │ 华炎 │ │ │
│ │ │ 研究 │ │ 研究 │ │ 研究 │ │ Web UI │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ └───────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ StrategyLayer(策略层) │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ TopkDrop │ │ RuleBased │ │ ModelBase │ │ │
│ │ │ Strategy │ │ Strategy │ │ Strategy │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ ModelLayer(模型层) │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Alpha158 │ │ LightGBM │ │ MLP │ │ │
│ │ │ 模型 │ │ 模型 │ │ 模型 │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ GDJ │ │ LSTM │ │ GAT │ │ │
│ │ │ 模型 │ │ 模型 │ │ 模型 │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ DataLayer(数据层) │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Dataset │ │ Provider │ │ Storage │ │ │
│ │ │ (数据获取) │ │ (数据源) │ │ (存储) │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────────────────────────────────────────────┐ │ │
│ │ │ 特征工程(Alpha158/Alpha360等) │ │ │
│ │ └─────────────────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘4.2 三层职责
| 层级 | 职责 | 可替换性 |
|---|---|---|
| DataLayer | 数据的获取、存储、组织 | ✅ 可独立使用 |
| ModelLayer | 模型训练、预测、更新 | ✅ 插拔式设计 |
| StrategyLayer | 策略执行、组合管理 | ✅ 可自定义 |
§5 数据层详解
5.1 数据组织结构
Qlib 使用扁平化的数据存储结构:
qlib_data/
└── csv/
├── feature/
│ ├── alpha_csi100.csv
│ └── index_cn300.csv
├── label/
│ └── lab_ML.pkl
└── cursor/时间序组织:
| 文件 | 说明 |
|---|---|
train.csv | 训练集 |
valid.csv | 验证集 |
test.csv | 测试集 |
5.2 数据获取器
Qlib 支持多个数据获取器:
| 获取器 | 说明 |
|---|---|
| AkShare | 免费开源数据 |
| Tushare | 专业数据(需要 Token) |
| Baostock | A股数据 |
| YahooFinance | 美股数据 |
| JoinQuant | 聚宽数据 |
5.3 Dataset 核心概念
Dataset 是 Qlib 数据层的核心抽象:
from qlib.data import Dataset
# 创建数据集
dataset = Dataset(
handler=data_handler,
segments={
"train": ("2020-01-01", "2021-12-31"),
"valid": ("2022-01-01", "2022-06-30"),
"test": ("2022-07-01", "2022-12-31")
}
)数据处理的三个阶段:
| 阶段 | 说明 |
|---|---|
| Learn | 模型训练 |
| Valid | 超参数调优 |
| Test | 最终评估 |
§6 模型层详解
6.1 内置模型一览
| 模型 | 类型 | 说明 |
|---|---|---|
| Alpha158 | 因子模型 | 158 个预定义因子 |
| Alpha360 | 因子模型 | 360 个预定义因子 |
| LightGBM | 树模型 | 梯度提升树 |
| MLP | 神经网络 | 多层感知机 |
| LSTM | 序列模型 | 长短期记忆网络 |
| GAT | 图模型 | 图注意力网络 |
| Transformer | 序列模型 | Transformer |
6.2 Alpha158 模型
Alpha158 是 Qlib 最经典的模型,定义了 158 个预定义因子:
| 因子类别 | 数量 | 示例 |
|---|---|---|
| 动量因子 | 30+ | ROC、MA |
| 波动率因子 | 30+ | STD、ATR |
| 交易量因子 | 30+ | Volume Ratio |
| 价值因子 | 20+ | PE、PB |
| 质量因子 | 20+ | ROE、Debt |
| 其他 | 30+ | 复合因子 |
6.3 模型训练流程
from qlib.model import Model
from qlib.data import Dataset
# 加载数据
dataset = DatasetHdlr(...)
# 训练模型
model = ModelGBDT()
model.fit(dataset)
# 预测
predictions = model.predict(dataset)§7 策略层详解
7.1 策略类型
| 策略类型 | 说明 | 示例 |
|---|---|---|
| TopkDrop | 选择 Top-K,Drop 劣质 | TopkDropStrategy |
| RuleBased | 基于规则的策略 | MovingAverageStrategy |
| ModelBased | 基于模型的策略 | ModelStrategy |
7.2 TopkDrop 策略
最常用的策略生成器:
from qlib.strategy import TopkDropStrategy
strategy = TopkDropStrategy(
model=model,
dataset=dataset,
topk=50,
n_drop=5,
drop_days=5
)7.3 回测框架
Qlib 提供完整的回测框架:
from qlib.workflow import R
# 开始回测
with R.init(experiment_name="backtest"):
portfolio_metric = R.fit("Backtest", ...)§8 华炎低代码模块
8.1 什么是华炎
华炎(Huawan)是 Qlib 的低代码研究模块,通过 Web 界面降低量化研究门槛。
核心价值:不用写代码也能做量化研究。
8.2 功能覆盖
| 功能 | 说明 |
|---|---|
| 数据管理 | 数据的查看和管理 |
| 因子构建 | 可视化因子编辑 |
| 模型训练 | 一键训练模型 |
| 回测研究 | 可视化回测分析 |
| 结果评估 | 多维度绩效评估 |
8.3 使用方式
# 启动华炎
python -m qlib.wwh
# 访问 Web 界面
# http://localhost:8080§9 安装与配置
9.1 环境要求
| 依赖 | 版本要求 |
|---|---|
| Python | >= 3.8 |
| numpy | 最新版 |
| pandas | >= 1.0 |
| scipy | 最新版 |
9.2 安装步骤
方式一:pip 安装(基础版):
pip install qlib方式二:源码安装(完整版):
git clone https://github.com/microsoft/qlib.git
cd qlib
pip install -e .9.3 数据初始化
# 下载数据
python -m qlib.data.download_data
# 或者使用脚本
python scripts/get_data.py§10 常见问题
Q1: Qlib 和聚宽/米筐有什么区别?
| 维度 | Qlib | 聚宽/米筐 |
|---|---|---|
| 定位 | AI 量化研究基础设施 | 量化平台 |
| 核心能力 | 模型和特征工程 | 完整回测和实盘 |
| 代码开源 | 完全开源 | 部分开源 |
| AI 支持 | 深度集成 | 有限 |
Q2: 需要多少数据才能跑起来?
最少需要一只股票一个月的日线数据,但建议准备:
- 至少 50 只股票
- 至少 1 年数据
- 完整的市场指数数据
Q3: 模型训练需要 GPU 吗?
基础模型(LightGBM、Alpha158)不需要 GPU,但深度学习模型(LSTM、Transformer)建议使用 GPU。
§11 总结
如果要用一句话概括 Qlib,我会这样定义:
它是一个 AI 量化投资基础设施,通过 DataLayer、ModelLayer、StrategyLayer 三层分离的设计,把数据处理、特征工程、模型训练、策略生成组织成可复用流水线。
它的优势在于:
- 完整的三层分离架构
- 丰富的内置模型和因子
- 华炎低代码降低使用门槛
- 活跃的社区和持续更新
- 微软亚洲研究院背书
它的边界也同样明确:
- 不包含实盘交易执行
- 免费数据源有限
- 部分项目 License 不同
- 实时行情需要额外配置
适合 有量化研究需求的开发者和研究者,不适合 寻找开箱即用实盘系统的用户。
资源链接
| 资源 | 链接 |
|---|---|
| GitHub 仓库 | https://github.com/microsoft/qlib |
| 官方文档 | https://qlib.readthedocs.io |
| 论文 | https://arxiv.org/abs/2009.10159 |
| 华炎文档 | https://qlib.readthedocs.io/en/latest/component/wwh/index.html |
文档元信息
- 难度:⭐⭐⭐⭐
- 类型:技术笔记 / 项目解读
- 更新日期:2026-04-08
- 依据来源:GitHub 仓库 README、官方文档与公开源码结构