Predictions
Win probability
Pregame win chances for every game from team Elo ratings, home court and rest, tested on a full season first.
01Upcoming games
Early 2026-27: ratings are carried over from 2025-26, pulled 25% back toward average, then moved for each team's summer roster changes (see Roster moves in the Elo ranking).
Tue, Oct 20
Wed, Oct 21
Thu, Oct 22
See these next to the sportsbook lines, with our leans and their record, on Model leans.
02Track record
No 2026-27 games are final yet. Here is how the model did on 2025-26, one day at a time.
2025-26 backtest, regular season
| Method | Games | Picked winner | Brier | Log loss |
|---|---|---|---|---|
| This model | 1230 | 68.0% | 0.207 | 0.603 |
| Plain Elo | 1230 | 66.3% | 0.212 | 0.612 |
| Home team always | 1230 | 55.4% | 0.248 | 0.689 |
| This model, Dec 1 on | 931 | 68.4% | 0.209 | 0.607 |
Brier is the average squared miss: 0 is perfect and 0.25 is a coin flip. Log loss punishes confident misses harder.
Calibration, 2025-26
03Elo ranking
| # | Team | Rating | End of 2025-26 | Roster moves | Last 30 days | Last game |
|---|---|---|---|---|---|---|
| 1 | Spurs | 1706 | 1765 | +0.7 (+8) | +8 | Sat, Jun 13 |
| 2 | Knicks | 1705 | 1807 | -2.3 (-25) | +63 | Sat, Jun 13 |
| 3 | Thunder | 1695 | 1740 | +1.3 (+15) | +22 | Sat, May 30 |
| 4 | Pistons | 1629 | 1651 | +1.4 (+15) | -46 | Sun, May 17 |
| 5 | Celtics | 1601 | 1638 | -0.2 (-3) | -32 | Sat, May 2 |
| 6 | Cavaliers | 1591 | 1600 | +1.5 (+16) | -3 | Mon, May 25 |
| 7 | Raptors | 1589 | 1557 | +4.1 (+46) | +16 | Sun, May 3 |
| 8 | Rockets | 1588 | 1583 | +2.3 (+26) | -5 | Fri, May 1 |
| 9 | Hornets | 1566 | 1635 | -3.2 (-35) | -15 | Fri, Apr 17 |
| 10 | Nuggets | 1562 | 1613 | -2.1 (-23) | +17 | Thu, Apr 30 |
| 11 | Magic | 1557 | 1567 | +0.7 (+7) | +70 | Sun, May 3 |
| 12 | Heat | 1548 | 1528 | +2.4 (+27) | -46 | Tue, Apr 14 |
| 13 | Timberwolves | 1542 | 1565 | -0.6 (-7) | +21 | Fri, May 15 |
| 14 | Suns | 1539 | 1527 | +1.7 (+19) | +10 | Mon, Apr 27 |
| 15 | 76ers | 1535 | 1544 | +0.2 (+2) | +24 | Sun, May 10 |
| 16 | Hawks | 1527 | 1536 | 0.0 (-1) | -37 | Thu, Apr 30 |
| 17 | Lakers | 1523 | 1581 | -3.4 (-38) | -10 | Mon, May 11 |
| 18 | Trail Blazers | 1520 | 1520 | +0.4 (+5) | +31 | Tue, Apr 28 |
| 19 | Clippers | 1472 | 1518 | -3.8 (-42) | -28 | Wed, Apr 15 |
| 20 | Warriors | 1437 | 1422 | -0.4 (-4) | -31 | Fri, Apr 17 |
| 21 | Pelicans | 1418 | 1404 | -0.9 (-10) | -29 | Sun, Apr 12 |
| 22 | Mavericks | 1394 | 1350 | +0.6 (+6) | -13 | Sun, Apr 12 |
| 23 | Bucks | 1376 | 1340 | -0.4 (-4) | -37 | Sun, Apr 12 |
| 24 | Kings | 1369 | 1320 | +0.4 (+4) | +13 | Sun, Apr 12 |
| 25 | Pacers | 1369 | 1328 | -0.1 (-2) | +48 | Sun, Apr 12 |
| 26 | Bulls | 1369 | 1336 | -0.7 (-8) | -37 | Sun, Apr 12 |
| 27 | Jazz | 1360 | 1281 | +2.1 (+24) | -38 | Sun, Apr 12 |
| 28 | Grizzlies | 1353 | 1272 | +2.1 (+24) | -100 | Sun, Apr 12 |
| 29 | Nets | 1349 | 1257 | +2.8 (+31) | -71 | Sun, Apr 12 |
| 30 | Wizards | 1286 | 1214 | +0.1 (+1) | -63 | Sun, Apr 12 |
1500 is average. A 100 point edge is about a 64% win chance on a neutral court. Last 30 days is the change over the team's most recent 30 days of play. Roster moves: change in roster rating since last season in points per 100 possessions, with the Elo points it adds or takes away in brackets. Team pages list who came and went.
How this works
The method
Every team has an Elo rating that starts at 1500. After each final the winner takes points from the loser. How many depends on how surprising the result was and how big the margin was (the FiveThirtyEight formula, K = 20), so upsets and blowouts move ratings more. Over the summer each rating keeps 75% of its distance from 1500, because rosters change.
The win chance comes from a logistic regression on the Elo gap with home court, the difference in days of rest (0 to 3), and whether either team is on the second night of a back-to-back. The projected margin is a straight-line fit of the final margin on the Elo gap. Fitted on last season, home court is worth about 40 Elo points, so two even teams come out 57% to 43 for the home side. A home back-to-back costs about 0.24 in log odds (a few points of win chance). Rest difference and an away back-to-back barely mattered.
Summer roster moves
Before a new season, each team's carried-over rating is moved for the players it added and lost. A roster rating adds up each player's Impact rating (points per 100 possessions he adds, from last season) times his share of the floor. Expected minutes are his minutes per game last season (counted over at least 41 games, at most 36), handed out down the depth chart until the team reaches 240 minutes a game. Rookies and players who did not play last season count as replacement level (-2.0 per 100). The same method is used on each team's end-of-season roster, so the change measures only who arrived and who left. One point of roster rating was worth 1.22 points of scoring margin last season, and one point of margin is about 18 Elo points. We apply 50% of that change, capped at 150 Elo. It updates every morning until a team plays its first game, then stays fixed and results take over.
Why only 50%: we tested the idea on the Thu, Feb 5 trade deadline, fitting Impact ratings on games before it and scoring the 462 games after. The deadline moves were small (the biggest team change was 1.8 per 100), and the adjustment did not help: Brier 0.172 without it, 0.173 at half weight and 0.174 at full weight, all within noise. This summer's moves are much bigger than a deadline's, so we use half weight and will check it against the first weeks of the season.
How we tested it
We replayed 2025-26 one day at a time. For each game day the model was fit only on games played before that day, so no forecast saw its own result (until 100 games were in, it used plain Elo). On all 1230 regular season games it picked the winner 68.0% of the time, with a Brier score of 0.207 and a log loss of 0.603 (lower is better for both). Plain Elo scored 66.3%, 0.212 and 0.612. Always picking the home team was right 55.4% of the time (Brier 0.248). From December 1 on, once ratings had settled, the model was right 68.4% of the time with a Brier of 0.209. The projected margin missed the real margin by 11.5 points on average.
Play-in games and the NBA Cup final update the ratings but are left out of the test. The Cup final in Las Vegas counts as a neutral court. The coefficients were refit on all 1321 finals on Sat, Sep 26 and stay fixed until the next refit. Ratings and upcoming forecasts update every morning with the night's finals, and a forecast is frozen once its game tips off.
What it cannot see
Injuries, resting stars, trades after a team's first game and who is actually playing tonight. Apart from the summer roster moves above, it only knows final scores, dates and home court. Rookies and players returning from a season lost to injury count as replacement level until they play. Our data starts in 2025-26, so every team began that season at 1500 and the first weeks were close to guesses.