{
  "status": "ok",
  "season": 2026,
  "generated_at": "2026-10-26T15:03:29.396233+00:00",
  "weeks_graded": [
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8
  ],
  "weather_weeks": [
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8
  ],
  "note": "Graded after the fact at CFBD closing numbers. These are research records of every game that met a lane's rule, not picks made before kickoff and not bets placed.",
  "lanes": [
    {
      "key": "weather_under",
      "label": "Wind unders",
      "rule": "Outdoor game, wind 10 to 15 mph, total 58 or higher: take the under.",
      "evidence": "Pre-registered 2026-08-15. Backtest 2017-2023 56.1% (n=453), holdout 2024-2025 55.7% (n=79). Half unit.",
      "gate": "2027: 30+ games; under 52.4% ends it, 54% or better keeps it.",
      "record": {
        "games": 1,
        "wins": 0,
        "losses": 1,
        "pushes": 0,
        "win_rate": 0.0,
        "units": -1.0,
        "break_even": 0.5238
      },
      "games": [
        {
          "game_id": 401860899,
          "week": 5,
          "matchup": "Oregon State at Colorado State",
          "bet": "Under 61.5",
          "line": 61.5,
          "final_total": 82.0,
          "wind_mph": 13.7,
          "humidity": 20.0,
          "temperature_f": 79.5,
          "crosswind": false,
          "result": "loss",
          "units": -1.0
        }
      ]
    },
    {
      "key": "humid_under",
      "label": "Humid unders (collection only)",
      "rule": "Outdoor game, humidity 80% or higher, total 58 or higher: take the under.",
      "evidence": "Collection cohort X4: 55.8% pooled (n=353); the holdout is driven by 2025 alone, so this is unproven. Not bet.",
      "gate": "2027: 30+ games; under 52.4% ends it, 54% or better keeps it.",
      "record": {
        "games": 5,
        "wins": 3,
        "losses": 2,
        "pushes": 0,
        "win_rate": 0.6,
        "units": 0.73,
        "break_even": 0.5238
      },
      "games": [
        {
          "game_id": 401856637,
          "week": 1,
          "matchup": "Florida Atlantic at Florida",
          "bet": "Under 59.5",
          "line": 59.5,
          "final_total": 87.0,
          "wind_mph": 0.0,
          "humidity": 85.0,
          "temperature_f": 81.0,
          "crosswind": false,
          "result": "loss",
          "units": -1.0
        },
        {
          "game_id": 401858445,
          "week": 2,
          "matchup": "Louisiana at USC",
          "bet": "Under 58.5",
          "line": 58.5,
          "final_total": 79.0,
          "wind_mph": 5.6,
          "humidity": 81.0,
          "temperature_f": 73.9,
          "crosswind": false,
          "result": "loss",
          "units": -1.0
        },
        {
          "game_id": 401856692,
          "week": 3,
          "matchup": "Kennesaw State at Tennessee",
          "bet": "Under 60.75",
          "line": 60.75,
          "final_total": 51.0,
          "wind_mph": 0.0,
          "humidity": 84.0,
          "temperature_f": 78.6,
          "crosswind": false,
          "result": "win",
          "units": 0.909
        },
        {
          "game_id": 401862771,
          "week": 3,
          "matchup": "Florida International at Florida Atlantic",
          "bet": "Under 62.25",
          "line": 62.25,
          "final_total": 26.0,
          "wind_mph": 0.0,
          "humidity": 84.0,
          "temperature_f": 82.4,
          "crosswind": false,
          "result": "win",
          "units": 0.909
        },
        {
          "game_id": 401856714,
          "week": 6,
          "matchup": "South Carolina at Florida",
          "bet": "Under 59.5",
          "line": 59.5,
          "final_total": 57.0,
          "wind_mph": 3.7,
          "humidity": 85.0,
          "temperature_f": 82.0,
          "crosswind": false,
          "result": "win",
          "units": 0.909
        }
      ]
    },
    {
      "key": "middle",
      "label": "Middles",
      "rule": "Two different books close 3+ points apart: take both sides; it pays when the final margin lands between the numbers.",
      "evidence": "Backtest: 6.27% of such games middled (n=287) against a 4.76% break-even. Depends on both numbers being available.",
      "gate": "Collection lane; half unit max.",
      "record": {
        "games": 1,
        "middles_hit": 0,
        "hit_rate": 0.0,
        "units": -0.09,
        "break_even": 0.0476
      },
      "games": [
        {
          "game_id": 401869962,
          "week": 5,
          "matchup": "Marshall at James Madison",
          "bet": "James Madison -14.5 (DraftKings) and Marshall +18 (Bovada)",
          "gap": 3.5,
          "home_margin": 28.0,
          "result": "win/loss",
          "hit": false,
          "units": -0.091
        }
      ]
    },
    {
      "key": "holdover_b5",
      "label": "Holdover fade",
      "rule": "Weeks 1-2: bet against a team that finished last season in the Elo top 10 when it plays a non-power-five opponent.",
      "evidence": "Backtest 58.7% (n=75, 6 of 7 seasons), holdout 63.6% (n=22). Thin sample. Collection only, not bet.",
      "gate": "2027: 30+ games; under 52.4% ends it, 54% or better keeps it.",
      "record": {
        "games": 8,
        "wins": 3,
        "losses": 5,
        "pushes": 0,
        "win_rate": 0.375,
        "units": -2.27,
        "break_even": 0.5238
      },
      "games": [
        {
          "game_id": 401856634,
          "week": 1,
          "matchup": "East Carolina at Alabama",
          "bet": "East Carolina +28.25 (against Alabama)",
          "line": 28.25,
          "home_margin": 38.0,
          "result": "loss",
          "units": -1.0
        },
        {
          "game_id": 401858425,
          "week": 1,
          "matchup": "North Texas at Indiana",
          "bet": "North Texas +40 (against Indiana)",
          "line": 40.0,
          "home_margin": 36.0,
          "result": "win",
          "units": 0.909
        },
        {
          "game_id": 401858432,
          "week": 1,
          "matchup": "Ball State at Ohio State",
          "bet": "Ball State +50.75 (against Ohio State)",
          "line": 50.75,
          "home_margin": 53.0,
          "result": "loss",
          "units": -1.0
        },
        {
          "game_id": 401858434,
          "week": 1,
          "matchup": "Marshall at Penn State",
          "bet": "Marshall +23.25 (against Penn State)",
          "line": 23.25,
          "home_margin": 45.0,
          "result": "loss",
          "units": -1.0
        },
        {
          "game_id": 401856673,
          "week": 2,
          "matchup": "Western Kentucky at Georgia",
          "bet": "Western Kentucky +40.25 (against Georgia)",
          "line": 40.25,
          "home_margin": 50.0,
          "result": "loss",
          "units": -1.0
        },
        {
          "game_id": 401856676,
          "week": 2,
          "matchup": "Charlotte at Ole Miss",
          "bet": "Charlotte +44.5 (against Ole Miss)",
          "line": 44.5,
          "home_margin": 32.0,
          "result": "win",
          "units": 0.909
        },
        {
          "game_id": 401858442,
          "week": 2,
          "matchup": "Penn State at Temple",
          "bet": "Temple +24.25 (against Penn State)",
          "line": 24.25,
          "home_margin": -18.0,
          "result": "win",
          "units": 0.909
        },
        {
          "game_id": 401859184,
          "week": 2,
          "matchup": "Rice at Notre Dame",
          "bet": "Rice +44.75 (against Notre Dame)",
          "line": 44.75,
          "home_margin": 52.0,
          "result": "loss",
          "units": -1.0
        }
      ]
    }
  ],
  "middle_watch": [
    {
      "game_id": 401864432,
      "week": 1,
      "matchup": "Western Kentucky at Nevada",
      "bet": "Nevada +1.5 (DraftKings) and Western Kentucky +1 (Bovada)",
      "gap": 2.5,
      "home_margin": 35.0,
      "result": "win/loss",
      "hit": false,
      "units": -0.091
    },
    {
      "game_id": 401856677,
      "week": 2,
      "matchup": "Mississippi State at Minnesota",
      "bet": "Minnesota +1.5 (DraftKings) and Mississippi State +1 (Bovada)",
      "gap": 2.5,
      "home_margin": -25.0,
      "result": "loss/win",
      "hit": false,
      "units": -0.091
    },
    {
      "game_id": 401858248,
      "week": 5,
      "matchup": "Louisville at NC State",
      "bet": "NC State +5.5 (DraftKings) and Louisville -3 (Bovada)",
      "gap": 2.5,
      "home_margin": 3.0,
      "result": "win/loss",
      "hit": false,
      "units": -0.091
    },
    {
      "game_id": 401869842,
      "week": 5,
      "matchup": "Army at Louisiana Tech",
      "bet": "Louisiana Tech +1 (Bovada) and Army +1.5 (DraftKings)",
      "gap": 2.5,
      "home_margin": 2.0,
      "result": "win/loss",
      "hit": false,
      "units": -0.091
    },
    {
      "game_id": 401858485,
      "week": 6,
      "matchup": "USC at Penn State",
      "bet": "Penn State +1.5 (DraftKings) and USC +1 (Bovada)",
      "gap": 2.5,
      "home_margin": -8.0,
      "result": "loss/win",
      "hit": false,
      "units": -0.091
    },
    {
      "game_id": 401864524,
      "week": 7,
      "matchup": "UNLV at Air Force",
      "bet": "Air Force +1 (Bovada) and UNLV +1.5 (DraftKings)",
      "gap": 2.5,
      "home_margin": 10.0,
      "result": "win/loss",
      "hit": false,
      "units": -0.091
    },
    {
      "game_id": 401860905,
      "week": 8,
      "matchup": "San Diego State at Colorado State",
      "bet": "Colorado State +1.5 (DraftKings) and San Diego State +1 (Bovada)",
      "gap": 2.5,
      "home_margin": 7.0,
      "result": "win/loss",
      "hit": false,
      "units": -0.091
    }
  ]
}
