Resolve Research
Resolve Projections ncaa · cbb
d1 men's basketball

NCAA men's basketball — Bayesian projection rebuild

D1 men's hoops projections built on a hierarchical NB2 with per-(position × experience) quadratic — the same architecture that drives the NBA player projections, ported to the NCAA experience axis (Fr/So/Jr/Sr) since DOB isn't available in any college source.

Substrate covers 344,319 player-games across 8,417 players and 18,752 games. Smoke validation hit r = 0.972 empirical-vs-posterior at ≥1,500 minutes (n=1,748) and correctly identified Zach Edey, Cooper Flagg, Antoine Davis, Drew Timme, Adama Sanogo, et al. as the top tier by posterior mean.

model hierarchical_exp_quadratic_v1 · likelihood NB2 vectorized · levels league → position → player · chains 4 × 1000/1000

Pipeline status

phase 2 grid running
Phase 2 fit grid in progress. Production posteriors land sport-by-stat as the grid completes. Per-player projection function (Phase 3), team rollup (Phase 5), game model (Phase 6), walk-forward backtest (Phase 7), and the live tables on this page (Phase 8) all queue behind the fit grid. Player projections, conference standings, and the NCAA Tournament bracket all wire in once the Bayesian skill posteriors land.

Methodology

how it works

Why this isn't 538-style team Elo: a Bayesian per-player pipeline lets us combine prior strength, per-position aging, and live in-season updates the way the NBA stack does. The pipeline below is the spec being built; subscribe to the changelog in the parent NCAA hub for ship updates.

What's in the model

  • 3-level hierarchy: league → position (G/F/C) → player, with non-centered parameterization on the position and player offsets for clean mixing.
  • Per-position quadratic: log_rate = mu_player + beta_exp_pos[k]·(exp - 1.5) - gamma_pos[k]·(exp - peak_exp_pos[k])². Each position carries its own peak experience and curvature; peak_exp_pos ~ N(2.5, 0.7) centers on a Jr/Sr peak.
  • Substrate aggregation: per-(player, season) rather than per-game — 26× faster than per-game with the same per-36 estimands, matches the empirical curve unit.
  • Context features (Phase 4, ready): per-(athlete, season) z-scored pace, team quality, mates' usage, and gravity. v2 folds these into Stan; v1 ships first.

What's not in v1

  • No per-player experience tilt (sigma_exp_player not identifiable with NCAA's 1.7-season average career window). WNBA makes the same call.
  • No per-row recency weighting yet (deferred to v2 along with the live in-season blend).