当前位置: 首页 > news >正文

Qlib 快速上手:一条命令跑通量化回测

Qlib 快速上手:一条命令跑通量化回测

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

刚做量化研究时,最耗时间的是数据、模型、回测散落在三个脚本里各写各的。Qlib 量化回测平台把因子构建、模型训练、回测报告串进一份 YAML 配置,一条 qrun 命令跑到底。

为什么选 Qlib 做量化研究

自己搭量化流程,最先碰壁的是两件事:因子和标签的时间对齐容易写错,回测假设也不真实——涨停买不进、手续费不能忽略。Qlib 把这些做成了现成模块:特征表达式在 qlib/data/ops.py 里计算,涨跌停与手续费在 qlib/backtest/exchange.py 里强制执行,examples/benchmarks/ 下有三十多个论文模型的配置可以直接抄来跑,不用从零搭量化回测链路。

用 pip 一条命令安装 Qlib

pip install pyqlib

需要仓库最新代码时,走源码安装:

pip install numpy pip install --upgrade cython git clone https://gitcode.com/GitHub_Trending/qli/qlib && cd qlib python setup.py install

官方离线数据集暂时停用,可用社区维护的 qlib_bin 数据:把压缩包解压到~/.qlib/qlib_data/cn_data即可。数据就位后,直接跑 LightGBM 量化回测:

cd examples qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml

终端会打印年化收益、信息比率、最大回撤,docs 目录里的 report.png 就是这个量化回测流程生成的报告样式:

它是怎么工作的:YAML 驱动的四级流水线

qrun 解析 YAML 后按顺序组装四个模块,像流水线一样:

  • 数据准备data_handler_config指向 qlib/contrib/data/handler.py 里的 Alpha158,把原始行情加工成 158 个因子(量价、波动率、价格位置等);
  • 模型训练task.model是 qlib/contrib/model/gbdt.py 里的 LGBModel,task.dataset是 qlib/data/dataset/ 里的 DatasetH,按 segments 里的时间段切出 train/valid/test 三段;
  • 信号生成:record 段执行 qlib/workflow/record_temp.py 里的 SignalRecord,把模型对每只股票未来涨跌的预测存成信号;
  • 回测执行:PortAnaRecord 用 TopkDropoutStrategy(qlib/contrib/strategy/signal_strategy.py)模拟每日调仓,exchange 层按配置执行涨跌停与费用。

除监督学习外,它还有独立的强化学习框架 qlib/rl/,用来处理订单执行这类更细粒度的连续决策:

配置与调优:workflow_config_lightgbm_Alpha158.yaml 里先看这 6 项

1. 数据路径 provider_uri

qlib_init: provider_uri: "~/.qlib/qlib_data/cn_data"

必须和数据实际下载目录一致,否则 qlib.init 直接报错。

2. 训练集切分 segments

segments: train: [2008-01-01, 2014-12-31] valid: [2015-01-01, 2016-12-31] test: [2017-01-01, 2020-08-01]

按时间顺序切,常见比例约 7:2:1。注意附带数据集只到 2020-08-01,日期别写超。

3. 持仓宽度 topk 与换手 n_drop

kwargs: topk: 50 n_drop: 5

持有预测分数最高的 50 只股票,每天淘汰最差的 5 只换成新晋高的。topk 常用 20~100,n_drop 常用 1~10,n_drop 越大换手越高、手续费越贵。

4. 交易成本 open_cost / close_cost

open_cost: 0.0005 close_cost: 0.0015

对应 A 股佣金加印花税的量级;想更贴近实盘可以调成 0.001 / 0.0013。

5. 涨跌停阈值 limit_threshold

limit_threshold: 0.095

当日涨幅超 9.5% 视为涨停无法成交。沪深主板保持默认即可,别急着改。

6. 模型复杂度

num_leaves: 210 learning_rate: 0.2 num_threads: 20

num_leaves 建议 31~300 之间,越大越容易过拟合;num_threads 按你机器的核数调。

踩过的坑

现象:import qlib 报 ModuleNotFoundError: No module named 'qlib.data._libs.rolling' → 原因:Cython 扩展没在源码里编译,或仓库本地 qlib 目录把已安装的包挡住了 → 解决:在仓库根目录执行python setup.py build_ext --inplace,并确保脚本不在仓库目录下运行。

现象:Windows 上跑报 RuntimeError "start a new process before bootstrapping" → 原因:multiprocessing 在 Windows 不能直接派生新进程 → 解决:把 qlib.init() 和 D.features 放进if __name__ == "__main__":里再运行。

现象:报 QlibCacheException,提示 redis 锁的 key 已存在 → 原因:redis 默认 db 1 里残留了上次任务的锁 → 解决:redis-cli后执行select 1flushdb,或用 qlib.init(redis_task_db=2) 换一个库。

现象:Mac M1 上装 lightgbm 依赖失败 → 原因:缺 OpenMP 运行时 → 解决:先brew install libomp,再pip install .

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

http://www.cnnetsun.cn/news/4325291.html

相关文章:

  • pm-skills产品命名教程:如何做出与品牌价值和受众对齐的AI命名头脑风暴
  • graphify vs Sourcegraph:为什么代码理解需要知识图谱而不仅是搜索
  • LaTeX云端写作环境:开箱即用的学术排版解决方案
  • Grok Bot安卓预注册解析:AI助手移动端流式对话工程实践
  • BT下载慢?3步配好Tracker,P2P下载加速实操教程
  • 阿里云Wan3.0视频编辑模型实战:从API接入到工程落地
  • obsidian-skills使用指南:3步装好,让AI助手写对Obsidian笔记与画布
  • 基于C++和ROS的双UR10双臂协同控制:从Gazebo仿真到真实机械臂
  • 前后端分离酒店管理系统:从源码启动到项目改造实践
  • 招商银行信用卡中心IT笔试复盘:开发岗考点与备考策略
  • 基于SpringBoot的智能社区系统的设计与实现:技术栈、背景意义与核心代码
  • CLI-Anything 使用教程:7 步流水线把 GUI 软件变成命令行工具
  • 牛客一模编程题复盘:从考点拆解到Python笔试实战模板
  • LocalAI 桌面客户端教程:从安装到跑通第一次对话的完整步骤
  • 网约车司机一天的技术复盘:调度、计费与路径规划核心逻辑
  • Claude Subconscious如何实现“永不阻塞“?异步Hook模式完整深度分析
  • 数据爬虫资源包全处理:zip解压报错与Python环境配置实战
  • awesome-design-md案例:PostHog刺猬品牌与开发者友好暗色UI设计
  • PPT Master:免费用 AI 从文档生成完全可编辑的 PPTX
  • 百万行遗留项目如何用graphify?CTO决策视角的完全指南
  • 日志清洗实战:用脚本自动聚合统计ERROR红色报错
  • 如何快速做出可编辑的专业 PPT:PPT Master 完整指南
  • container30 Volume 提速实操:3 个参数搞定写入加速
  • 2025西交869信号与系统真题趋势与高效备考指南
  • draw.io 桌面版 Windows 安装三步搞定:x64、32 位与 ARM64 兼容指南
  • Cherry Studio 备份与数据恢复实操:换电脑、重装系统前该做什么
  • Hypermesh2024从单位设置到3D网格质量检查与节点显示排查
  • 计算机二级C语言一天速通攻略:核心考点与上机技巧
  • Fooocus 本地 AI 绘画完整指南:不碰参数,3 步出图的高质量文生图工具
  • DBeaver 启动慢、内存占用高:从插件清单到 JVM 参数的四步检查