warmup 修复后重跑 Optuna study + 重生所有产物

- 重跑 500 trials Optuna study (warmup 修复版)
- 新 finalist 集合: #1 trial #491 / #2 trial #297 / #3 trial #492
- finalist #1 IS net $263k (vs 旧 $29k, warmup 修复后搜索空间扩大)
- 重生 finalists JSON / features parquet / dashboard HTML
- 三个独立 registry 条目 (f1_t491 / f2_t297 / f3_t492)
- registry 文件名含 finalist index + trial number 避免覆盖
- registry 状态: "已记录 (无 MT5 验证)" - 待 Phase 7 MT5 验证
- 删除旧 registry 条目 (trial #324 已被新 study 取代)
This commit is contained in:
2026-06-27 00:49:47 +08:00
parent 63a829cc46
commit e99c14e907
13 changed files with 3290 additions and 3138 deletions
+19 -9
View File
@@ -502,19 +502,27 @@ def build_registry_markdown(
limitations = build_known_limitations(f)
today = datetime.now().strftime("%Y-%m-%d")
approval_status = (
"已批准(含已记录的已知差距)"
if is_metrics is not None
else "已记录(无 MT5 验证)"
)
if is_metrics is not None:
approval_status = "已批准(含已记录的已知差距)"
approval_basis = (
"信号层对齐已验证(trades PASS,首笔交易时间戳精确匹配)。"
"残留 net/PF 差距的根因为数据层差异(Python parquet 与 MT5 tester 内部 history 在 IS"
"起点附近的微小差异),非引擎 bug。"
)
else:
approval_status = "已记录(无 MT5 验证 — 待 Phase 7 MT5 验证)"
approval_basis = (
"本 finalist 来自 warmup 修复后的 Optuna study 重跑。"
"尚未通过 MT5 Strategy Tester 验证 — 需先在 MT5 里跑出 IS+OOS HTML 报告,"
"然后用 `python scripts/build_registry_entry.py --finalist {} --mt5-is-html ... --mt5-oos-html ...`"
" 重新生成本条目以补齐 MT5 指标 + 差距分析。"
).format(f["index"])
return f"""# 注册表条目 — GoldScalperPro / XAUUSD / {is_start}{oos_end}
**状态:** {approval_status} — 文档生成日期 {today}
**生成方式:** 由 `scripts/build_registry_entry.py --finalist {f['index']}` 自动生成
**批准依据:** 信号层对齐已验证(trades PASS,首笔交易时间戳精确匹配)。
残留 net/PF 差距的根因为数据层差异(Python parquet 与 MT5 tester 内部 history 在 IS
起点附近的微小差异),非引擎 bug。
**批准依据:** {approval_basis}
---
@@ -673,7 +681,9 @@ def main() -> int:
windows = f["_windows"]
is_start = windows["IS"][0].split(" ")[0]
oos_end = windows["OOS"][1].split(" ")[0]
out_name = f"gold_scalper_pro_xauusd_{is_start}_{oos_end}.md"
# Include finalist index + trial number in filename so multiple finalists
# from the same window don't overwrite each other.
out_name = f"gold_scalper_pro_xauusd_{is_start}_{oos_end}_f{f['index']}_t{f['trial_number']}.md"
out_path = REGISTRY_DIR / out_name
REGISTRY_DIR.mkdir(parents=True, exist_ok=True)