Files
tick-stock-panel/backend/app/backtest
im47cn 586d9a4699 feat(walkforward): 真·walk-forward 优化后端 — 滚动窗口 IS 优化 + OOS 验证
PR2b 后端 (叠在 PR2a 优化器上):

app/backtest/walkforward.py:
- generate_folds: 滚动窗口切分 (训练固定长度 + 紧邻测试窗口 + step 前移),
  测试超出 end 即停; 放不下一折抛错; 非正窗口拒绝。
- aggregate_oos: 从各折 OOS 结果聚合 — 复利净值曲线 / IS-vs-OOS 退化
  (样本内目标均值 - 样本外目标均值, 正值=过拟合信号) / 一致性 (OOS 目标为正的折占比)。
- WalkForwardService.run: 每折在训练区间调 PR2a 优化器选最优参数, 再在测试区间
  用该参数做 OOS 回测。核心产出是纯 OOS 拼接 + 每折 IS/OOS 对比 — 单次样本内
  回测的过拟合一眼看穿。支持进度回调 (fold i/N) 与 cancel。

API app/api/backtest.py:
- GET /walkforward/stream (SSE, 复用 _BacktestJob + job_key 回吐) + POST
  /walkforward/cancel (按回吐 key 查表)。

测试 13 例: fold 切分 (滚动/边界/不足/非正) + OOS 聚合 (复利/退化/一致性/空) +
编排 (训练优化→测试OOS/退化上报/取消) + API (job_key 区分窗口/cancel按key)。
全量 169 测试通过。
2026-07-11 19:20:30 +08:00
..
2026-06-18 17:18:23 +08:00