☰
Qlib Alpha158 因子库快速上手指南:从配置到回测结果的完整路径
2026/10/18 13:45:49 网站建设 项目流程

Qlib Alpha158 因子库快速上手指南:从配置到回测结果的完整路径

【免费下载链接】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

Alpha158 是 Qlib 内置的即用因子库。158 个特征全部由 OHLCV 六个字段算出,不用你手写因子。拉一份数据、跑一条 qrun 命令,就能拿到训练好的 LightGBM 模型和完整回测报告。

📌 ① 为什么需要它:手动构造因子的成本

假设你要自己搭一套因子库。写一个滚动因子要查资料、处理停牌和缺失,一天算多的;158 个因子就是三个月的活,结果还可能不如基线。Alpha158 解决的就是这个痛点:给你一套经过验证的因子集,把时间省给模型和策略。

有意思的是,更"原始"的 Alpha360(60 天 × 6 字段 = 360 个特征)特征数更多,但树模型下 Alpha158 往往更稳。区别在于:Alpha158 把原始价格预先消化成了有名字、可解释的因子;Alpha360 把消化工作留给模型。它到底怎么算的?

⚙️ ② Alpha158 核心设计:3 个关键决策

  1. 因子写成表达式,而不是代码。它选了"配置驱动的表达式"而不是"用 Python 逐因子硬编码"。每个因子就是一句文本表达式,比如Mean($close, 20)/$close,由数据引擎读取时现算。增删因子 = 改一行配置,不用动代码,实现见因子计算源码。

  2. 除以最新收盘价,而不是用原始价格。它选了"所有价格类因子除以当日 $close"而不是"直接喂原始价"。A 股价格从 1 元到 1000 多元,不除的话模型先学到"哪只股票贵"而不是"哪只股票在动"。除以 close 后因子无单位,股票之间才能横向比较。

  3. 窗口固定为 5 档 [5,10,20,30,60]。它选了"预配置滚动窗口组"而不是"让用户自己调窗口"。29 个滚动算子 × 5 个窗口 = 145 个因子,5 日短周期到 60 日中周期都覆盖到,默认参数拿来就能当研究基线。

🔍 ③ 里面有什么:Alpha158 因子组按数据流拆解

数据流一条线:本地日线数据 → 表达式解析 → 因子矩阵 → 归一化 → 模型输入。按信号来源分 6 组:

  1. 数据输入层(原始字段)— 输入日线 6 字段 OHLCV,来自~/.qlib/qlib_data/cn_data下的 bin 文件;输出引擎可引用的$close、$volume等原始列。
  2. K 线形态组(9 个)— 只用当日 OHLC,描述单日 K 线形状。输入开=100、收=101、高=102、低=99 → 输出 KMID=0.01(实体中点位置)、KLEN=0.03(K 线长度)。
  3. 价格位置组(4 个)— 当日开/高/低/vwap 除以 close,全部围绕 1 波动。今日最低 98、收盘 100 → LOW0=0.98。
  4. 价格滚动组(75 个)— 15 个算子(MA/ROC/STD/BETA/RANK/RSV/MAX/MIN 等)× 5 个滚动窗口。RANK20 = 当日收盘价在近 20 日的排位,取值 0~1;RSV20 接近 1 表示价格贴近 20 日最高位。
  5. 量价相关组(10 个)— CORR/CORD 度量价格与成交量的线性关系。CORR20 明显大于 0,说明这 20 天里量价同向。
  6. 量能方向组(60 个)— 量能统计(VMA/VSTD/WVMA 等)+ 涨跌统计(CNTP/SUMP 等)。SUMP20 = 近 20 日总涨幅 / 总绝对变动,接近 1 说明以涨为主,类似 RSI。

158 个特征算完后还有两步:label 取 2 日未来收益Ref($close, -2)/Ref($close, -1) - 1;训练集先 DropnaLabel 删缺失行,再做截面 ZScore 标准化。最终输出是(股票 × 日期)特征矩阵,模型直接可用。

🚀 ④ Alpha158 五分钟跑通:安装到回测的 3 步

第一步,安装并拉数据。

git clone https://gitcode.com/GitHub_Trending/qli/qlib && cd qlib python setup.py install python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn

你应该看到:安装完成提示,随后数据下载完毕,落在~/.qlib/qlib_data/cn_data。

第二步,跑完整工作流。

cd examples qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml

你应该看到:LightGBM 用 158 个特征训练,控制台输出日度 IC/ICIR,以及一张含成本前后年化超额收益的结果表。

第三步,改一处配置验证理解。在工作流配置文件里改Alpha158的参数,比如 instruments 换成 csi500。你应该看到:数据集股票数量相应变化,整条流程自动重跑。

📈 ⑤ 怎么判断它在工作:看一张 IC 图

这张图是模型日度 IC 的时序曲线。IC 线稳定在 0 上方,才说明模型把股票排出了高低:排得靠前的,后续收益确实更高。

判断标准:测试段 ICIR 大于 0.5,说明因子有区分度;若 IC 线在 0 附近来回贴,模型基本等于瞎猜,回头检查数据分段和 label 配置。

⚠️ ⑥ Alpha158 使用的 3 个高频踩坑点

  1. 回测收益高得离谱。你可能会发现年化超额是基准的数倍——原因是 label 用了 1 日未来收益,等于偷看未来。解法:保持默认 2 日前向标签Ref($close, -2)/Ref($close, -1) - 1。
  2. 测试期 IC 明显高于训练期。原因是归一化统计量在全区间上拟合,测试数据参与了训练统计。解法:配置里显式设置fit_start_time/fit_end_time,把拟合窗口限制在训练段。
  3. 数据集一股都没加载。你可能会把 instruments 改成 csi500 后训练直接报错或 IC 为空——原因是本地数据里没这个股票池。解法:先用instruments: csi300确认流程通了,再去数据目录里核对 instruments 列表。

➡️ ⑦ 下一步

  • 和 Alpha360 做对照:cd examples && qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha360.yaml
  • 改因子组合:编辑 Alpha158 工作流配置
  • 读懂因子表达式:通读 qlib/contrib/data/loader.py

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询