目录

Qlib:微软亚洲研究院 AI 量化投资平台从入门到精通

目标读者:想要系统掌握 Qlib 架构与应用的量化开发者、AI 研究者 核心问题:Qlib 是什么?它的数据层、模型层、策略层如何协同?华炎低代码模块如何使用? 难度:⭐⭐⭐⭐(专家设计) 预计阅读时间:50 分钟


§0 三分钟速览

如果你现在只想快速判断这个项目值不值得深入,先记住下面 4 点:

  1. Qlib 的定位是 AI 量化投资的基础设施,核心是 DataLayer、ModelLayer、StrategyLayer 三层分离的设计,而非开箱即用的实盘策略。
  2. 它最值得看的不是"有多少 SOTA 模型",而是如何把数据处理、特征工程、模型训练、策略生成组织成一条可复用流水线。
  3. 华炎(Huawan)低代码模块是 Qlib 的差异化亮点,适合不想写代码但想做量化研究的人群。
  4. 当前 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 Stars40.8k
GitHub Forks6.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)
BaostockA股数据
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、官方文档与公开源码结构