
Qlib量化回测用一个YAML配置跑通A股机器学习工作流【免费下载链接】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 RD process.项目地址: https://gitcode.com/GitHub_Trending/qli/qlib从一条qrun命令说起想跑一次完整回测加载沪深300日线在Alpha158因子集上训练LightGBM把预测分数转成TopkDropout策略最后拿到年化收益和最大回撤。用pandas手撸这套流程代码要写几百行而Qlib的思路是把整条链路压进一份yaml配置qrun一条命令跑完数据、训练、回测、评估。项目速写Qlib是一个面向AI的量化投资平台覆盖数据加载、因子工程、模型训练、回测执行到报告输出的全链路。它和传统量化框架的区别很直接多数工具停在数据 回测引擎模型部分要自己拼Qlib把机器学习流水线当成一等公民模型只是配置里一个可替换组件——LightGBM换成LSTM或XGBoost回测部分一行不用动。适合拿它快速迭代机器学习因子模型、验证思路的人。如果只是想算个单因子IC或画一条简单曲线上Qlib就有点重几行pandas更省事。最小可运行路径三步跑通安装。只装发布版用pip install pyqlib即可想跑仓库里的示例则从源码装git clone https://gitcode.com/GitHub_Trending/qli/qlib cd qlib pip install numpy pip install --upgrade cython # 源码安装前先装好C扩展依赖 pip install .准备A股日线数据落到默认数据目录python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn注意官方示例数据源目前临时停用可以改用社区维护的qlib_bin数据包或用scripts/data_collector/下的爬虫脚本自采数据。数据目录固定为calendar/features/instruments结构Qlib按这个布局读取。一条命令跑LightGBM基准工作流cd examples # 必须在不含qlib源码目录的路径下运行避免包名冲突 qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml跑完终端直接打印风险指标表risk mean 0.000708 std 0.005626 annualized_return 0.178316 information_ratio 1.996555 max_drawdown -0.081806这是扣除基准沪深300前不含交易成本的超额收益年化约17.8%信息比率约2.0最大回撤约8.2%。核心能力拆解用Alpha158加载158个技术因子手工整理特征表是最耗时的环节。Qlib的Alpha158 handler把量价技术特征预计算成158个因子配置的data块只写起止时间和股票池data_handler_config: start_time: 2008-01-01 end_time: 2020-08-01 instruments: csi300 # 股票池沪深300 task: dataset: class: DatasetH kwargs: handler: class: Alpha158 module_path: qlib.contrib.data.handler kwargs: *data_handler_config segments: train: [2008-01-01, 2014-12-31] valid: [2015-01-01, 2016-12-31] test: [2017-01-01, 2020-08-01] # 按时间段切分避免穿越另一个常用选项是Alpha360360个原始价格特征喂给GBDT偏多但它是LSTM、GRU这类深度学习模型的标准输入。两者怎么选维度Alpha158Alpha360因子构成158个量价 预处理统计量360个原始量价特征适配模型GBDT、LinearLSTM、GRU、Transformer切换成本改handler的class即可改handler的class即可替换模型组件模型就是task下的一个block换模型等于改class和kwargstask: model: class: LGBModel module_path: qlib.contrib.model.gbdt kwargs: loss: mse learning_rate: 0.2 num_leaves: 210 max_depth: 8仓库examples/benchmarks/目录下有二十多个模型的现成配置从XGBoost、CatBoost到LSTM、Transformer、HIST每个目录都带README和requirements.txt。想对比模型就复制一份配置改model块dataset、strategy、backtest保持完全一致变量就只有一个。把预测分数变成持仓TopkDropout策略模型输出分数后还得决定分数怎么变成仓位。Qlib默认给的是TopkDropoutStrategy按分数持有最高的topk只股票每期调仓只换掉分数最低的n_drop只、补入新分数最高的用少换来压交易成本。效果示意如下橙色为持仓、绿色为补入、红色为卖出成本参数在配置的backtest块里几个最容易被忽略的参数基准配置默认值含义deal_priceclose成交价用close成交偏乐观用open更贴近现实open_cost0.0005买入成本close_cost0.0015卖出成本limit_threshold0.095涨跌停阈值涨停买不进account1e8初始资金读回测报告跑完后Qlib会分别打印含成本/不含成本两组风险指标重点看三个annualized_return年化超额收益含成本与不含成本差距大说明换手在吃掉alphainformation_ratio超额收益相对风险的比值1.5以上算过得去max_drawdown最大回撤要和年化收益放在一起看想直观检验模型的区分度先pip install .[analysis]装分析依赖再用Jupyter跑examples/下的notebook能拿到分组累计收益曲线——Group1是预测分最高的一组、Group5是最低的一组曲线干净地拉开说明信号有效进阶与组合代码方式跑流程与Recorder组合需要插入自定义逻辑自己的评估口径、自己的预处理时从配置切到代码。examples/workflow_by_code.py是现成模板核心是Recorder机制——每步的参数和产物自动落盘实验可追溯with R.start(experiment_nameworkflow): R.log_params(**flatten_dict(task)) model.fit(dataset) R.save_objects(**{params.pkl: model}) recorder R.get_recorder() sr SignalRecord(model, dataset, recorder) # 保存预测分数 sr.generate() sar SigAnaRecord(recorder) # 信号分析IC等 sar.generate() par PortAnaRecord(recorder, port_analysis_config, day) # 回测 par.generate()换模型后R会自动开新的recorder子目录两组实验结果天然并列不用手动管理实验版本。滚动重训单次训练的模型是静态快照市场风格一漂移预测就开始衰减。examples/benchmarks_dynamic/DDG-DA/给了带元学习的滚动训练方案用近期预测表现决定是否重训还是沿用旧模型避免频繁重训只要简单滚动的话同目录baseline/rolling_benchmark.py更直接。常见卡点qrun在仓库根目录下运行后导入错乱现象版本或函数对不上、报奇怪的module错误。原因源码目录名和包名都叫qlibPython优先import到本地源码目录。解法README明确写了cd到不含qlib目录的路径如examples再跑。数据目录存在但特征读出来是NaN或缺天现象路径没问题D.features返回空或回测里大量日期缺失。原因多半是数据没下全或region不匹配数据是A股却指定了us。解法先跑scripts/check_data_health.py体检数据再确认get_data与qlib.init的region一致。回测收益好看换口径后对不上现象同一策略按配置跑是17%年化自己复算只有8%。原因基准配置deal_price: close意味着用收盘价成交而下单时刻最知道的价格就是close实际很难全部成交在close。解法deal_price改成open把open_cost调到真实费率再比。pip install从源码装失败、cython报错现象C扩展编译不过。原因numpy/cython没先装或版本过旧非conda环境缺头文件。解法按README先pip install numpy和升级cython并用conda管理Python环境支持3.8–3.12。下一步流程跑通之后两个值得挖的方向数据侧把自己的数据源转成Qlib的bin格式见docs/component/data.rst里的CSV转换章节策略侧看qlib/rl/下的强化学习框架把订单执行这类连续决策问题建模进去。模型基准配置与结果examples/benchmarks/代码式工作流模板examples/workflow_by_code.py快速上手文档docs/introduction/quick.rst【免费下载链接】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 RD process.项目地址: https://gitcode.com/GitHub_Trending/qli/qlib创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考