一、Quant Signal Factory:从"跑通了"到"能用了"
项目:FM_trade 生态 — Quant Signal Factory 信号工厂核心引擎:RD-Agent 0.8.0 + Qlib 0.9.8(LLM 因子挖掘 → 回测评估 → 信号导出)
上周解决了"在 Windows 上跑通 RD-Agent"的 7 层补丁问题,本周重心转向工程化收口与能力扩展:4 个 P0 修复、3 个 P1 新功能、双栈合并消除重复代码。
本周建设总览
P0 修复:4 个阻断级 Bug
① IC 独立计算
RD-Agent 的 FactorRDLoop 返回实验级 IC(每轮因子一个 IC),所有同轮因子被错误赋予相同 IC 值。
修复:新增 _compute_independent_ic() 方法,逐因子独立调用验证器计算 IC。一个因子一个分,不再吃大锅饭。
② Qlib 回测 Adapter
原 adapter 使用 TopkDropoutStrategy(多标的组合策略),单标的 0/1 信号无法正确执行买卖。
修复:实现 SingleStockSignalStrategy,直接根据信号执行买入/卖出,并传递 codes=[symbol] 避免全市场数据加载。策略从"组合选股"模式切换为"单标的方向"模式。
③ Alpha Signals Schema
total_instruments 字段为 MultiIndex 行数(77994),非实际股票数。下游消费者拿到的"股票数量"是错的。
修复:过滤到最新日期,字段改为 total_stocks,data_coverage.stocks 改为动态读取。
④ Git 初始化
两个仓库完成 git init + .gitignore。但因 LM Studio 模型超时阻塞了 git add/commit,需手动执行。
P1 新功能
① 双栈合并 — Wrap, don't replace
FM_trade scripts/qlib/ 有 10 个文件与 QSF 功能重复。策略是包装而非替换:每个文件改为薄封装层,内部 import QSF 模块。
cross_validate.pyevaluate_backtest.py、run-daily-scan.ps1 路径不变 | |
config.json,QSF 使用 config/data.yaml 统一配置 |
② 论文驱动因子挖掘 — 完整管线上线
本周最重要的新功能。4 个核心模块 ~1600 行代码,实现从 arXiv 论文到可执行因子代码的全自动流程:
paper_fetcher.py | ||
paper_parser.py | ||
paper_extractor.py | ||
paper_store.py |
论文库:15 篇经典论文入库,涵盖 Fama-French 五因子、Liu-Stambaugh-Yuan 中国三因子、Amihud 非流动性、Jegadeesh-Titman 动量、Frazzini-Pedersen BAB、Novy-Marx 盈利、Cakici A 股截面等。14 篇完成 PDF→解析→LLM 提取全流程。
因子产出:~20 个论文因子,覆盖非流动性(1)、动量(3)、BAB(2)、盈利(3)、A 股截面(5)、经营盈利(6)等维度。
PIT 安全:提取器内置前瞻偏差检测(shift(-N)、iloc[i+N]),LLM prompt 强制 backward-looking。
③ 行业中性化 — 申万分类 + 双方法实现
| 组内去均值法 | |
| Barra 回归残差法 | |
关键发现:行业中性化后 IC 均值略有下降(行业 beta 被剥离,纯 alpha 减少),但 ICIR 显著提升——意味着因子的稳健性提高了,收益更均匀分布在各期,而非靠行业 beta 一次性拉高。
当前能力总览
截至本周,Quant Signal Factory 已具备以下能力矩阵:
二、沉淀
📐 IC 独立计算:不要让因子"吃大锅饭"
RD-Agent 的实验级 IC 设计本意是评估"一轮实验的整体质量",但在因子筛选场景下,同轮因子可能质量差异很大。实验级 IC 掩盖了个体差异——好的因子被拖累,差的因子被带飞。
通用规则:聚合指标在筛选场景必须拆解为个体指标。"轮次质量"和"因子质量"是两个维度,不能混用。
📊 行业中性化的本质:剥离 beta,保留 alpha
行业中性化后 IC 下降但 ICIR 上升,说明行业 beta 对 IC 有贡献但不够稳定。剥离 beta 后,剩余的纯 alpha 虽然"绝对值"变小,但"性价比"更高——每单位风险获得的超额收益更均匀。
通用规则:评价因子不只看 IC 绝对值,更要看 ICIR(风险调整后的信息比率)。高 IC 低 ICIR 的因子可能是"靠 beta 撑起来的伪 alpha"。
📚 论文驱动因子挖掘:从"LLM 拍脑袋"到"学术支撑"
上周的 RD-Agent 因子挖掘是 LLM 自主假设→编码→验证的闭环,本质是"拍脑袋试错"。本周的论文驱动管线引入了学术文献作为先验知识:
LLM 不再从零开始想因子,而是从经典论文中提取已被验证的因子逻辑 每个因子有明确的学术来源(血统追踪),可追溯、可引用 PIT 安全由提取器保证,LLM prompt 强制 backward-looking
通用规则:LLM 自主探索适合发现新方向,论文驱动适合验证已知方向。两者互补——前者是"发散",后者是"收敛"。
本周 4 个 P0 Bug 全部产出可执行的修复方案。双栈合并的"Wrap, don't replace"策略也是一个重要的工程规则:消除重复代码时不破坏外部接口,降低迁移风险。
*— 记录于 2026.08.14*
夜雨聆风