param-space slots:
  sma_cross.fast.length : I64
  sma_cross.slow.length : I64
  exposure.scale : F64

axis 3: walk-forward produced 5 windows
  window 0: is=[1420070400000..1430438399999] oos=[1430438400000..1433030399999] chosen { sma_cross.fast.length=5, sma_cross.slow.length=20, exposure.scale=1.00 } oos_pips=-0.7245
  window 1: is=[1422662400000..1433030399999] oos=[1433030400000..1435622399999] chosen { sma_cross.fast.length=5, sma_cross.slow.length=20, exposure.scale=1.00 } oos_pips=-0.5109
  window 2: is=[1425254400000..1435622399999] oos=[1435622400000..1438214399999] chosen { sma_cross.fast.length=5, sma_cross.slow.length=20, exposure.scale=1.00 } oos_pips=-0.6869
  window 3: is=[1427846400000..1438214399999] oos=[1438214400000..1440806399999] chosen { sma_cross.fast.length=5, sma_cross.slow.length=20, exposure.scale=1.00 } oos_pips=-0.2823
  window 4: is=[1430438400000..1440806399999] oos=[1440806400000..1443398399999] chosen { sma_cross.fast.length=5, sma_cross.slow.length=50, exposure.scale=1.00 } oos_pips=-0.0838

stitched OOS curve: 145200 points, final cumulative = -2.2884

lineage: family eurusd-wfo-0 kind=WalkForward members=5 (one OOS report per window)

OK: real-data walk-forward -> per-window grid-optimize -> stitched OOS -> lineage.
