Files
MoFin/docs/decisions/2026-08-15-策略自我进化闭环重构.md
T

4.9 KiB
Raw Blame History

策略自我进化闭环重构(问题3 诊断 + 设计)

日期:2026-08-15 状态:诊断完成,设计待老莫批准 关联:问题2(策略数据每日自动更新,已落地 c91f49ef/b9b4fadf

一、诊断:进化模块与温区体系全面脱节

老莫定义的关系链:统计数据每日自动更新 → 进化基于最新统计数据做策略研究 → 产出有价值的改进结论

现状:第一节(统计数据)今天才修好;第二节(进化)整体坏死——

组件 病状 证据
evolution_api.py baseline 硬编码 ['v_weak','v_oversold'],与路由激活集合脱节 已修(9ba85733,改数据驱动)
lesson_extractor.py 硬编码 version='v_next4'(已证伪策略);名为"已平仓交易教训提取",实际读的是回测 trades 而非实盘平仓 strategy_lessons 最新行 2026-08-0116 行,无 cron
auto_iterator.py 健康度默认 version='v_next4'PARAM_SPACEmax_hold_days/reentry_days/sl_atr)是旧策略家族参数,与当前温区策略(s2_panic 的 RSI/bias 阈值、hk_pe_mom 的 PE 分位/tp40%)完全对不上 strategy_evolution 最新行 2026-08-078 行,无 cron
调度 lesson_extractor / auto_iterator 均不在 hermes cron 管道 8/1、8/7 断供至今

根因:进化模块是 8 月初为 v_next4/v_weak 时代写的一次性脚本,温区自适应体系(路由+三温区策略+双市场)上线后没人回头接它。它和 health_monitor 的病是同一类——硬编码策略名,不跟随系统事实源

二、闭环设计(待批准)

每日盘后(已有)                     每周研究(新增)                    产出
┌─────────────────┐          ┌──────────────────────┐        ┌────────────────┐
│ period_rollup   │          │ evolution_engine.py  │        │ 有价值才说话:  │
│  (周期滑窗统计)  │────────►│  1. 读健康度/温区表现  │──────►│ 改进结论+证据   │
│ regime_perf     │  数据     │  2. 识别退化信号      │  结论   │ 推给老莫决策    │
│  (温区表现)      │────────►│  3. 生成参数变体      │        │ (不自动上线)    │
│ health_monitor  │          │  4. 回测验证(统一模拟) │        └────────────────┘
│  (健康度)        │          └──────────────────────┘
└─────────────────┘                     │
                                 无退化/变体不达标 → 静默

退化信号定义(触发研究的条件,宁缺毋滥)

  1. 健康度连续低:激活策略 health_score 连续 5 天 < 40(实盘显著偏离回测基线)
  2. 温区表现衰减:策略在其适应温区的近 1 年派生胜率 < 5y 胜率 × 0.8(近期失效迹象)
  3. 证伪候选:激活策略在其适应温区的温区级组合年化 < 0(防守失败)

变体生成原则(不拍脑袋)

  • 参数空间从策略定义的当前参数出发(读 hk_strategies.py / strategy_lab.py 的实际参数,不再硬编码 PARAM_SPACE
  • 每个维度 ±20% 网格,单变量扰动(一次只动一个参数,可归因)
  • 验证统一走 portfolio_sim(8 槽资金约束),验收门槛:变体在其适应温区的温区级组合年化 ≥ 原策略 + 3pp,且 max_dd 不劣化超过 2pp

产出与呈现

  • 达标变体 → 写 strategy_evolutionparent/child/change_description/promoted=0+ 推送老莫(附对比证据)
  • 老莫说"上线"才进 strategy_research + 路由候选,永不自动 promote
  • 无退化或变体全灭 → 当周静默(不制造噪音)
  • dashboard 进化区:baseline 已跟随路由(9ba85733);lessons 区待 lesson_extractor 重写后复供

lesson_extractor 重写方向

  • 数据源改实盘:holding_strategies 已平仓记录(hit_tp/hit_sl+ strategy_review 的三层复盘结论
  • 不再用 LLM 逐笔分析回测 trades(旧做法既贵又假——回测交易没有"教训"可挖)
  • 频率:每周一次,跟随 evolution_engine 同跑

三、实施清单(批准后执行)

  1. evolution/evolution_engine.py 新建(退化检测 + 变体生成 + 统一回测验证)
  2. evolution/lesson_extractor.py 重写(实盘平仓 + 复盘结论驱动)
  3. auto_iterator.py 归档(参数空间硬编码,被 evolution_engine 取代)
  4. hermes cronevolution_engine 每周六 22:00(策略评估 21:00 之后)
  5. dashboard 进化区读取验证

四、明确不做

  • 不自动上线任何变体(老莫决策权)
  • 不动 strategy_review.py(实盘单笔复盘,职责不同,运行正常)
  • 不在本重构中改温区路由逻辑