Qlib上手指南

Qlib 新手上手指南(Windows,Python 3.8)

面向第一次接触 Qlib 的同学。本文从 0 到 1 带你完成:环境搭建、数据准备、首次运行、结果理解与后续学习路径。

1. 这份文档适合谁

  • 第一次接触 Qlib
  • 想在本机先跑通一个可复现实验
  • 使用 Windows + Conda

2. 你将学到什么

完成本文后,你可以独立完成:

  • 创建并固定一个可复用环境(qlib_env
  • 下载并管理本地 Qlib 数据(data/cn_data
  • 跑通第一个 LightGBM 基线实验
  • 看懂核心评估指标(IC、年化收益、回撤等)

3. Qlib 是什么(1 分钟认识)

Qlib 是一个量化研究框架,核心流程是:

  1. 准备数据
  2. 生成特征/标签
  3. 训练模型
  4. 回测策略
  5. 输出分析报告

你可以把它理解成一个把"数据、模型、回测、评估"串起来的标准化工具链。

在真正的量化实操中,上述的每个部分都可以单个拿出来优化。Qlib的核心优势是把这个流程穿起来了,然后我们可以着重优化其中的一个,并且整体跑通并不影响。

4. 本项目目录说明

  • requirements.txt:本项目依赖
  • qlib/:Qlib 源码与官方示例
  • data/cn_data:本地数据目录(本文指定,如果不指定下载目录,会下载到默认的C盘)
  • qlib/examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158_local.yaml:本地可运行配置

5. 环境搭建(可复制命令)

在项目根目录执行:

powershell 复制代码
cd "C:\Users\Administrator\Desktop\AlphaForge\qlib example"
conda create -n qlib_env python=3.8 -y
conda activate qlib_env
python -m pip install -U pip setuptools wheel
python -m pip install -r requirements.txt

安装后做一次一致性检查:

powershell 复制代码
where python
where qrun

两者都应指向 C:\ProgramData\Anaconda3\envs\qlib_env\...

6. 数据下载到指定目录

将数据下载到项目内 data/cn_data

powershell 复制代码
python -m qlib.cli.data qlib_data --target_dir .\data\cn_data --region cn

检查目录:

powershell 复制代码
Get-ChildItem .\data\cn_data

应至少包含:calendarsfeaturesinstruments

7. 第一次运行(已验证可跑通)

运行命令:

powershell 复制代码
qrun qlib/examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158_local.yaml

这是当前项目里已经验证可跑通的一条基线命令。

qlib中使用的都是yaml命令。yaml命令的讲解如下:

这条命令本质上是:

用一个 YAML 配置文件,自动完成 Qlib 的"初始化 -> 训练 -> 预测分析 -> 回测分析"。

powershell 复制代码
qrun qlib/examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158_local.yaml
  1. 命令拆解
  • qrun:Qlib 的命令行入口。
  • .../workflow_config_lightgbm_Alpha158_local.yaml:实验配置文件,定义数据路径、模型、训练区间、回测参数等。

qrun 对应实现入口在 [run.py](C:/Users/Administrator/Desktop/AlphaForge/qlib example/qlib/qlib/cli/run.py)。


  1. 它实际执行了什么(顺序)
    1. 读取 YAML(支持 Jinja 模板变量)。
    2. 解析配置并初始化 qlib.init(...)(这里会读取 qlib_init.provider_uri)。
    3. 构建模型对象(LGBModel)。
    4. 构建数据集对象(DatasetH + Alpha158 handler)。
    5. 训练模型(fit)。
    6. 执行 record 列表中的分析记录器(预测分析、回测分析)。
    7. 把结果写入 mlruns/(实验记录)。

训练主流程在 [trainer.py](C:/Users/Administrator/Desktop/AlphaForge/qlib example/qlib/qlib/model/trainer.py)。


  1. 这份 YAML 里你最需要懂的字段
    配置文件:

    workflow_config_lightgbm_Alpha158_local.yaml\](C:/Users/Administrator/Desktop/AlphaForge/qlib example/qlib/examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158_local.yaml)

  • market / benchmark:股票池和基准指数。
  • data_handler_config:数据时间区间、训练拟合区间。
  • task.model:模型类型与超参数(这里是 LightGBM)。
  • task.dataset:数据集构造方式(训练/验证/测试切分)。
  • task.record:要生成哪些报告与回测结果。

4. YAML 里两个你会经常见到的语法

  • &name*name:锚点/引用,避免重复写配置。
    例如 market: &market csi300,后面 instruments: *market
  • <MODEL><DATASET>:占位符,训练后会被真实对象替换再传给记录器。

5. 结果会保存到哪里

默认在项目根目录的 mlruns/

每次运行会创建一个新的 run,里面有参数、指标、预测与回测产物。


6. 你现在可以这样继续用

powershell 复制代码
conda activate qlib_env
qrun qlib/examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158_local.yaml

8. 运行结果怎么看

你首先要找到每次运行的输出在哪。应该在根目录的mlruns下,其中一个长数字文件夹中,这个长数字代表着模型代号,下面的每个文件夹代表着每次的运行。

总览

在同一个 experiment 下共有 5 次 run(目录:mlruns/918039572779910683):

  1. 8b9337b5a2974b1f8ef0f0afae3e84e6
  2. a4f6bb393e36466eb627a755fb5280c4
  3. e9ee6ac36de041e7906c8e87ce6980f4
  4. f649264b25e147a3b7cc63a126b4488f
  5. e44ad02a76e747f7bf78e93ab490389e

第 5 次(成功 run)

run id:e44ad02a76e747f7bf78e93ab490389e

路径:

成功 run 目录\](C:/Users/Administrator/Desktop/AlphaForge/qlib example/mlruns/918039572779910683/e44ad02a76e747f7bf78e93ab490389e) 状态:`status=3`(成功) 它包含完整结果: * `artifacts/config`:本次运行配置快照 * `artifacts/task`:任务配置 * `artifacts/dataset`:数据集对象 * `artifacts/params.pkl`:训练好的模型参数对象 * `artifacts/pred.pkl`:预测结果 * `artifacts/label.pkl`:标签数据 * `artifacts/sig_analysis/`:信号分析(含 `ic.pkl`, `ric.pkl`) * `artifacts/portfolio_analysis/`:回测分析(收益、仓位、指标等 pkl) 关键指标(来自 `metrics/`): * `IC = 0.04680587323833807` * `ICIR = 0.3815683918932705` * `Rank IC = 0.049049290457489736` * `Rank ICIR = 0.406748756941287` * `1day.excess_return_without_cost.annualized_return = 0.1260289794931573` * `1day.excess_return_without_cost.information_ratio = 1.4285742844475509` * `1day.excess_return_without_cost.max_drawdown = -0.07230960299230482` * `1day.excess_return_with_cost.annualized_return = 0.08065424981584728` * `1day.excess_return_with_cost.information_ratio = 0.9144858856010761` * `1day.excess_return_with_cost.max_drawdown = -0.08608280684938441` 重点看这些输出: * `IC / Rank IC`:信号与未来收益的相关性,越高通常越好 * `annualized_return`:年化收益 * `information_ratio`:风险调整后收益,越高越稳 * `max_drawdown`:最大回撤,绝对值越小越稳 你会看到三类结果: * benchmark return(基准) * excess return without cost(不含交易成本) * excess return with cost(含交易成本) 通常以"含成本"结果更接近真实交易表现。 ## 如何对每个环节进行优化 **推荐路线** 你现在最适合按"由浅到深"做个性化: 1. 先做配置级个性化(不改源码) 在这个文件基础上复制一份并改参数: \[workflow_config_lightgbm_Alpha158_local.yaml\](C:/Users/Administrator/Desktop/AlphaForge/qlib example/qlib/examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158_local.yaml) 优先改这几块: * `market` / `benchmark`(如 `csi300` 改 `csi500`) * `data_handler_config`(训练/验证/测试时间) * `model.kwargs`(学习率、树深、叶子数) * `port_analysis_config.strategy.kwargs`(`topk`、`n_drop`) * 交易成本(`open_cost`、`close_cost`、`min_cost`) 2. 再做特征级个性化 先用官方示例理解特征构造,再替换成你的版本: \[features_sample.py\](C:/Users/Administrator/Desktop/AlphaForge/qlib example/qlib/examples/benchmarks/LightGBM/features_sample.py) 3. 再做模型级个性化 先在 YAML 里切换模型类(不写代码),再考虑自己写模型类并通过 `module_path` 挂载。 4. 最后做策略级个性化 从"预测分数 -\> 下单规则"这层优化,比如: * 调整持仓数量和换手频率 * 加入更严格的成本/滑点假设 * 改再平衡周期

相关推荐
财经资讯数据_灵砚智能2 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年4月26日
大数据·人工智能·python·信息可视化·自然语言处理
2401_883600252 小时前
mysql如何设置仅允许特定内网访问_MySQL权限配置中的IP绑定
jvm·数据库·python
love530love2 小时前
FaceLift 单图 3D 人脸重建项目 Windows 11 完整部署指南
人工智能·windows·python·3d·facelift
财经资讯数据_灵砚智能2 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年4月25日
大数据·人工智能·python·信息可视化·自然语言处理
zhangrelay2 小时前
三分钟云课实践速通--线性代数--python版--矩阵
linux·笔记·python·学习·线性代数·ubuntu·矩阵
2401_871492852 小时前
SQL如何实现按自定义排序进行分组汇总_ORDERBY与聚合函数
jvm·数据库·python
qq_330037992 小时前
如何清洗SQL输入数据_使用框架内置的ORM处理数据交互
jvm·数据库·python
ydmy2 小时前
强化学习/对齐(个人理解)
开发语言·python
sinat_383437363 小时前
Laravel 8 中实现错误日志与调试日志分离的完整配置指南
jvm·数据库·python