Skip to content

Accountability

Model report card

Every Courtside model graded in public against a simple baseline, with its biggest misses and a log of forecasts made before tip-off.

At a glance

Graded Oct 15, 7:20 AM EDT
  • Win probability0.207Brier score (lower is better)1,230 games, 2025-26 backtestStrong 16.6% better than baseline
  • Live win probabilityComing soon: not graded yetBuilt. Grades start once its forecasts have finished games.
  • Player projectionsComing soon: not graded yetBuilt. Grades start once its forecasts have finished games.
  • Season simulatorComing soon: not graded yetPreseason projections are logged. Grading starts after opening night.
  • Shot quality0.644AUC on held-out games (higher is better)43,788 shots, 2025-26Solid 1.9% better than baseline
  • Is it real?1.99Points per game missed after 10 games (MAE)224 players, 2025-26Solid 9.9% better than baseline
  • Impact ratings63.3Cross-validated error per 100 possessions36,423 stints, 2025-26Even 0.3% better than baseline

Each tile shows the headline error, how many forecasts it covers, and how it compares with the simple baseline for that model. How grading works ยท Forecast log

01Win probability

2025-26 backtest

No 2026-27 games are final yet, so the live grade starts on opening night. Until then, this is the model's 2025-26 backtest, replayed one day at a time so no forecast saw its own result.

2025-26 backtest, regular season

ForecastGamesPicked winnerBrierLog loss
This model1,23068.0%0.2070.603
Plain Elo1,23066.3%0.2120.612
Home team always1,23055.4%0.2480.689
This model, Dec 1 on93168.4%0.2090.607

Brier score by forecast, on one scale starting at zero. Shorter is better.

Calibration, 2025-26 backtest

0%0%25%25%50%50%75%75%100%100%Forecasts of 0 to 10%: 24 games, average forecast 8%, home team won 21%24Forecasts of 10 to 20%: 58 games, average forecast 15%, home team won 12%58Forecasts of 20 to 30%: 90 games, average forecast 25%, home team won 28%90Forecasts of 30 to 40%: 129 games, average forecast 35%, home team won 37%129Forecasts of 40 to 50%: 159 games, average forecast 45%, home team won 43%159Forecasts of 50 to 60%: 180 games, average forecast 55%, home team won 59%180Forecasts of 60 to 70%: 249 games, average forecast 65%, home team won 60%249Forecasts of 70 to 80%: 155 games, average forecast 75%, home team won 72%155Forecasts of 80 to 90%: 125 games, average forecast 84%, home team won 84%125Forecasts of 90 to 100%: 61 games, average forecast 94%, home team won 90%61Predicted home win chanceHome team actually won
Each dot is a 10% bucket of forecasts, and the number above it is how many games fell in it. Dots on the dashed line mean the percentages meant what they said.

Upcoming forecasts and how the model works

02Biggest misses

2025-26 backtest

The 10 finals where the winner had the lowest pregame chance. The last column is a simple rule, not a judgment: any player who averaged 25 or more minutes over his team's previous 5 games (playing at least 3 of them) and did not play. The model never sees who is playing, so those misses were hard to see coming.

DateGameWinner's pregame chanceFinalDid not play
Sat, Nov 22SAC at DENSAC 2.6%SAC 128, DEN 123Aaron Gordon (DEN, 25.5 min); Domantas Sabonis (SAC, 33.7 min)
Mon, Dec 1HOU at UTAUTA 3.6%HOU 125, UTA 133No rotation player out
Mon, Dec 1DAL at DENDAL 4.1%DAL 131, DEN 121P.J. Washington (DAL, 34.5 min)
Fri, Nov 21BKN at BOSBKN 6.1%BKN 113, BOS 105No rotation player out
Tue, Nov 25ATL at WASWAS 6.3%ATL 113, WAS 132KyShawn George (WAS, 34.0 min)
Sat, Mar 7BKN at DETBKN 7.3%BKN 107, DET 105Cade Cunningham (DET, 38.0 min)
Fri, Jan 23IND at OKCIND 7.3%IND 117, OKC 114Ajay Mitchell (OKC, 26.2 min); Aaron Wiggins (OKC, 25.8 min); Jalen Williams (OKC, 25.3 min)
Sat, Nov 29TOR at CHACHA 7.5%TOR 111, CHA 118RJ Barrett (TOR, 27.7 min)
Sat, Dec 6SAC at MIASAC 8.7%SAC 127, MIA 111Tyler Herro (MIA, 31.5 min); Davion Mitchell (MIA, 30.0 min)
Sat, Dec 6HOU at DALDAL 8.8%HOU 109, DAL 122Alperen Sengun (HOU, 32.8 min)

8 of 10 had a rotation player out.

03Live win probability

Coming soon: not graded yet

Built. Grades start once its forecasts have finished games.

Its own published test: Brier, test model 0.150, Accuracy, test model 0.779, Log loss, test model 0.453. Those numbers come from a replay of past games; the grades here only count forecasts made before the games were played.

04Player projections

Coming soon: not graded yet

Built. Grades start once its forecasts have finished games.

05Season simulator

2026-27
Coming soon: not graded yet

Preseason projections are logged. Grading starts after opening night.

