尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

RD-Agent 金融数据智能体(fin_factor):Qlib 量化因子自动研发与迭代进化实战指南

发布时间:2026/9/14 18:52:36

资讯中心
01
ARTICLE

RD-Agent 金融数据智能体(fin_factor):Qlib 量化因子自动研发与迭代进化实战指南

RD-Agent 金融数据智能体(fin_factor):Qlib 量化因子自动研发与迭代进化实战指南
RD-Agent 金融数据智能体fin_factorQlib 量化因子自动研发与迭代进化实战指南【免费下载链接】RD-AgentResearch and development (RD) is crucial for the enhancement of industrial productivity, especially in the AI era, where the core aspects of RD are mainly focused on data and models. We are committed to automating these high-value generic RD processes through RD-Agent, which lets AI drive>项目地址: https://gitcode.com/GitHub_Trending/rd/RD-Agent本文围绕 RD-Agent 仓库中的 Finance Data Agent 场景docs/scens/data_agent_fin.rst展开讲解其“假设生成 → 因子创建 → 因子实现 → Qlib 回测 → 反馈分析 → 假设精炼”的六步自动研发循环RD Loop并基于仓库源码逐层剖析该循环的编排结构、回测数据切分约定、.env环境变量配置项以及会话续跑机制。读完本文你可以直接运行rdagent fin_factor启动量化因子自动进化流程并掌握通过环境变量定制实验参数、通过日志路径恢复中断会话的完整操作路径。背景量化因子为什么适合 Agent 驱动的研发循环在量化交易中因子Factor是交易者利用市场无效性inefficiency的核心工具——从市盈率等简单指标到折现现金流等复杂模型因子是高精度预测股价的关键。量化交易者依靠因子构建策略不仅识别市场规律还显著提升交易效率与精度系统化地分析与应用因子的能力正是普通交易与真正策略化运作的分水岭。RD-Agent 将这一过程交给 Agent 自动完成由 LLM 生成假设、拆分任务、编写因子代码再由 Qlib 回测结果反馈修正假设形成持续进化的闭环。整个场景的入口是 CLI 命令rdagent fin_factor对应实现位于 rdagent/app/qlib_rd_loop/factor.py该文件中的FactorRDLoop继承自通用工作流类 RDLoop并在回测失败FactorEmptyError、CoderError时自动跳过该轮保证循环可持续运行。整体工作流六步因子进化循环文档将场景描述为一个“假设生成、知识构建与决策的迭代过程”重点展示金融因子如何通过持续反馈与精炼不断进化。具体步骤如下Step 1假设生成Hypothesis Generation基于前序实验分析与领域知识生成并提出初始假设要求具备充分的推理过程与金融合理性。源码中该步骤由hypothesis_gen组件完成FactorBasePropSetting默认指向 QlibFactorHypothesisGen在 RDLoop._propose 中可以看到生成的Hypothesis会先经过可选的用户交互修正_interact_hypo再写入日志hypothesis generation。Step 2因子创建Factor Creation根据假设拆分任务task。每个任务包含开发、定义与实现一个新金融因子名称、描述、公式formulation与变量。该步骤对应源码中的hypothesis2experiment组件QlibFactorHypothesis2Experiment将假设转换为带子任务的实验对象。Step 3因子实现Factor Implementation按照任务描述实现因子代码并以开发者身份持续演化evolving代码对新实现的因子进行定量验证。对应组件是coder默认为 QlibFactorCoSTEER即 CoSTEER 编码器的因子特化版本。CoSTEER 框架通过多轮“实现—执行—反馈—修正”循环演化代码其轮数上限由max_loop控制见下文配置节。Step 4Qlib 回测Backtesting with Qlib将完整数据集集成到因子实现代码中准备因子库使用Alpha158 加上本轮新建因子 LGBModel在 Qlib 中回测评估新因子的有效性与表现。默认回测配置如下表与 conf_baseline.yaml 完全对应DatasetModelFactorsData SplitCSI300LGBModelAlpha158 Plus新建因子Train: 2008-01-01 ~ 2014-12-31Valid: 2015-01-01 ~ 2016-12-31Test: 2017-01-01 ~ 2020-08-01从源码看这些细节均有据可查conf_baseline.yaml 中market: csi300、benchmark: SH000300数据加载器为Alpha158DL标签定义为Ref($close, -2)/Ref($close, -1) - 1两日未来收益模型为LGBModelqlib.contrib.model.gbdt回测使用TopkDropoutStrategytopk50, n_drop5初始资金 1 亿含涨跌停与手续费设置QlibFactorRunner 负责整个回测流程处理新因子数据 → 与历史 SOTA 因子做IC 去重若新因子与已有因子的 IC 超过 0.99 则判定为重复因子并剔除若全部被剔除则抛出FactorEmptyError提示“本轮因子与历史因子高度相似请更换方向”→ 将合并后的因子写入combined_factors_df.parquet→ 在 Qlib Docker 中执行 conf_combined_factors.yaml若实验链中已存在 SOTA 模型实验QlibModelExperiment则自动注入该模型代码并复用其训练超参数改用conf_combined_factors_sota_model.yaml执行“SOTA 模型 合并因子”的回测。Step 5反馈分析Feedback Analysis分析回测结果评估表现将反馈纳入用于修正假设、改进模型。对应summarizer组件QlibFactorExperiment2Feedback在 RDLoop.feedback 中调用若本轮发生异常会直接生成decisionFalse的HypothesisFeedback让下一轮假设生成参考失败原因。Step 6假设精炼Hypothesis Refinement基于回测反馈精炼假设重复整个循环以持续改进模型。每一轮的实验与反馈通过Trace记录到研发轨迹中RDLoop.record作为后续假设生成的“记忆”。evolving_n参数默认 10控制这一进化循环的轮数。快速开始Quick Start系统依赖准备请参考 安装与配置文档。以下是文档给出的完整快速开始步骤1. 创建 Conda 环境conda create -n rdagent python3.10 conda activate rdagent文档注明 Python 3.10 与 3.11 均在 CI 中经过良好测试对应仓库中的 constraints/3.10.txt 与 constraints/3.11.txt。2. 安装 RD-Agent 包从 PyPI 安装pip install rdagent3. 运行应用直接运行因子研发循环rdagent fin_factorCLI 参数详解rdagent fin_factor子命令定义于 rdagent/app/cli.py其最终调用 factor.py 的 main 函数。可用参数参数类型说明--pathstr指定历史日志/会话路径从该会话继续运行续跑模式--step_nint本次运行的步数可选--loop_nint本次运行的循环数可选--all_durationstr总时长上限如2h到点自动停止--checkout/--no-checkout-c/-Cbool是否从__session__检出工作区默认 True其中“会话续跑”在源码 docstring 中给出了示例factor.py第 43–47 行dotenv run -- python rdagent/app/qlib_rd_loop/factor.py $LOG_PATH/__session__/1/0_propose --step_n 1 # step_n 为可选参数即path指向日志目录下__session__/循环号/步骤目录如0_proposeFactorRDLoop.load(path, checkoutcheckout)会从该步恢复状态继续执行。此外main还支持base_features_path参数Python 调用层面从指定目录加载自定义基础因子代码*.py与base_factors.json因子名 → Qlib 表达式的 JSON 对象并通过validate_qlib_features校验合法性详见 RDLoop._init_base_features。环境变量配置.env 定制文档 “Usage of modules” 一节列出了可在.env文件中设置、用于定制应用行为的环境变量分属两个配置类。注意 rdagent/app/cli.py 会在入口最早期load_dotenv(.env)因此.env必须位于当前工作目录。FactorBasePropSetting前缀QLIB_FACTOR_定义于 rdagent/app/qlib_rd_loop/conf.py控制研发循环整体编排与各组件类环境变量默认值说明QLIB_FACTOR_scenrdagent.scenarios.qlib.experiment.factor_experiment.QlibFactorScenario场景类为 Agent 提供背景、数据接口、输出格式等描述QLIB_FACTOR_hypothesis_gen...proposal.factor_proposal.QlibFactorHypothesisGen假设生成类QLIB_FACTOR_hypothesis2experiment...proposal.factor_proposal.QlibFactorHypothesis2Experiment假设转实验任务拆分类QLIB_FACTOR_coder...developer.factor_coder.QlibFactorCoSTEER因子编码类QLIB_FACTOR_runner...developer.factor_runner.QlibFactorRunner因子回测运行类QLIB_FACTOR_summarizer...developer.feedback.QlibFactorExperiment2Feedback实验结果转反馈类QLIB_FACTOR_evolving_n10进化循环轮数QLIB_FACTOR_train_start/train_end2008-01-01/2014-12-31训练段起止QLIB_FACTOR_valid_start/valid_end2015-01-01/2016-12-31验证段起止QLIB_FACTOR_test_start/test_end2017-01-01/2020-08-01可空测试/回测段起止这些类名不是摆设RDLoop 构造函数 通过import_class(PROP_SETTING.xxx)动态实例化每个组件因此修改一个环境变量即可替换整条研发流水线中的任意一环。训练/验证/测试日期则会被注入 QlibFactorScenario 的实验设定提示qlib_factor_experiment_setting以及回测运行的run_env中见 QlibFactorRunner.develop最终由conf_*.yaml中的 Jinja2 模板变量{{ train_start }}等消费保证“提示词中的设定”与“实际回测的切分”始终一致。FactorCoSTEERSettings前缀FACTOR_CoSTEER_定义于 rdagent/components/coder/factor_coder/config.py继承自 CoSTEERSettings。文档列出且可配置的成员环境变量默认值说明FACTOR_CoSTEER_coder_use_cacheFalse是否对编码结果使用缓存FACTOR_CoSTEER_data_foldergit_ignore_folder/factor_implementation_source_data金融数据目录默认为 Qlib 基础数据FACTOR_CoSTEER_data_folder_debuggit_ignore_folder/factor_implementation_source_data_debug部分金融数据目录调试用FACTOR_CoSTEER_file_based_execution_timeout3600单个因子实现执行超时秒FACTOR_CoSTEER_select_methodrandom因子实现的选择方式FACTOR_CoSTEER_max_loop10单个任务的实现循环最大轮数继承自 CoSTEER 设置FACTOR_CoSTEER_knowledge_base_pathNone知识库路径FACTOR_CoSTEER_new_knowledge_base_pathNone新知识库路径从源码结构看max_loop、knowledge_base_path等继承自基类CoSTEERSettings分别控制编码演化的轮数上限与外部知识库的读写位置data_folder/data_folder_debug则用于因子实现阶段的本地数据挂载配合 get_factor_env 构造因子编码所需的执行环境默认使用当前 Conda 环境作为本地执行环境执行超时 600 秒。一次循环在源码中如何流转将六步文档化流程映射到代码后RDLoop由LoopMeta元类按方法调用顺序装配流水线每轮依次执行proposeRDLoop._proposehypothesis_gen.gen(trace, plan)基于历史轨迹生成假设exp_gendirect_exp_gen第 199–210 行hypothesis2experiment.convert将假设转为实验并把plan[features]注入为实验的基础因子默认是 ALPHA20coding第 212–215 行coder.develop产出因子工作区sub_workspace_listrunningFactorRDLoop.running执行 Qlib 回测失败即抛FactorEmptyError触发跳轮feedback由summarizer生成假设级反馈record实验与反馈写入Trace供下一轮使用。值得注意的两个工程细节失败不中断FactorRDLoop声明skip_loop_error (FactorEmptyError, CoderError)、skip_loop_error_stepname feedback即因子提取或编码失败时记录错误反馈并直接进入下一轮而不是让整条流水线崩溃回测结果带缓存QlibFactorRunner.develop使用cache_with_pickle装饰器相同的实验输入可复用历史回测结果避免重复跑昂贵的 Qlib 回测。观测与周边能力所有关键对象scenario、hypothesis、experiment、coder result、runner result、feedback均通过logger.log_object落盘可用rdagent ui命令启动 Web 界面查看研发轨迹cli.py 中 ui 命令运行前可用rdagent health_check检查 Python 环境、Docker 与端口等依赖是否就绪rdagent/app/utils/health_check.py同一套 Qlib 场景还支持fin_model模型研发、fin_quant因子模型联合研发、fin_factor_report从研究报告提取因子等命令入口与参数形式与fin_factor一致配置分别由同文件中的ModelBasePropSetting、QuantBasePropSetting、FactorFromReportPropSetting控制conf.py数据切分约定与本节相同。小结Finance Data Agent 场景把量化因子研发中“提出想法—写代码—回测—复盘”的重复劳动封装成一条可配置、可续跑、带记忆与失败兜底的自动流水线rdagent fin_factor一条命令启动QLIB_FACTOR_*变量定制数据切分与组件FACTOR_CoSTEER_*变量控制编码演化与知识库回测统一收敛到 CSI300 Alpha158 LGBModel 的标准基线之上并通过 IC 去重防止因子同质化。所有环节的实现均可在 rdagent/app/qlib_rd_loop/ 与 rdagent/scenarios/qlib/ 下按上文路径逐一核验。【免费下载链接】RD-AgentResearch and development (RD) is crucial for the enhancement of industrial productivity, especially in the AI era, where the core aspects of RD are mainly focused on data and models. We are committed to automating these high-value generic RD processes through RD-Agent, which lets AI drive>项目地址: https://gitcode.com/GitHub_Trending/rd/RD-Agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。