How Hardwood Court IQ works
Hardwood Court IQ starts from the same proven foundation as KenPom and Bart Torvik — tempo-free, opponent-adjusted efficiency — then adds four things neither of them does.
1 · Opponent-adjusted efficiency
Every game is measured in points per 100 possessions, then adjusted for the strength of the opponent faced. We solve offense and defense jointly by iterative adjustment with ridge shrinkage toward the league mean — so a team that has played only a few games (or a lopsided schedule) is pulled sensibly toward average instead of ranking on noise.
2 · A margin of error on every rating new
We resample the season (a cluster bootstrap over games) and recompute the ratings dozens of times. The spread of those runs becomes a standard error on each team's rating — the little whisker next to the number. It flows all the way through to predictions, so a win probability reads “72% (65–78%)”: the point estimate and how sure we are. Nobody else shows this.
3 · Smooth recency, not hard cliffs new
Recent form matters more. Rather than a hard 40-/80-day step-down, Hardwood Court IQ weights games with a smooth exponential decay (≈8-week time constant), so a team rounding into form registers gracefully instead of in jumps. Garbage-time blowouts are discounted, too.
4 · Injury-aware ratings new
The one both KenPom and Torvik famously miss. Hardwood Court IQ allocates each team's rating across its roster — every player gets an on-court value and a value above replacement — anchored so the minutes-weighted average reproduces the team's rating exactly. Mark a player out and the team's minutes redistribute across the remaining rotation (with a replacement-level floor), so the rating hit reflects both the player's value and the depth behind them. The change flows straight through the whole model — every affected game's win probability and the season Monte Carlo, so ruling out a star visibly moves that team's projected record, conference race, and title odds.
5 · Predictions & projections
A game's predicted margin comes from both teams' offense, defense and tempo plus home court; it maps to a win probability through a calibrated scoring-margin distribution. We then run 2,000 Monte Carlo simulations of the rest of the season to project records, conference races, and tournament odds.
Where the data comes from
Games, box scores, and rosters come from the College Basketball Data API. It's a REST API, so Hardwood Court IQ polls it every 10 minutes on a rolling window (3 days back, 2 forward) rather than waiting on a push feed. Each poll upserts what changed and checks whether any game newly went final — and only then does it recompute ratings, predictions and player values. A quiet poll costs one request and nothing else, so a full slate of results is reflected within about ten minutes of the final buzzer.
The badge in the header shows how fresh the data is — live games land within about ten minutes of the final buzzer.
Model constants (this season, learned from the data)
The IQ Score
Our headline rating maps adjusted net efficiency onto a 1–1000 scale through a normal curve: 500 is a perfectly average Division I team, and 1000 is a perfect team — an asymptote nobody reaches. A typical season's best team lands in the low 900s, a 950 is a once-a-decade juggernaut (2007-08 Kansas rates 953, the best of our two decades of data), and the 960s are reserved for history. The scale is absolute, so scores compare honestly across eras. The underlying net rating (points per 100 possessions above average, opponent-adjusted) is shown alongside for the efficiency-minded.
Named tiers mark the notable ends of the scale: 👑 Legendary (950+) · ⚡ Juggernaut (900+) · 🏆 Contender (850+) · 🔥 Dangerous (800+) — and at the other end, 🕳️ Cellar Dweller (<250) · 🗑️ Complete Stinker (<150) · 💀 Historically Inept (<100). Everything between is just college basketball.
Game data comes from the College Basketball Data API — twenty seasons of it, refreshed every ten minutes in season — and the engine above is the only thing that ever touches it.