十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Qlib GRU 轻量级时序预测实战指南

Qlib GRU 轻量级时序预测实战指南 Qlib GRU 轻量级时序预测实战指南【免费下载链接】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如果你用过 LSTM 做股票收益预测被训练速度和调参成本劝退过Qlib 内置的 GRU 时序模型是个不错的切入点。Qlib 是一个面向 AI 的量化投资平台覆盖因子数据、模型训练到回测报告的完整链路这篇教程以官方 Alpha158 配置为例带你从特征筛选、GRU 参数调优一路讲到量化回测配置10 分钟内跑通第一个 GRU 预测实验。为什么 GRU 比 LSTM 更适合跑量化做时序预测时真正的瓶颈往往不是精度而是迭代速度。LSTM 有四个门参数量比 GRU 多出约四成训练明显更慢在样本有限的行情数据上还更容易过拟合。GRU 把遗忘门和输入门合并成一个更新门去掉了细胞状态整个网络基本就是一层 GRU 一层线性输出。你可以把它想象成一个交易台分析师手里只有两个旋钮重置旋钮决定忘掉多少昨天的市场情绪更新旋钮决定吸收多少今天的新信息两个旋钮配合着让隐藏状态一路滚下去梯度也不至于消失。我们在 Qlib 里的实现放在 qlib/contrib/model/pytorch_gru_ts.py网络只取最后一个时间步的隐藏状态过一次线性层输出当日收益得分正好契合看最近 N 天、选今天股票的选股范式。一句话小结GRU 的价值是结构精简——参数更少、训练更快、迭代更省心是策略研发里的性价比之选。五分钟跑通 GRU 实验 不需要写一行 PythonQlib 用一个 YAML 就能把整条流水线配完。官方示例在 examples/benchmarks/GRU/workflow_config_gru_Alpha158.yaml流程是这样的数据准备好之后一条命令走起# 一条命令搞定因子预处理、模型训练、回测报告全都在这一步里 python -m qlib.cli.run examples/benchmarks/GRU/workflow_config_gru_Alpha158.yaml跑完你会得到一套预测得分、IC 分析图和回测结果全过程由 workflow recorder 记录方便复现和对比。一句话小结在 Qlib 里跑 GRU 就是一份 YAML 一条命令的事所有可调项都在这一个文件里。Alpha158 特征集如何筛出 20 个因子Alpha158 一共 158 个因子全塞进去既慢又噪。示例的数据处理器只留 20 个配置长这样data_handler_config: instruments: csi300 infer_processors: - class: FilterCol # 从 Alpha158 里挑出 20 个核心因子 kwargs: {fields_group: feature, col_list: [RESI5, WVMA5, RSQR5, ...]} - class: RobustZScoreNorm # 稳健标准化压制极端值 kwargs: {fields_group: feature, clip_outlier: true} - class: Fillna kwargs: {fields_group: feature} learn_processors: - class: DropnaLabel - class: CSRankNorm # 标签转成截面排名 kwargs: {fields_group: label} label: [Ref($close, -2) / Ref($close, -1) - 1] # 次一交易日的收益有三个点值得琢磨。其一FilterCol 留下的多是残差、波动率、回归拟合类的因子比如 RESI5、WVMA5、KLEN剩下的对 GRU 来说基本是噪音。其二RobustZScoreNorm 用中位数和四分位距代替均值与标准差做标准化——股市里一个涨停板就能把均值拉飞稳健版不会。其三看标签构造Ref($close, -2) / Ref($close, -1) - 1拿的是次一交易日的收益。为什么不直接用当日涨跌幅因为当日收盘价要收盘后才知道信号若依赖它模型等于提前偷看了答案。一句话小结特征筛选、稳健标准化、标签构造这三件套是模型能干净学下去的地基。GRU 参数调优hidden_size、num_layers 怎么设模型段配置不长我们把每个参数的值和理由整理成表配置项推荐起点为什么这么设d_feat20必须和col_list长度一致对不上直接报错hidden_size64安全起点太小抓不住 20 维因子的交互太大在有限样本上容易过拟合num_layers2一层抽短期形态、二层抽象更长依赖两层是性价比之选dropout0.0金融样本有限过度正则化反而浪费信号batch_size800批越大梯度噪声越平滑800 在显存上稳妥early_stop10验证集连续 10 轮不提升就停别浪费时间task: model: class: GRU module_path: qlib.contrib.model.pytorch_gru_ts kwargs: d_feat: 20 # 必须和 col_list 长度对得上 hidden_size: 64 # 隐藏层安全起点 num_layers: 2 # 两层堆叠的 GRU batch_size: 800 early_stop: 10 # 10 轮没提升就停 dataset: class: TSDatasetH kwargs: step_len: 20 # 输入序列最近 20 个交易日注意step_len: 20这个输入窗口模型看最近 20 个交易日预测下一天。想让模型对短期波动更敏感可以调小它但有效样本量也会跟着变化改完记得对比验证集表现。一句话小结先按 64/2 起步验证集损失走平再逐个动旋钮是 GRU 参数调优最稳的路径。TopkDropout 回测参数怎么调模型只输出得分变成策略靠的是 TopkDropoutStrategy。规则很简单每次调仓日按得分选前 50 只topk50已持有的股票里只换掉最差的 5 只n_drop5其余不动。这种只换尾巴的设计把换手和交易成本压得很低。量化回测配置方面示例也很务实open_cost 设 0.0005佣金约五厘close_cost 设 0.0015含印花税limit_threshold 设 0.095 过滤掉涨跌停买不进卖不出的票。 看结果时别只盯累计收益把每日 IC 图拉出来日常 IC 大部分落在 0.05 上方、负向尖刺不多说明信号可信如果训练与验证损失差拉大、测试期 IC 衰减那就是过拟合要回去调参数而不是加大模型。一句话小结topk50 / n_drop5 先保留着等回测跑通再动 n_drop在换仓频率和跟踪度之间找平衡。常见坑点与排障跑 GRU 的过程里你大概率会遇到这几类问题梯度爆炸训练循环里自带梯度裁剪幅度 3.0防止极端行情把参数打飞看源码时别把它当冗余删掉。缺失值处理数据加载器统一做 ffillbfill先前向填、再后向填解决停牌造成的断档自己拼数据集时记得保留这个设置。过拟合判断train/valid 损失差拉大且测试期 IC 衰减时先把 num_layers 降到 1、调小学习率或拉长训练窗口加层数不是解药。早停不生效early_stop 只在验证指标连续不提升时触发如果很早就停了多半是学习率太大前期分数都爬不上去。CPU 调试把GPU设成 -1 会自动回退到 CPU训练会明显变慢建议只用来跑小规模数据验证。一句话小结异常八成来自缺失值、梯度、学习率这三处先查这三处再怀疑模型。延伸应用与部署注意事项GRU 跑通之后有几条路可以延伸。一是滚动训练用 rolling 模块按月重训让模型跟上市场风格切换二是高频场景把 step_len 缩短到 5 左右就能用在分钟级数据上三是组合优化把 PRED 信号接进 portfolio 模块交给风险模型做权重分配比拍脑袋等权更稳。关于时序预测模型部署训练完成的模型会经 torch.save 存下上生产前可以用 torch.jit 做序列化、加快加载实盘期间盯着每日 IC连续三天跌破 0.05 就触发重训极端行情下按波动率阈值动态收缩仓位即可风控逻辑不必复杂在调仓环节加几条判断就够。如果你还没拉过源码执行一次git clone https://gitcode.com/GitHub_Trending/qli/qlib后打开 examples/benchmarks/GRU 目录跑通一次配置就可以开始动手改参数了。一句话小结GRU 只是起点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 RD process.项目地址: https://gitcode.com/GitHub_Trending/qli/qlib创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表