1. 课程导入
欢迎进入《Qlib实验管理与信号评估实战》。在量化研究里,真正拉开差距的往往不是某个模型结构,而是实验是否可复现、信号是否被正确评估。很多团队能跑通一次回测,却无法回答三个关键问题:这次收益来自哪个因子?换一组参数结果是否稳定?同样的信号在不同股票池、不同时间段是否依然有效?本课程的目标,就是围绕 Qlib 建立一套可管理、可比较、可复盘的实验与评估体系。
一、学习目标:从“能跑”到“可解释、可复现、可迭代”
本课程不是单纯讲 Qlib 的 API 用法,而是把 Qlib 当作量化实验的操作系统。学完之后,你应当具备以下能力:
- 实验管理能力:能够用 Qlib 的 workflow、配置文件和记录机制,把数据、模型、训练、预测、回测串成一条可复现流水线。
- 信号评估能力:理解 IC、Rank IC、ICIR、分组收益、换手率、回测指标之间的区别,知道什么信号值得继续投入。
- 对比分析能力:能够设计 A/B 实验,控制变量,比较不同模型、不同特征、不同标签构造对最终信号的影响。
- 工程落地能力:能够把实验中的最佳配置沉淀为可重复运行的脚本或配置,而不是停留在 Notebook 的一次性结果。
二、核心概念:实验、信号与评估的三层关系
在 Qlib 中,实验管理、信号生成和信号评估并不是三个孤立环节,而是一条链。数据层提供行情与特征,模型层产出预测分数,信号层把预测分数转化为可交易信号,评估层则判断这个信号是否具备统计显著性和经济意义。
| 层级 | 核心对象 | 关键问题 | 常见产出 |
|---|---|---|---|
| 数据与特征层 | 行情、因子、标签 | 数据是否干净?标签是否未来函数? | 特征矩阵、标签序列 |
| 模型与实验层 | 模型、超参数、训练配置 | 实验是否可复现?变量是否受控? | 模型文件、预测分数、实验记录 |
| 信号与评估层 | 信号、组合、回测 | 信号是否稳定?收益是否来自风险暴露? | IC 报告、分组收益、回测曲线 |
其中,信号评估是最容易被低估的一环。很多人只盯着年化收益,却忽略了 IC 的稳定性、分组单调性和换手率。一个高收益但高换手的信号,在扣除交易成本后可能迅速衰减;一个 IC 很高但只集中在少数股票上的信号,也可能只是过拟合。
三、整体框架:Qlib 实验管理与信号评估的闭环
Qlib 的实验管理可以理解为一个闭环:配置驱动 → 数据准备 → 模型训练 → 预测打分 → 信号评估 → 结果记录 → 迭代优化。这个闭环的关键在于配置与记录。Qlib 通过 YAML 配置和 workflow 把实验参数固化下来,使得每次运行都有迹可循。
# 典型 Qlib 实验配置结构(示意)
qlib_init:
provider_uri: "~/.qlib/qlib_data/cn_data"
region: cn
market: &market csi300
benchmark: &benchmark SH000300
data_handler_config: &data_handler_config
start_time: 2018-01-01
end_time: 2022-12-31
fit_start_time: 2018-01-01
fit_end_time: 2020-12-31
instruments: *market
task:
model:
class: LGBModel
module_path: qlib.contrib.model.gbdt
kwargs:
loss: mse
learning_rate: 0.05
dataset:
class: DatasetH
module_path: qlib.data.dataset
kwargs:
handler:
class: Alpha158
module_path: qlib.contrib.data.handler
kwargs: *data_handler_config
segments:
train: [2018-01-01, 2020-12-31]
valid: [2021-01-01, 2021-06-30]
test: [2021-07-01, 2022-12-31]
record:
- class: SignalRecord
module_path: qlib.workflow.record_temp
- class: SigAnaRecord
module_path: qlib.workflow.record_temp
这段配置体现了 Qlib 实验管理的核心思想:把数据区间、模型参数、训练/验证/测试切分、记录器全部显式声明。当你需要比较两个模型时,只需替换 model 部分,其余保持不变,实验就具备了可比性。
四、实战路线图:从第一个实验到信号评估报告
本课程的实战路线分为四个阶段,每个阶段都对应可交付成果:
- 环境与数据准备:安装 Qlib,下载或接入行情数据,确认数据字段和交易日历正确。
- 第一个可复现实验:使用 Alpha158 特征和 LightGBM 模型,跑通训练、预测、回测全流程,并生成实验记录。
- 信号评估体系:计算 IC、Rank IC、ICIR,绘制分组收益曲线,分析换手率和回测指标。
- 对比与迭代:设计 A/B 实验,比较不同模型或特征组合,沉淀最佳配置并形成评估报告。
下面是一个典型的信号评估命令示例,用于在 Qlib 中生成分析记录:
# 运行实验并生成信号分析记录
python -m qlib.workflow.cli run --config experiment_config.yaml
# 查看实验记录
python -m qlib.workflow.cli info --experiment_name my_first_experiment
# 输出 IC、Rank IC 等指标(示意日志)
Signal Analysis:
IC: 0.042
Rank IC: 0.051
ICIR: 0.38
Rank ICIR: 0.45
五、常见误区与复盘思路
在进入正式实验之前,先了解几个高频误区,可以少走很多弯路:
- 误区一:只看收益,不看风险调整。年化 30% 但最大回撤 40% 的信号,未必优于年化 15% 但回撤 10% 的信号。
- 误区二:忽略交易成本。高换手信号在扣费后可能完全失效,评估时必须加入成本假设。
- 误区三:用测试集调参。测试集一旦参与调参,就不再是测试集,评估结果会严重高估。
- 误区四:实验不可复现。没有固定随机种子、没有记录配置、没有保存模型,结果无法追溯。
本章的核心任务是建立全局认知:Qlib 实验管理解决的是“可复现”问题,信号评估解决的是“可信度”问题,两者结合才能形成可持续迭代的量化研究流程。接下来,我们将从环境搭建和数据准备开始,逐步把这套框架落到真实代码与实验中。