乐于分享
好东西不私藏

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

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


一、Quant Signal Factory:基础设施升级与自动化

项目:FM_trade 生态 — Quant Signal Factory 信号工厂核心引擎:RD-Agent 0.8.0 + Qlib 0.9.7(LLM 因子挖掘 → 回测评估 → 信号导出)

上周完成工程化收口(4 个 P0 + 3 个 P1 + 双栈合并),本周重心转向基础设施升级与自动化落地:Qlib 0.9.7 双端适配、RD-Agent WSL2 迁移、日频+周频定时任务全量注册。

本周建设总览

维度
关键产出
Qlib 0.9.7 适配
Windows + WSL2 双端完成,qlib_compat.py 兼容层封装 API 差异
RD-Agent WSL2 迁移
factor-lab 完整迁移,DeepSeek 链路验证通过,500 stocks 14.36s
周频自动化
2 个新任务(周六研究 + 周一计算),8 个定时任务全量注册
代码清理
7 个已迁移文件删除,新增 API 客户端 + 基础测试
管线修复
GBK 编码报错修复,任务编号体系完善

P0:Qlib 0.9.7 API 适配 — 双端完成

背景:Qlib 0.9.7 的 D.features()D.instruments()DataHandlerLP 与 0.8.x 存在 breaking changes,factor-lab 和 quant-signal-factory 两端代码均受影响。

方案:创建 qlib_compat.py 兼容层,封装 0.9.7 API 差异,对外提供 0.8.x 兼容接口。

factor-lab(WSL2)端

项目
说明
核心函数
init_qlib()
 / get_features() / get_features_raw() / get_instruments() / forward_returns()
适配文件
validator.py
 / rd_runner.py / api_server.py / pit_handler.py / paper_extractor.py(5 个)
路径修复
_load_dotenv()
 从 parent.parent.parent 改为 parent.parent
端到端验证
10 stocks × 392 rows, 2.7s;momentum_20d IC=-0.0745

quant-signal-factory(Windows)端

项目
说明
适配文件
alpha_signals.py
 / pit_handler.py / adapter.py / signal_generator.py(4 个)
函数冲突
adapter.py
 的 init_qlib 改为 qlib_compat.init_qlib
管线验证
500 只标的信号生成成功

Validator 表达式模式修复

策略 3 从 exec 包装改为 eval() 闭包,以 DataFrame 为 locals。裸列名表达式 close / (close.shift(20) + 1e-8) - 1 现在可直接使用——函数式与表达式式 IC 完全一致(IC=-0.0089, ICIR=-0.0221)。


P0:RD-Agent WSL2 迁移完成

背景:factor-lab(RD-Agent + 论文因子挖掘 + 验证器)原在 Windows 端的 quant-signal-factory 中,需迁移到 WSL2 以利用原生 Linux 环境。

完成项
说明
factor-lab 迁移
完整迁移到 /home/user/factor-lab/(WSL2)
DeepSeek 链路验证
Amihud 论文 → 1 因子提取 → PIT 通过
路径修复
paper_store.json
 15 篇论文路径从 Windows 反斜杠修复为 Unix 正斜杠
启动脚本修复
start-factor-lab.ps1
 从 -u root 改为默认用户(修复 .env 加载失败)
性能基准
WSL2 跨文件系统读取 500 stocks 仅需 14.36s(80.4 stocks/s)

P1:自动化任务编排 — 日频 + 周频

日频管线(6 个任务,已有):

时间
任务
07:55
Factor-Lab Wakeup
08:05
Signal Factory Pipeline(数据更新 + ML 集成 + 同步 + 论文因子增强)
08:35
Morning Brief
11:30
Midday Review
16:05
Daily Scan

周频管线(2 个任务,W34 新增):

时间
任务
说明
周六 10:00
Weekly Research
论文因子挖掘(DeepSeek)+ RD-Agent 因子挖掘
周一 08:00
Weekly Compute
因子计算 + IC 加权合成 + 导出到 FM_trade

设计要点

  • 周六研究不依赖实时行情,避免占用交易时间
  • 周一盘前 08:00 先于 08:05 日频管线,确保新因子进入当日信号
  • 内置容错:factor-lab 不可达时自动重启,超时优雅退出
  • 内置星期判断:非周六/周一自动跳过,安全幂等
  • 8 个任务全部注册到 Task Scheduler
    ,状态 Ready,已配置"无论用户是否登录均运行"

P1:代码清理与管线修复

