资讯动态

RD-Agent Qlib 因子场景数据源解析:HDF5 数据约定、生成脚本与 LLM 编码循环的集成机制

发布时间:2026/9/14 5:33:18 来源:尧图企业网站定制
RD-Agent Qlib 因子场景数据源解析HDF5 数据约定、生成脚本与 LLM 编码循环的集成机制【免费下载链接】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 中 Qlib 因子研究场景的数据源模板目录 factor_data_template系统讲解因子自动研发流程中「数据文件夹」的构成、HDF5 读写约定与字段语义以及该数据源如何经由生成脚本与 Prompt 装配机制注入到 LLM 因子编码循环中。读完本文你将掌握 RD-Agent 因子场景的数据落地方式daily_pv.h5全量/调试两份数据、keydata的 HDF5 访问约定、字段$open/$close/...的精确含义以及当数据文件夹缺失时框架如何自动从 Qlib 数据仓库重新生成的完整调用链。一、数据文件的读取约定pd.read_hdf与固定keydataRD-Agent 的因子研发循环中LLM 需要编写可运行的因子代码而这些代码运行前必须先读取行情数据。模板目录下的 README.md 给出的核心约定非常简洁明确import pandas as pd df pd.read_hdf(filename.h5, keydata)关键约束是所有 HDF5 数据文件的 key 一律是data原文强调key is always data for all hdf5 files。这一约定不是孤立的文档描述而是在执行模板中真实落地的因子代码执行模板 factor_execution_template.txt 中LLM 生成的feature_engineering_cls完成fit/transform后结果同样写回 HDF5 并固定使用该 keynew_feat.to_hdf(result.h5, keydata, modew)因此整个因子场景形成了一条自洽的数据格式闭环输入是keydata的行情 HDF5输出也是keydata的因子值 HDF5执行器与评估器无需关心额外的 key 约定。数据文件本身只有一个条目文件名描述daily_pv.h5Adjusted daily price and volume data复权后的日线价格与成交量数据二、daily_pv.h5的字段语义README 中对日线价格与成交量数据Daily price and volume data给出的字段说明如下字段语义$openopen price of the stock on that day当日开盘价$closeclose price of the stock on that day当日收盘价$highhigh price of the stock on that day当日最高价$lowlow price of the stock on that day当日最低价$volumevolume of the stock on that day当日成交量$factorfactor value of the stock on that day当日复权因子带$前缀的列名是 Qlib 数据仓库中「原始价格字段」raw price feature的命名规范因子表达式如factor_template目录中 Qlib 算子形式的特征可以直接引用这些字段。这也解释了后文get_file_desc中按$前缀对列进行分组的逻辑。三、数据从哪来generate.py的完整生成逻辑factor_data_template目录下的 generate.py 是数据仓库到 HDF5 的转换脚本它连接的是 Qlib 的本地数据仓库import qlib qlib.init(provider_uri~/.qlib/qlib_data/cn_data) from qlib.data import D instruments D.instruments() fields [$open, $close, $high, $low, $volume, $factor] data D.features(instruments, fields, freqday).swaplevel().sort_index().loc[2008-12-29:].sort_index() data.to_hdf(./daily_pv_all.h5, keydata)可以分三层理解这段代码数据源初始化qlib.init(provider_uri~/.qlib/qlib_data/cn_data)指向 Qlib 默认的中国市场日线数据目录可通过python -m qlib.run.get_data qlib_data预先准备。前提是本机已有该数据仓库否则脚本无法产出数据。特征抽取与索引整理D.features(instruments, fields, freqday)默认返回(datetime, instrument)双层索引的 DataFrame.swaplevel().sort_index()将其翻转为(instrument, datetime)更符合「按股票查序列」的因子实现习惯。两份数据文件服务于不同环节产出文件覆盖范围用途daily_pv_all.h5所有标的2008-12-29起的完整区间loc[2008-12-29:]正式回测/执行用的全量数据daily_pv_debug.h5时间限定2018-01-01~2019-12-31且仅取前 100 只标的unique()[:100]调试用的小样本数据加速编码-执行反馈循环其中daily_pv_debug.h5的构造值得注意脚本做了两次swaplevel配合过滤data ( ( D.features(instruments, fields, start_time2018-01-01, end_time2019-12-31, freqday) .swaplevel() .sort_index() ) .swaplevel() .loc[data.reset_index()[instrument].unique()[:100]] .swaplevel() .sort_index() ) data.to_hdf(./daily_pv_debug.h5, keydata)即先把索引翻到(instrument, datetime)以截取前 100 只标的再翻回(datetime, instrument)落盘保持与全量文件一致的索引结构两份文件对下游代码完全同构。四、数据文件夹的自动构建generate_data_folder_from_qlib生成脚本的产物并不是直接喂给 LLM 的。真正把数据「安装」到因子场景数据目录的是 utils.py 中的generate_data_folder_from_qlib()其流程为通过QTDockerEnv()准备一个 Qlib 运行容器环境qtde.prepare()并在模板目录下执行python generate.pyqtde.check_output(local_path..., entrypython generate.py)从而在隔离环境中完成数据仓库到 HDF5 的转换断言daily_pv_all.h5与daily_pv_debug.h5均已生成失败时抛出异常并附带执行日志提示检查factor_data_template/generate.py按配置把文件重命名并复制到两个数据文件夹daily_pv_all.h5→FACTOR_COSTEER_SETTINGS.data_folder/daily_pv.h5daily_pv_debug.h5→FACTOR_COSTEER_SETTINGS.data_folder_debug/daily_pv.h5同时把README.md本身也复制到两个目录使 LLM 在工作目录中随数据一起看到字段文档。这里的关键配置来自 factor_coder/config.py 中的FactorCoSTEERSettings环境变量前缀FACTOR_CoSTEER_配置项默认值说明data_foldergit_ignore_folder/factor_implementation_source_data全量金融数据目录注释标明默认是 Qlib 基础数据data_folder_debuggit_ignore_folder/factor_implementation_source_data_debug部分金融数据目录调试用file_based_execution_timeout3600单个因子实现执行超时秒select_methodrandom因子实现执行时的选择方法python_binpythonPython 可执行文件路径数据目录被刻意放在git_ignore_folder下避免大体量 HDF5 污染版本库。五、数据描述如何进入 LLM 提示词get_data_folder_intro与场景装配数据文件夹就绪后框架需要把「有什么数据、结构如何」转化为 LLM 能理解的文本。这由 utils.py 中的两个函数完成get_file_desc(p)—— 单文件结构化描述对.h5文件它会用pd.read_hdf实际读入数据然后生成一段 Markdown 化的描述Data Structure若索引为MultiIndex输出索引层级名对应本文的(instrument, datetime)结构Columns按列的$前缀分组open、close、high等组别与「其他列」并附带每列的 dtype支持传入variable_list只展示与当前任务相关的列Sample Data若存在REPORT_PERIOD列还会抽取单只标的的前 5 行作为样例。对.md文件即复制进来的README.md则直接读取全文作为Markdown Documentation类型的描述。所有描述通过 Jinja2 模板统一渲染为「File Type Content Overview」格式。get_data_folder_intro(fname_reg.*, flags0, variable_mappingNone)—— 数据文件夹总览该函数有三个值得注意的行为懒加载生成若data_folder或data_folder_debug任一目录不存在会自动调用generate_data_folder_from_qlib()重建数据源码中附有 FIXME 注释作者认为这种「取描述即触发生成」的写法略显硬编码只扫描 debug 目录遍历的是FACTOR_COSTEER_SETTINGS.data_folder_debug下的文件调试集与全量集结构一致用调试集描述即可代表数据形态按正则fname_reg过滤文件名拼接方式多个文件的描述以----------------- file splitter -------------分隔拼接成一段长文本。这段文本最终被装配进场景描述。以因子场景为例factor_experiment.py 中的QlibFactorScenario在初始化时调用get_data_folder_intro()得到self._source_data随后get_scenario_all_desc()将其拼入发给 LLM 的完整场景说明Background of the scenario: {background} The source data you can use: {self.get_source_data_desc(task)} The interface you should follow to write the runnable code: {self.interface} ...QlibQuantScenarioquant_experiment.py以同样方式复用这一机制。也就是说README.md 中的字段表与读取示例以及get_file_desc自动探测出的索引结构、列清单共同构成了 LLM 编写因子代码时「看得见摸得着」的数据契约——LLM 在提示词中读到的数据说明与实际挂载到执行容器里的daily_pv.h5是同一份文件的同一份描述从机制上保证了「提示词描述」与「运行时数据」的一致性。六、小结数据源模板目录的职责边界回到 factor_data_template 目录本身它实际上承担了三重角色文档角色README.md声明 HDF5 读取方式固定keydata与字段语义作为 LLM 的数据知识卡片随数据一起分发到两个数据目录生产角色generate.py定义从 Qlib 数据仓库抽取($open, $close, $high, $low, $volume, $factor)并产出全量/调试两份 HDF5 的确定性流程被引用角色generate_data_folder_from_qlib()以该目录为工作目录在 Docker 环境中执行生成脚本并负责把产物与 README 复制到FACTOR_CoSTEER_SETTINGS指定的数据目录。如果你希望在本地手动验证或扩展数据入口就是该目录下的generate.py需本机具备~/.qlib/qlib_data/cn_data数据仓库而调整数据目录位置、执行超时等行为则通过FACTOR_CoSTEER_前缀的环境变量对应FactorCoSTEERSettings的字段完成。配套的回测配置如 Alpha20 基线因子、GBDT 模型的 Qlib 配置可进一步参考 factor_template/README.md与本文的数据源形成「数据 → 因子实现 → 回测配置」的完整链路。【免费下载链接】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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价