ARTICLE · 1322017
AI 工具实践备忘 · 2026年10月末–11月初(三周报)
一、三周主线:v5.0 从架构搭建到生产闭环
项目:FM_trade 生态 — Quant Signal Factory 信号工厂 + my-bot 趋势交易引擎核心引擎:FFO 因子计算层 + ML Ensemble(CatBoost/XGBoost/GBDT) + P1 因子共识合成(IC 加权 Z-score)策略执行:TiMi 9/9 策略引擎 + STABLE HMM 无监督 Regime 配置
这三周跨过了 v5.0 从"架构设计 + 组件开发"到"生产闭环 + 持续监控"的关键跃迁:
二、W43:Agent 解耦与 LLM 编译器首战
Phase 2A 的四个缺口全部填平,Agent 从管线中解耦为独立的 LLM 决策层:
stable_timi_bridge.py | |
timi_midday.py | |
ingest_timi_signals.py | |
healthcheck.py |
LLM 编译器首次实战:在极端恐慌的市场环境下,走通了"编译策略 → 部署 → TiMi 自动加载"的完整闭环。DeepSeek Agent 替代了原来的静态决策矩阵,配置为 30 秒超时、温度 0.3、新鲜度合约(max_age_days = 1)。
同时完成 77 个 GFlowNet 因子的注册→契约→同步全链路(68 个 active 因子已同步),并发现 pool_max_IC 卡在 0.3556 的天花板——拆解出 VWAP 天花板、信号悬崖、重复入池三个根因。
STABLE HMM 也正式成为 TiMi 的权威宏观输入:HMM 推断 → regime 决策 → 策略选择 → 仓位调整,全自动闭环;HMM 与宏观指标分歧时触发三级告警并自动降仓。
三、W44:第九策交付与一个明确的"不做"
CANSLIM 第九策补齐后,TiMi 策略矩阵达到 9/9 全覆盖:动量、均值回归、突破、波动率、PEAD、资金驱动、题材驱动、CANSLIM 成长股(七维评分:EPS + RS + SMR + Acc/Dis + Industry + Inst + MGMT)、质量价值。CANSLIM 集成 O'Neil 风控体系,341 项测试全绿。
Phase 3 TSFM 明确放弃:TimesFM / Lag-Llama 需要 GPU,当前环境 CPU-only,时序基础模型在 CPU 上不可行。于是 v5.0 以 Phase 1 + Phase 2 交付收口,TSFM 保留为未来升级项。
这一周还修掉了一个隐蔽的 P0:晨报的 CSI300 数据错误,根因是 claude -p 未调用 Wind MCP、静默降级到午间盘数据——报告照常生成、格式完全正确,但数据是另一套。三层修复后才算真正闭环。
四、W45:收口闭环(本周核心)
60 因子注入验收
60 个非平凡因子 × 500 只 CSI500 股票,生成 30,000 个 .day.bin 文件,零错误。IC 验证中 37/60 通过 |IC| > 0.015 阈值,最佳 RankIC 为 -0.0428,中位数 0.0209。
FactorFactory Bridge 投产
把 Phase 1 的因子合成为可交易信号,一条链跑通:IC 筛选(|IC| > 0.015)→ 当日有效性检测(≥30 只股票)→ 缩尾 Z-score(1%/99% 截断)→ IC 加权排序归一化 → 输出 [-1, +1] 的共识信号。
结果:覆盖 499/500 只股票,37/37 有效因子全部贡献,与 ML 信号重叠率 0%——ML 选创业板 sz3*,P1 选上海主板 sh6*,两者天然正交。
覆盖度从 25.9% 修到 94.4%
初始化时只有 11/37 个因子有效,四层根因逐一拆解:
| 主因修复 | ||
四道鲁棒性防护
五、管线编排审计:两个"白跑"的 P0
收口之后对日频全链路做了一次依赖与时间冲突审计,发现 7 项问题,其中两个 P0 尤其值得记录:
① P1 信号无人消费。alpha_signals_p1.json 已投产,但晨报、午报、Daily Scan 三个 LLM 报告都只读 ML 的 alpha_signals.json——新信号每天在生成、每天被丢弃,从未被任何下游使用。
② 对比框架未接入调度。 v4.3 vs v5.0 的对比脚本依赖 ML/P1 双轨都更新完毕,却没有任何 cron 触发它。
其余问题:EOD 与 Signal Factory 在 30 分钟内重复调用同一批 akshare 接口;Step 1 数据更新失败后后续步骤仍继续用旧数据生成信号(只有 CSI300 是硬阻断);PowerShell 脚本无整体超时;两个 "Step 1.5" 命名冲突。
修复后:晨报与 Daily Scan 均新增 P1 读取逻辑(含陈旧检测、双轨共振、P1 独立发现、覆盖度章节);管线加入 $script:DataOk 标志位,数据更新失败即跳过信号生成与同步;命名冲突与过时的脚注一并清理。超时 watchdog 待排期。
六、一个刺眼的数字:IC 0.07,胜率 15.6%
W46 的核心任务被这个矛盾定死了:模型 IC = 0.07,按常理 Top-decile 胜率应在 55–60%,实际只有 15.6%,同期超额收益 -8.44%。
排查后确认根因不是"没重训"——每周重训 cron 九次全部成功。真正的问题是 fit_end_time 被硬编码为 2024-12-31:模型每周都在重训,但训练数据永远停在 2024 年底,2025–2026 的行情从未进入训练集。IC 0.07 只是样本内评估的结果。
这带来一个更本质的判断:15.6% 这个极端值,大概率是符号反了而不是单纯过拟合。所以 W46 的第一步不是调参,而是一个 30 分钟的反向信号实验——直接统计"买入 alpha 最低的 10 只"的胜率:
若 Bottom 10 胜率 > 50% → 排序有效、符号反了,取负号即可修复 若 30–50% → 部分有效,启用 P1 双信号确认 若 < 30% → 真的过拟合,推进训练窗口并增加集成多样性
其余 P0 包括:CSI500 启用行业中性化(历史实验显示 IR +30%)、止损黑名单(同一批输家被反复选中:某标的出现 10+ 次)、11/12 首批 P1 信号到期验证、把 fit_end_time 改为自动推进(这是结构性修复,否则问题必然重现)。
七、沉淀
🔌 "投产"和"被使用"之间隔着一条管线
P1 因子共识信号覆盖 499 只股票、与 ML 零重叠、每天准时生成——但它没有消费者。如果没做这次编排审计,这个模块可以"运行良好"地空转几个月。
通用规则:新组件上线时,除了验证"它能不能产出",还要验证"谁在消费它的产出"。没有下游的产出等于没有产出。
🤖 自动化最危险的失败是语义失败
fit_end_time 冻结在 2024-12-31,而 cron 每周都成功执行、日志一片绿色。进程成功、指标正常、报告照常生成,但模型从未见过近两年的市场。这类失败比崩溃更贵——因为它不报警。
通用规则:监控自动化时,除了"跑没跑",必须监控"跑的是不是我以为的东西"。关键输入参数要有独立的断言。
🎯 极端数字先怀疑方向,再怀疑复杂度
胜率 15.6% 不是"模型不够好",而是"可能整个符号反了"。这两种解释对应的修复成本差了两个数量级:一个是改一行代码,一个是重做特征体系。先花 30 分钟做反向实验,比先花两周调模型理性得多。
通用规则:当指标极端到不合常理时,优先排查方向性错误(符号、时间对齐、标的映射),再谈模型升级。
🚫 明确"不做",也是一种交付
TSFM 方案评估很久,最终因 CPU-only 约束果断放弃,把资源集中到 Phase 1 + Phase 2。三周后 v5.0 顺利收口——如果当时硬上时序基础模型,大概率是两头都不落地。
通用规则:技术路线的收口,往往取决于敢不敢写下"这件事本期不做"。
*— 记录于 2026.11.07*















































































