Files
tick-stock-panel/docs/strategy-iteration.md
shy3130 91d2268532 docs(strategy): 新增 AI 策略迭代指南
- 新增 docs/strategy-iteration.md:两阶段闭环(粗调/精调)与分层验证、迭代台账与版本快照、证据包格式、判定门槛/留出集终审/停止规则、五张提示词卡片、现有功能映射表、UI 工作台规划(显式标注未实现)
- docs/strategy.md 方式二末尾加互链
- README 完整文档表加入口行
2026-09-06 11:13:14 +08:00

8.7 KiB

AI 策略迭代指南

用 AI 承担「生成 — 诊断 — 修改」的重复劳动,回测验证与上线决策永远由人完成——与挖掘模块「候选显式发布、永不自动上线」同一纪律。

0. 适用边界(先读)

你想要的是 该用的东西
投入研究,让 AI 干代码活,自己拍板 本指南
不想研究,快速拿一个还行的策略 挖掘(自动化搜索 + 显式发布)
完全自动赚钱 不存在;本项目明确不做 AI 荐股 / 涨停预测

两条路径,同一套协议:

  • 路径 A · 面板内置 AI(零代码):选股页「AI 策略生成器」生成与修改(见 strategy.md → 方式二),人跑回测;
  • 路径 B · 本机 AI 编程助手:Trae / Codex / OpenCode / ZCode / WorkBuddy 等,用本指南的提示词卡片直接读写策略文件与台账,适合愿意碰文件的用户。

1. 迭代闭环

冷启动(只做一次): 想法 → 生成 v1 → 基线回测 → 建台账(写入门槛,封存留出集)
每轮: ① 读台账 → ② 提假设 → ③ 改动 → ④ 扫描初筛 → ⑤ 回测 + 分年
      → 拟接受才触发 → ⑥ 终审(敏感性 / 样本外 / 蒙卡) → ⑦ 判定 → ⑧ 记账 → ⑨ 停止检查

两阶段:先粗调,后精调

  • 粗调期(约 v1~v4):每轮允许一个「改动主题」,可以是一组相关的结构修改(如"给入场加市场环境过滤");
  • 精调期(v5 起):严格执行单变量,一轮只改一处;
  • 切换标志:连续一轮结构改动不再带来大幅改善,即进入精调。

分层验证:常规轮轻,终审重

  • 常规轮只跑:扫描初筛 + 核心回测 + 分年(分钟级);
  • 终审只在判定为「拟接受」时触发:参数敏感性 + 滚动样本外 + 蒙卡回撤;被回退的轮次不必烧终审。

2. 迭代台账(记忆)

文件布局

data/strategies/custom/my_strategy.py            ← 当前生效版本(最新基线,引擎自动发现)
data/strategies/custom/.iterations/my_strategy/
  ├── LEDGER.md                                   ← 台账主文件
  ├── v1.py  v2.py ...                            ← 版本快照
  └── evidence/                                   ← 每轮证据包(可选留存)

引擎只扫描 custom/ 顶层*.py(下划线前缀跳过),.iterations/ 子目录不会被当成策略加载,快照再多也不污染策略列表。

台账首页(冷启动时写)

# my_strategy 迭代台账
- 思路: 破板次日低吸,博修复
- 区间: 2022-01-01 ~ 2026-06-30(最后 20% 为留出集,封存不用)
- 判定门槛: 全区间夏普 ≥ 基线+0.2 且 分年最差>0 且 样本外降幅<10% 且 命中数变化<50%
- 回退线: 样本外夏普降幅>20% 或 胜率<45% 或 敏感性陡变(±20% 扰动指标波动>30%)
- 基线(v1): 夏普 __ / 回撤 __ / 胜率 __ / 命中 __
- 待试清单: ① 止损 -0.05→-0.07 ② 过滤一字板 ③ 持有 5→10 日

每轮追加一节

## R3 · 2026-09-06(粗调)
- 假设: 破板次日胜率低源于未过滤一字板 → basic_filter 增加非一字板条件
- 改动: v2.py L47(+1 行);预期: 胜率↑,命中数↓
- 证据: 夏普 1.31→1.58 | 分年最差 0.42→0.71 | 样本外 1.12→1.35 | 命中 87→63
- 判定: ✅ 接受,快照 v3.py
- 负知识: 一字板过滤的贡献主要来自 2024 段,2022 段几乎无变化
- 下一步: 待试清单 ③

负知识(什么没用、为什么)是台账里最值钱的部分——它让 AI 和你都不再走回头路。

3. 证据包(喂给 AI 的输入)

诊断质量取决于输入质量。用固定格式组装(回测结果页导出概要 + 验证 / 归因页关键数字):

策略: my_strategy @ v3 | 区间: 2022-01~2026-06(留出集未用)
基线(v2): 夏普 1.31 / 回撤 -18.2% / 胜率 48% / 盈亏比 1.9 / 命中 87
本轮(v3): 夏普 1.58 / 回撤 -15.1% / 胜率 52% / 盈亏比 2.1 / 命中 63
分年夏普: 22:0.31 23:1.02 24:1.87 25:1.66 26YTD:1.43
参数敏感: 止损±20% 内夏普波动 ±0.4(陡) | 持有天数平缓
样本外(滚动): 1.35 / 0.98 / 1.12
因子归因: momentum_20d 胜1.02/败0.87 | turnover 胜2.1%/败3.4%(拖后腿)