All 30 preseason projections
TeamProjected winsRecordPace
Spurs65.30-0n/a
Thunder64.30-0n/a
Knicks64.10-0n/a
Pistons56.30-0n/a
Celtics53.20-0n/a
Cavaliers52.20-0n/a
Rockets52.20-0n/a
Raptors51.10-0n/a
Hornets49.00-0n/a
Nuggets48.60-0n/a
Magic48.30-0n/a
Heat47.10-0n/a
Suns46.60-0n/a
Timberwolves45.70-0n/a
76ers44.90-0n/a
Hawks43.80-0n/a
Lakers43.40-0n/a
Trail Blazers43.10-0n/a
Clippers37.20-0n/a
Warriors33.20-0n/a
Pelicans30.40-0n/a
Mavericks27.30-0n/a
Bucks25.30-0n/a
Pacers24.70-0n/a
Kings24.70-0n/a
Bulls24.30-0n/a
Jazz23.10-0n/a
Grizzlies22.60-0n/a
Nets21.80-0n/a
Wizards16.10-0n/a

06Shot quality

2025-26, held-out games

Expected make chance for every shot, tested on 43,788 shots from 246 games the model never trained on. It ranks makes above misses with an AUC of 0.644 against 0.632 for a zone-only lookup (0.5 is a coin flip, 1 is perfect), and its log loss is 0.653 against 0.659 for zones and 0.692 for one league-wide rate.

Log loss, lower is better

0%0%25%25%50%50%75%75%100%100%4,071 forecasts, average 33%, happened 32%3,336 forecasts, average 35%, happened 36%3,123 forecasts, average 36%, happened 37%6,971 forecasts, average 38%, happened 38%4,391 forecasts, average 41%, happened 42%4,375 forecasts, average 43%, happened 44%4,251 forecasts, average 46%, happened 45%4,334 forecasts, average 57%, happened 56%4,029 forecasts, average 65%, happened 65%4,907 forecasts, average 74%, happened 75%Expected make chanceShots actually made
Each dot is a tenth of the held-out shots. On the dashed line, a 40% shot went in 40% of the time.

Shot quality page

07Is it real?

2025-26 backtest
StatPlayersMissed by, raw 10-game numberMissed by, our blended numberGrade
Points per game2242.211.99Solid
True shooting2245.8%3.8%Strong
3-point %2017.4%4.6%Strong
Free throw %1989.7%5.9%Strong

Predicting the rest of the season from a 10-game stretch: the raw stretch against our number that blends it with the player's earlier games by how fast the stat stabilizes. Lower misses are better.

Is it real? page

08Impact ratings

2025-26, cross-validated

Impact ratings (RAPM) predict the scoring margin of 36,423 lineup stints from who is on the floor. On games held out of the fit, the error is 63.29 points per 100 possessions against 63.49 for assuming every lineup is average: 0.32% better. That is small because single stints are mostly noise. The useful signal is in the player ratings, which line up with plain on/off numbers at r = 0.81.

Impact ratings page

09Forecast log

Last 50 entries

Every forecast is written to the log when it is made, with a timestamp, and the log cannot be edited. Once a game tips off, its forecast is frozen.

Show the forecast log

How this works: how grading works

The scores

A Brier score is the average squared miss of a percentage. Say the model gives a team 70% and it wins: the miss is 0.3, squared 0.09. If it loses, the miss is 0.7, squared 0.49. Averaged over every game, 0 is perfect and 0.25 is what you get by calling every game 50/50. Log loss is similar but punishes confident misses much harder: a 95% favorite losing costs about 3.0, a 60% favorite losing about 0.9. For projections we use the average miss in points, rebounds or wins (mean absolute error), and for the shot model the AUC, the chance it rates a random make above a random miss.

Why every grade has a baseline

A Brier of 0.21 means little on its own, so each model is compared with the obvious guess: the home team at its usual win rate for win probability, the pregame number held all game for live win probability, the player's season average for projections, 41 wins for every team for the simulator, a zone-only lookup for shot quality, the raw stretch for Is it real?, and an average lineup for Impact ratings. The grade word comes from how much smaller the model's error is: Strong at 10% or more, Solid at 3% or more, Even within 3% either way, Behind otherwise (for AUC, where gains are smaller: 3% and 1%). Example: in the 2025-26 backtest, win probability scored 0.207 against 0.248 for always taking the home team, a 16.6% smaller error, so it grades Strong.

Logged before tip-off, never edited

Every time a game forecast moves, the new number goes into the forecast log with a timestamp. The log only accepts new rows: the database rejects any edit or delete. Once a game tips off, the stored forecast is frozen too, and live grades use the last forecast logged before tip-off. Player projections and simulator runs are logged the same way each morning once those models are running.

Where the numbers come from

Until 2026-27 has finals, the win probability grade is the 2025-26 backtest: each day's games were forecast using only games played before that day. The summary tile switches to the new season after 50 finals, because a few opening-week games say little. Shot quality, Is it real? and Impact ratings are graded on data held out of their fits, as each page explains. The biggest misses list uses the stored forecast for each final. Grades for the live chart, projections and the simulator are recomputed early every morning, and switch to 2026-27 on their own once games are final.

What we do not grade yet

Playoff and play-in games, the projected margin, player tiers, similar players and lineup numbers. The misses context is a rule (a regular who did not play), not a reason: it cannot see foul trouble, minutes limits, garbage time or a hot shooting night. One season of backtest is a small sample, so a grade can move a step with a few dozen games.