mirror of
https://ghfast.top/https://github.com/aeroxw/tick-stock-panel.git
synced 2026-09-12 21:24:16 +08:00
- 新增 docs/strategy-iteration.md:两阶段闭环(粗调/精调)与分层验证、迭代台账与版本快照、证据包格式、判定门槛/留出集终审/停止规则、五张提示词卡片、现有功能映射表、UI 工作台规划(显式标注未实现) - docs/strategy.md 方式二末尾加互链 - README 完整文档表加入口行
8.7 KiB
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. 迭代完成后的产出
会有,而且有三层:
- 定型版策略(最重要):就是
data/strategies/custom/里那个策略文件的最终版——同一个策略 ID 的演进结果,引擎自动发现,选股扫描、回测、监控中心立即可用。迭代的本质是"让这个 ID 变得更好",不是生成一堆新 ID; - 快照链 + 台账:
.iterations/完整保留每版快照与判定记录,随时回退、随时追溯"这个策略为什么长这样";快照不参与策略发现,不会污染策略列表; - 衍生新策略(可选):复盘判定「换方向」时,新思路作为一个**新策略文件(新 ID)**开启新一轮冷启动,新台账首页记一行血缘(如
衍生自 my_strategy@v3),旧策略与旧台账原地保留。
上线路径:留出集终审通过 → 监控中心配置该策略触发器 → 盘中实时检验,触发记录持久化。
9. UI 工作台(未实现,路线图项)
⚠️ 以下为规划,当前版本不存在这些页面与按钮,请勿在面板中寻找。
规划中的「迭代工作台」:策略卡片新增「AI 迭代」入口,进入三栏界面——左侧轮次时间线(每轮假设/diff/证据/判定)、中部指标对比表 + 门槛对照 + 版本 diff、右侧 AI 提案面板(结构化提案,人点「采纳」才落盘);回测结果页新增「生成证据包」按钮。分期:M1 只读骨架(时间线 / diff / 回退)→ M2 闭环(证据包 / 提案 / 采纳落盘)→ M3 门槛自动对照。建设前应先用本文档协议手动跑通若干策略,验证真实需求。