删除已迁移文件(7 个):config/papers.yamlconfig/rd_agent.yamlsrc/factors/rd_runner.pysrc/factors/paper_miner.pysrc/factors/combiner.pysrc/data/fundamental.py — 全部已迁移到 factor-lab。

新增文件

文件
职责
src/factor_lab_client.py
WSL2 factor-lab API 客户端
tests/test_alpha_signals.py
信号生成基础测试
tests/test_wind_bridge.py
数据桥基础测试
scripts/run-data-update.ps1
独立数据更新脚本
scripts/run-signal-factory.ps1
独立信号生成脚本

管线修复run-signal-factory-pipeline.ps1 添加 PYTHONIOENCODING=utf-8,修复 Windows GBK 编码导致的 emoji 报错。


当前能力总览

截至 W34,Quant Signal Factory 能力矩阵:

核心能力
状态
数据层
Wind MCP 数据桥 / 700+ 只 / 10 字段 / 增量更新 / PIT 检测 / 泄漏检测
✅ 生产就绪
因子层
RD-Agent LLM 挖掘 / 论文驱动挖掘 / Alpha158 / 3 模型 / 因子持久化
✅ 端到端
回测层
Qlib 端到端 / 单标的策略 / 9 策略模板 / Gate 1 评分 / 交叉验证 / 行业中性化
✅ 已实现
工程层
双栈合并 / 信号 JSON 导出 / 管线脚本 / Qlib 0.9.7 适配 / WSL2 迁移
✅ 已完成
自动化层
6 日频 + 2 周频定时任务 / 无论登录均运行 / 内置容错
✅ W34 完成

当前限制

限制
影响
优先级
数据仅 10 年(2015-2026)
极端行情覆盖不足
🟡 中
论文因子待 PIT+IC 验证
14 篇论文因子仅 Amihud 通过完整验证
🟡 中
模型周度重训
信号更新频率偏低
🟡 中
WSL2 跨文件系统延迟
~80 stocks/s,日频可接受,高频受限
🟢 低

二、沉淀

🔧 兼容层模式:用一层抽象隔离上游 Breaking Changes

Qlib 0.9.7 的 API 变更影响了 factor-lab 和 quant-signal-factory 两端的 9 个文件。没有逐文件改,而是创建 qlib_compat.py 兼容层,对外暴露 0.8.x 风格接口。

好处:未来 Qlib 再升级,只需改兼容层一个文件;上层业务代码零改动。

通用规则:当上游依赖频繁出现 breaking changes 时,引入兼容层(Adapter Pattern)是比"逐文件适配"更可持续的方案。代价是多一层间接调用,但换来的是升级成本的常数化——从 O(文件数) 降为 O(1)。


🐧 WSL2 迁移:让 Linux-first 框架回归原生环境

RD-Agent 是 Linux-first 的研究框架,Windows 端跑需要大量补丁(上周的 7 层补丁体系)。本周把 factor-lab 整体迁移到 WSL2 后:

  • DeepSeek API 调用链路一次跑通,不再有 Windows 端的超时问题
  • 论文路径从反斜杠修正为正斜杠,JSON 解析不再报错
  • .env
     加载失败问题(root 用户 vs 默认用户)一次修复

通用规则:当一个工具链在设计上是 Linux-first 的,与其在 Windows 上打补丁维持,不如迁移到 WSL2 回归原生环境。补丁是债务,迁移是还债。


⏰ 定时任务编排:日频 + 周频的时序设计

周频任务的时间设计有两个关键约束:

  1. 周六研究
    不依赖实时行情 → 可以慢跑 DeepSeek 论文挖掘,不占用交易时间
  2. 周一计算
    先于日频管线 → 新因子在周一开盘前就进入信号

这种"研究→计算→日频消费"的三段式时序,本质上是把因子生产链拆成异步阶段,每个阶段的输出作为下一阶段的输入,时间上完全解耦。

通用规则:定时任务编排不只是"几点跑什么",而是要设计数据依赖的时序拓扑。下游任务必须在上游任务完成后启动,否则会拿到过期数据。


🎯 坑→规则转化率持续 100%

本周 2 个 P0(Qlib 适配 + WSL2 迁移)+ 2 个 P1(自动化编排 + 代码清理)全部产出可执行方案。技术债务也清晰记录(两份 qlib_compat.py 待统一、SingleStockSignalStrategy 重复定义待合并、论文因子与 FactorStore 待打通),不积压不掩盖。


*— 记录于 2026.08.22*