乐于分享
好东西不私藏

AI 工具实践备忘 · 2026年8月第2周

AI 工具实践备忘 · 2026年8月第2周

一、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 独立计算 / 回测 Adapter / 信号 Schema / Git 初始化)
双栈合并
FM_trade 10 个 qlib 文件 → 薄封装层,API/CLI 完全兼容
论文驱动因子挖掘
4 模块 ~1600 行,15 篇经典论文入库,~20 个因子产出
行业中性化
申万一级分类 + 双方法实现,ICIR +8%(0.84→0.91)
三模型对比基线
LightGBM / XGBoost / CatBoost,Alpha360 特征
数据覆盖
700+ 只标的,10 字段,2015-2026

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_stocksdata_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.py
evaluate_backtest.pyrun-daily-scan.ps1 路径不变
API/CLI 兼容
所有命令行参数和返回值保持一致
单一数据源
删除 config.json,QSF 使用 config/data.yaml 统一配置

② 论文驱动因子挖掘 — 完整管线上线

本周最重要的新功能。4 个核心模块 ~1600 行代码,实现从 arXiv 论文到可执行因子代码的全自动流程:

模块
行数
职责
paper_fetcher.py
449
arXiv 论文发现 + PDF 下载
paper_parser.py
440
章节分割 + 公式识别
paper_extractor.py
403
DeepSeek-V4 因子代码生成
paper_store.py
307
状态机 + 血统追踪

论文库: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。


③ 行业中性化 — 申万分类 + 双方法实现

维度
说明
行业数据
CSI 500 成分股申万一级行业,Wind MCP 批量获取,500 只
方法一
组内去均值法
:每个交易日截面,按行业分组减去行业均值
方法二
Barra 回归残差法
:OLS 回归剥离行业 beta,样本不足自动退化
实测效果
ICIR 从 0.84 → 0.91(+8%),IC 均值从 0.076 → 0.070

关键发现:行业中性化后 IC 均值略有下降(行业 beta 被剥离,纯 alpha 减少),但 ICIR 显著提升——意味着因子的稳健性提高了,收益更均匀分布在各期,而非靠行业 beta 一次性拉高。


当前能力总览

截至本周,Quant Signal Factory 已具备以下能力矩阵:

核心能力
状态
数据层
Wind MCP → Qlib 数据桥 / 700+ 只 / 10 字段 / 增量更新 / PIT 检测
因子层
RD-Agent LLM 挖掘 / 论文驱动挖掘 / Alpha158 / 3 模型 / 因子持久化
回测层
Qlib 端到端 / 单标的策略 / 9 策略模板 / Gate 1 评分 / 交叉验证 / 行业中性化
工程层
双栈合并 / 信号 JSON 导出 / 管线脚本 / Windows 兼容 / Git 版控

二、沉淀

📐 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"策略也是一个重要的工程规则:消除重复代码时不破坏外部接口,降低迁移风险。


PS:试用了DeepSeek Harness,做了一轮项目代码评审,双栈漂移等问题就是由DSH提出的。下周继续。

*— 记录于 2026.08.14*