一、量化交易能力建设:Quant Signal Factory 信号工厂
项目:FM_trade 生态 — Quant Signal Factory 信号工厂核心引擎:RD-Agent 0.8.0 + Qlib 0.9.8(LLM 因子挖掘 → 回测评估 → 信号导出)
本周建设总览
RD-Agent + Qlib 是什么
RD-Agent 是微软开源的自动化 R&D 框架,核心是 "LLM 提出假设 → 自动编码 → 回测验证 → 反馈迭代" 的闭环:
- 假设生成
:LLM 根据历史实验反馈,提出因子假设(如"5日动量 + 20日波动率 + 量价相关性") - 编码
:LLM 将因子公式转化为可执行的 Python 代码 - 运行
:通过 Qlib 回测管线计算 IC、年化收益、最大回撤等指标 - 反馈
:LLM 分析结果,决定下一轮方向
Qlib 是微软的 AI 量化平台,提供数据处理、特征工程(Alpha158)、模型训练(LightGBM 等)到回测评估的完整管线。
二者关系:RD-Agent 是"大脑"(决定挖什么因子),Qlib 是"裁判"(评估因子好不好用)。
因子挖掘实战
5 轮迭代,12 个因子产出。关键发现:
| 0.0152 | 36.6% | ||||
关键发现:简单因子组合表现最优。增加复杂度(VWAP 偏离、ATR 归一化、PVT)并未提升 IC,反而引入噪声。LLM 能根据回测结果自我调整——第 3 轮失败后,第 4 轮自动转向"市场微观结构"方向。
踩坑记录(7 个,全部解决)
坑 1:Alpha158 返回 0 行 → ZeroDivisionError(阻断级)
模板配置的时间范围是 2008-2020,但实际数据覆盖 2021-2026。Alpha158 在 2008-2020 范围找不到数据,返回 0 行导致除零崩溃。
修复:更新所有模板 YAML 中的时间范围,monkey-patch 自动适配。
沉淀:数据时间范围是量化管线的"隐形契约"。模板里的硬编码日期是默认假设用户有 Qlib 官方数据集,自建数据必须显式对齐。
坑 2:YAML 将 "000300" 解析为整数 300(阻断级)
YAML 1.1 规范中 000300 被解析为八进制 → 整数 300。Qlib 期望字符串格式的 instrument 代码。
修复:加引号 benchmark: &benchmark "000300"。
沉淀:股票代码如 000300、000905 在 YAML 中必须加引号。
坑 3:conda/qrun 在 Windows 上不可用(阻断级)
RD-Agent 设计为 Linux 优先,Windows 上 conda 不在 PATH,qrun 是 Unix 命令。
修复:通过 monkey-patch 绕过——用 Python 子进程调用 Qlib 的 workflow() API 替代 qrun 命令行。
沉淀:在 Windows 上跑 Linux-first 框架,核心策略是"用 Python 替代 Shell"。
坑 4 ~ 7:API 变更 + 环境差异 + 数据模型
Alpha158 | module_path 兼容性 | |
file store is not supported | ||
$ 转义 | $close | \$ 转义 |
factor_implementation |
Windows 兼容性补丁体系
RD-Agent 在 Windows 上运行需要 7 层补丁,已全部集成到 rd_runner.py:
os.symlink | shutil.copy/copytree | |
select.poll() | threading + queue | |
/bin/sh -c | ||
.h5 | ||
LocalEnv | ||
subprocess.run |
当前限制与下一步
下周重点:扩展数据至 2015 年(IC 有望从 0.015 提升至 0.03+)、让信号工厂真正接入 FM_trade 交易决策。
本周核心主题:从"不可能"到"跑通了"。RD-Agent 在 Windows 上的部署曾被认为是不可行的(conda/qrun 缺失、Docker 不可用、API 版本不兼容),但通过 7 层补丁体系的系统性工程,LLM 因子挖掘的全链路已经打通。
二、沉淀
📐 数据时间范围是量化管线的"隐形契约"
模板文件中的硬编码日期(2008-2020)是框架的默认假设。使用自建数据时,必须显式对齐日期范围,否则 Alpha158 处理器静默返回 0 行,直到除零崩溃才暴露。
通用规则:任何框架的模板配置都有"默认假设",迁移到自己的数据时必须逐项核对。
🔧 Windows 上跑 Linux-first 框架的方法论
不是让 Windows 支持 conda/qrun,而是用 Python 子进程调用等效的 Python API。7 层补丁体系的本质是"用 Python 替代 Shell"——每一层补丁都是把一个 Unix 专有操作替换为跨平台的 Python 等价物。
🎯 坑→规则转化率持续 100%
本周 7 个坑全部产出了可执行的规则,累计规则库持续增长。每个坑的沉淀不是"下次注意",而是写入配置校验、写入 YAML 规范、写入代码注释——让规则可执行、可检查、可自动化。
*— 记录于 2026.08.07*
夜雨聆风