Skip to content

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

2026-27

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).

See these next to the sportsbook lines, with our leans and their record, on Model leans.

02Track record

2025-26 backtest

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

MethodGamesPicked winnerBrierLog loss
This model123068.0%0.2070.603
Plain Elo123066.3%0.2120.612
Home team always123055.4%0.2480.689
This model, Dec 1 on93168.4%0.2090.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

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.

03Elo ranking

Going into 2026-27
#TeamRatingEnd of 2025-26Roster movesLast 30 daysLast game
1Spurs17061765+0.7 (+8)+8Sat, Jun 13
2Knicks17051807-2.3 (-25)+63Sat, Jun 13
3Thunder16951740+1.3 (+15)+22Sat, May 30
4Pistons16291651+1.4 (+15)-46Sun, May 17
5Celtics16011638-0.2 (-3)-32Sat, May 2
6Cavaliers15911600+1.5 (+16)-3Mon, May 25
7Raptors15891557+4.1 (+46)+16Sun, May 3
8Rockets15881583+2.3 (+26)-5Fri, May 1
9Hornets15661635-3.2 (-35)-15Fri, Apr 17
10Nuggets15621613-2.1 (-23)+17Thu, Apr 30
11Magic15571567+0.7 (+7)+70Sun, May 3
12Heat15481528+2.4 (+27)-46Tue, Apr 14
13Timberwolves15421565-0.6 (-7)+21Fri, May 15
14Suns15391527+1.7 (+19)+10Mon, Apr 27
1576ers15351544+0.2 (+2)+24Sun, May 10
16Hawks152715360.0 (-1)-37Thu, Apr 30
17Lakers15231581-3.4 (-38)-10Mon, May 11
18Trail Blazers15201520+0.4 (+5)+31Tue, Apr 28
19Clippers14721518-3.8 (-42)-28Wed, Apr 15
20Warriors14371422-0.4 (-4)-31Fri, Apr 17
21Pelicans14181404-0.9 (-10)-29Sun, Apr 12
22Mavericks13941350+0.6 (+6)-13Sun, Apr 12
23Bucks13761340-0.4 (-4)-37Sun, Apr 12
24Kings13691320+0.4 (+4)+13Sun, Apr 12
25Pacers13691328-0.1 (-2)+48Sun, Apr 12
26Bulls13691336-0.7 (-8)-37Sun, Apr 12
27Jazz13601281+2.1 (+24)-38Sun, Apr 12
28Grizzlies13531272+2.1 (+24)-100Sun, Apr 12
29Nets13491257+2.8 (+31)-71Sun, Apr 12
30Wizards12861214+0.1 (+1)-63Sun, 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.