docs: 问题3诊断+进化闭环重构设计——进化模块全面脱节(硬编码已证伪策略/无cron/读回测冒充实盘),闭环=每日统计→退化信号→变体回测→有价值才推送,不自动promote
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# 策略自我进化闭环重构(问题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-01,16 行,无 cron |
|
||||
| `auto_iterator.py` | 健康度默认 `version='v_next4'`;`PARAM_SPACE`(max_hold_days/reentry_days/sl_atr)是旧策略家族参数,与当前温区策略(s2_panic 的 RSI/bias 阈值、hk_pe_mom 的 PE 分位/tp40%)完全对不上 | `strategy_evolution` 最新行 2026-08-07,8 行,无 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_evolution`(parent/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 cron:`evolution_engine` 每周六 22:00(策略评估 21:00 之后)
|
||||
5. dashboard 进化区读取验证
|
||||
|
||||
## 四、明确不做
|
||||
- 不自动上线任何变体(老莫决策权)
|
||||
- 不动 strategy_review.py(实盘单笔复盘,职责不同,运行正常)
|
||||
- 不在本重构中改温区路由逻辑
|
||||
Reference in New Issue
Block a user