{
  "generated_at_utc": "2026-06-25T12:59:06.292538Z",
  "data_dir": "data/model_validation",
  "sources": [
    "event_core_books.csv",
    "event_burst_books.csv",
    "latest_event_core_books.csv",
    "latest_event_burst_books.csv"
  ],
  "start_utc": "",
  "end_utc": "",
  "first_row_utc": "2026-06-22T23:51:49.714718Z",
  "last_row_utc": "2026-06-25T12:00:49.205462Z",
  "rows_seen": 274250,
  "candidate_rows_seen": 118838,
  "no_future_leakage_rule": "Rows are streamed by sample_time_utc; models only see latest books/candidates observed at or before replay time.",
  "models": [
    {
      "model": "fast",
      "closed_trades": 166,
      "open_positions_left": 0,
      "wins": 113,
      "winrate_pct": 68.07228915662651,
      "entry_notional_usd": 135396.70392186535,
      "net_pnl_usd": 118.64288448079304,
      "return_on_entry_pct": 0.08762612459846837,
      "avg_pnl_usd": 0.7147161715710424,
      "skip_counts": {
        "open:entry_edge_too_low": 11748,
        "open:stock_like": 11303,
        "open:spread_too_wide": 1677,
        "open:capacity_too_small": 1309,
        "open:missing_book": 762,
        "open:stale_book": 463,
        "open:funding_abs_too_high": 233,
        "open:entry_impact_too_high": 45
      }
    },
    {
      "model": "legacy",
      "closed_trades": 219,
      "open_positions_left": 1,
      "wins": 95,
      "winrate_pct": 43.37899543378995,
      "entry_notional_usd": 231336.37570550825,
      "net_pnl_usd": -101.28197482299773,
      "return_on_entry_pct": -0.04378125770930635,
      "avg_pnl_usd": -0.46247477088126815,
      "skip_counts": {
        "close:exit_spread_too_wide": 2896,
        "open:spread_too_wide": 2352,
        "close:exit_impact_too_high": 1908,
        "open:capacity_too_small": 1430,
        "open:missing_book": 821,
        "open:stale_book": 535,
        "open:entry_edge_too_low": 84,
        "open:entry_impact_too_high": 77
      }
    }
  ]
}