AI 诊断纪律:先逐条复述证据 → 问题按证据强度排序 → 禁止引用证据里没有的现象 → 每个问题对应一处最小修改与预期指标。AI 的诊断是参考意见,不进判定链;判定链 = 门槛自动对照 → 人拍板。

4. 门槛 · 留出集 · 停止规则

  • 门槛先于结果写下(冷启动时进台账),防止看完结果找理由;数字是示例,可自定,关键是提前锁定;
  • 留出集终审:迭代开始即封存最后 20% 区间,任何一轮都不许用;定型版本只在留出集上跑一次,通过才可进监控——这是对"多轮挑最优"多重检验的最终防线;
  • 停止规则:连续 2 轮无改善,或达成预设目标,或满 8 轮强制复盘。

5. 版本快照与回退

  • 每次「接受」:当前文件复制为 v{n}.py 快照,台账记版本号;
  • 回退 = 把快照复制回当前文件(一行命令),台账追加回退原因;
  • A/B 对比:旧版本参数存入回测页「候选」,新版本一键载入复测,同区间并排看。

6. 提示词卡片(路径 B)

五张卡片,每次发送时末尾都追加纪律卡

① 冷启动卡

阅读 backend/app/strategy/prompts/strategy-guide.md,按规范在 data/strategies/custom/
新建策略文件,思路:____。随后在 data/strategies/custom/.iterations/<策略名>/ 建立
LEDGER.md,写入:思路、回测区间(封存最后 20% 为留出集)、判定门槛、v1 基线指标(我提供)、
待试清单 3~5 条。铁律:只生成这一个 .py,只 import polars as pl,
不改 backend/frontend/docs 的任何现有文件。

② 迭代卡(每轮开头)

读 LEDGER.md 最后一轮 + 我贴的证据包,按「假设 → 改动 → 预期影响指标」格式输出本轮提案。
粗调期允许一个改动主题;精调期只许改一处。末尾更新待试清单。

③ 诊断卡

只消费我贴的证据包,输出问题清单(按证据强度排序)与每条对应的最小修改建议。
不执行修改,不引用证据之外的现象。

④ 复盘卡(停止时)

通读台账,汇总全部负知识,给出「定型 / 换方向 / 废弃」建议及理由。
若换方向,用一句话给出衍生新策略的思路。

⑤ 纪律卡(任意卡片末尾追加)

纪律:一次只改一个主题(精调期一处);不顺手重构;不虚报指标;
样本外只用于判定,不用于调参;所有新想法先进待试清单。

7. 与现有功能的映射(全部已实现)

协议步骤 面板位置
生成 / 修改策略 选股页 · AI 策略生成器 / 自定义编写
扫描初筛 选股页 · 策略卡片扫描(命中数 / 分布)
回测 + 分年 回测页 · 策略回测(结果导出概要 CSV)
终审 回测页 · 验证(参数敏感性 / 滚动样本外)
因子归因 回测页 · 因子归因 tab(评分策略)
A/B 对比 回测页 · 候选方案 · 一键载入复测
上线检验 监控中心 · 策略触发器

8. 迭代完成后的产出

会有,而且有三层:

  1. 定型版策略(最重要):就是 data/strategies/custom/ 里那个策略文件的最终版——同一个策略 ID 的演进结果,引擎自动发现,选股扫描、回测、监控中心立即可用。迭代的本质是"让这个 ID 变得更好",不是生成一堆新 ID;
  2. 快照链 + 台账:.iterations/ 完整保留每版快照与判定记录,随时回退、随时追溯"这个策略为什么长这样";快照不参与策略发现,不会污染策略列表;
  3. 衍生新策略(可选):复盘判定「换方向」时,新思路作为一个**新策略文件(新 ID)**开启新一轮冷启动,新台账首页记一行血缘(如 衍生自 my_strategy@v3),旧策略与旧台账原地保留。

上线路径:留出集终审通过 → 监控中心配置该策略触发器 → 盘中实时检验,触发记录持久化。

9. UI 工作台(未实现,路线图项)

⚠️ 以下为规划,当前版本不存在这些页面与按钮,请勿在面板中寻找。

规划中的「迭代工作台」:策略卡片新增「AI 迭代」入口,进入三栏界面——左侧轮次时间线(每轮假设/diff/证据/判定)、中部指标对比表 + 门槛对照 + 版本 diff、右侧 AI 提案面板(结构化提案,人点「采纳」才落盘);回测结果页新增「生成证据包」按钮。分期:M1 只读骨架(时间线 / diff / 回退)→ M2 闭环(证据包 / 提案 / 采纳落盘)→ M3 门槛自动对照。建设前应先用本文档协议手动跑通若干策略,验证真实需求。