{
 "meta": {
  "league": "NSBA4 2026",
  "week": "Week 6",
  "method": "Post-Week-4 player ratings -> subject-resolved tossup-contest simulation on each team's most-recent actual lineup -> home-court category ban -> Normal margin/total. Model-only unless a live per-game moneyline is open (then blended 70/30); the conference-winner FUTURES fallback was DROPPED after the Round-3 backtest showed it hurt (model-only beat the blend on direction 83% vs 50%).",
  "line_convention": "NSBA scores are always even, so spreads sit on ODD integers and totals on .5 -> never push.",
  "home_court": "Home removes one tossup of the category that most helps it; soft softmax over bans (lambda=1, a prior until bans are observed).",
  "byes": [
   "cryo",
   "xpoes"
  ],
  "caveats": [
   "LOW CONFIDENCE. Over Weeks 2-3 the model's game-level direction was ~58% (n=12) -- barely better than a coin flip. These are a sharpened prior, not a proven edge.",
   "Each team is projected with its MOST RECENT actual lineup (who dressed last game), not the full drafted roster -- captures no-shows. A per-player availability model was built + backtested (predicts who dresses at 86%) but did NOT improve the lines (it's star-dominated; see nsba4_attendance_backtest.py), so it stays OFF. Known lineup change? set MANUAL_LINEUP and re-run.",
   "Model-only this week (no per-game moneylines open yet). The conf-winner futures blend was dropped: on Round 3 it dragged model picks toward season favorites (czz, anurag) who then lost.",
   "5 weeks of game data; ratings still lean partly on the combine+draft seed. Byes this week: cryo, xpoes (uncs).",
   "Real NSBA margins are huge (avg ~45) and hard to predict directionally, so spreads are kept modest on purpose -- widening a coin-flip just amplifies wrong picks. The gain (2.5x) only avoids pick'em.",
   "Totals are the raw model (no bump): the Weeks 2-3 over-lean reversed (Weeks 3-4 avg ~152, Week 5 went 4-2 UNDER), and the season average is 159.5, so totals now center there. They still lack matchup dispersion (all land ~158-162) -- can't yet tell a shootout from a grind."
  ]
 },
 "games": [
  {
   "away": "ChessFun",
   "home": "czz",
   "p_home": 0.434,
   "p_away": 0.566,
   "spread_home_raw": -9.2,
   "model_margin_home": -3.7,
   "total_raw": 158.3,
   "spread": {
    "favorite": "ChessFun",
    "line": -9,
    "home_line": 9
   },
   "total": 158.5,
   "likely_home_ban": "Biology",
   "market_blended": false,
   "market_source": null,
   "market": null,
   "ban_dist": {
    "Biology": 0.26,
    "Chemistry": 0.22,
    "Computer Science": 0.14,
    "Earth/Space": 0.13,
    "Math": 0.12,
    "Physics": 0.13
   }
  },
  {
   "away": "sumin",
   "home": "mingle/Yunyi",
   "p_home": 0.465,
   "p_away": 0.535,
   "spread_home_raw": -5.0,
   "model_margin_home": -2.0,
   "total_raw": 163.1,
   "spread": {
    "favorite": "sumin",
    "line": -5,
    "home_line": 5
   },
   "total": 163.5,
   "likely_home_ban": "Physics",
   "market_blended": false,
   "market_source": null,
   "market": null,
   "ban_dist": {
    "Biology": 0.19,
    "Chemistry": 0.18,
    "Computer Science": 0.12,
    "Earth/Space": 0.14,
    "Math": 0.13,
    "Physics": 0.24
   }
  },
  {
   "away": "Fez_Keyreb",
   "home": "anurag",
   "p_home": 0.51,
   "p_away": 0.49,
   "spread_home_raw": 1.4,
   "model_margin_home": 0.6,
   "total_raw": 159.7,
   "spread": {
    "favorite": "anurag",
    "line": -1,
    "home_line": -1
   },
   "total": 159.5,
   "likely_home_ban": "Physics",
   "market_blended": false,
   "market_source": null,
   "market": null,
   "ban_dist": {
    "Biology": 0.13,
    "Chemistry": 0.13,
    "Computer Science": 0.17,
    "Earth/Space": 0.16,
    "Math": 0.2,
    "Physics": 0.21
   }
  },
  {
   "away": "dan.k.memes",
   "home": "GidTheKid2",
   "p_home": 0.528,
   "p_away": 0.472,
   "spread_home_raw": 3.9,
   "model_margin_home": 1.6,
   "total_raw": 158.1,
   "spread": {
    "favorite": "GidTheKid2",
    "line": -3,
    "home_line": -3
   },
   "total": 158.5,
   "likely_home_ban": "Earth/Space",
   "market_blended": false,
   "market_source": null,
   "market": null,
   "ban_dist": {
    "Biology": 0.2,
    "Chemistry": 0.13,
    "Computer Science": 0.16,
    "Earth/Space": 0.22,
    "Math": 0.15,
    "Physics": 0.13
   }
  },
  {
   "away": "(Stitch)^2",
   "home": "James W",
   "p_home": 0.601,
   "p_away": 0.399,
   "spread_home_raw": 14.4,
   "model_margin_home": 5.8,
   "total_raw": 160.2,
   "spread": {
    "favorite": "James W",
    "line": -15,
    "home_line": -15
   },
   "total": 160.5,
   "likely_home_ban": "Physics",
   "market_blended": false,
   "market_source": null,
   "market": null,
   "ban_dist": {
    "Biology": 0.15,
    "Chemistry": 0.14,
    "Computer Science": 0.17,
    "Earth/Space": 0.16,
    "Math": 0.17,
    "Physics": 0.2
   }
  },
  {
   "away": "jonathan",
   "home": "Connor Chang",
   "p_home": 0.595,
   "p_away": 0.405,
   "spread_home_raw": 13.5,
   "model_margin_home": 5.4,
   "total_raw": 162.1,
   "spread": {
    "favorite": "Connor Chang",
    "line": -13,
    "home_line": -13
   },
   "total": 162.5,
   "likely_home_ban": "Biology",
   "market_blended": false,
   "market_source": null,
   "market": null,
   "ban_dist": {
    "Biology": 0.21,
    "Chemistry": 0.14,
    "Computer Science": 0.15,
    "Earth/Space": 0.13,
    "Math": 0.2,
    "Physics": 0.17
   }
  }
 ]
}