The short version

Sage is a ratings model. It watches the results of every game in 24 leagues, gives each team a rating, and uses those ratings to project the next game. It produces two numbers you can see on our basketball predictions page: a win chance and a projected score.

It is deliberately simple, and it knows nothing but results. No injury reports, no line-ups, no travel schedules. That is a real limit, and we would rather you knew about it than found out the hard way.

This post covers how the numbers are made, how they did on games the model had never seen, and how to use them without expecting more than they can give.

How the ratings work

Every team carries a rating built from its past scores. After each game the rating moves, up if the team beat what the model expected and down if it fell short. Recent games therefore count for more than old ones, and a team that changes over a season gets picked up as the results arrive.

Three other things are tracked for each league, because leagues are not alike:

When a new season starts, 70% of a team's rating carries over. Rosters change and so does form, so old ratings are pulled partway back to the middle rather than trusted in full. It also means October chances lean on last season, and they sharpen as games are played.

From ratings to a prediction

For any game, the model takes both teams' ratings and home court, then projects a score for each side.

The gap between those scores is the projected margin. Comparing that margin with the league's usual spread of results gives the win chance. A six-point favourite in a league where results vary widely has a smaller win chance than a six-point favourite in a steadier league.

We show the favourite's chance as a whole number. Anything finer would suggest a precision the model does not have.

Predictions appear up to 48 hours before tip-off and update every hour. At tip-off they freeze. Once the game ends, they settle automatically on the final score, overtime included. Postponed or cancelled games are not counted.

Here is what that looks like right now, with today's free predictions:

Updated Friday 30 October. Times are UK time. 55 of the 101 games in the next 36 hours are free. Pro opens the rest, plus over/under and handicap reads.

Tip-offGameSage favoursWin chanceProjected score
Fri 17:30Anadolu Efes v Panathinaikos
Euroleague
Panathinaikos60%81 – 84
Fri 18:00Zalgiris Kaunas v Partizan Mozzart Bet
Euroleague
Zalgiris Kaunas70%86 – 80
Fri 19:00Lyon-Villeurbanne v Baskonia
Euroleague
Lyon-Villeurbanne63%91 – 87
Fri 19:00Den Bosch v Mechelen
BNXT League
Den Bosch65%83 – 77
Fri 19:15Olympiacos v Olimpia Milano
Euroleague
Olympiacos91%95 – 80
Fri 19:30Brussels Basketball v Spirou Charleroi
BNXT League
Brussels Basketball68%82 – 75
Fri 23:30Boston Celtics v Chicago Bulls
NBA
Boston Celtics84%125 – 109
Fri 23:30Toronto Raptors v Orlando Magic
NBA
Toronto Raptors68%116 – 108
Fri 23:30Brooklyn Nets v Detroit Pistons
NBA
Detroit Pistons76%105 – 116
Sat 00:00Minnesota Timberwolves v Los Angeles Clippers
NBA
Minnesota Timberwolves64%115 – 109
Sat 00:00Dallas Mavericks v Houston Rockets
NBA
Houston Rockets69%110 – 118
Sat 16:00Cedevita Olimpija v FMP Beograd
ABA League
Cedevita Olimpija74%87 – 80
Sat 18:00Buducnost v Borac Mozzart
ABA League
Buducnost84%91 – 79
Sat 19:00Utah Jazz v Portland Trail Blazers
NBA
Portland Trail Blazers64%113 – 119

Chances, not promises. The model does not know injuries, rest or line-ups.

How we tested it

A model can look brilliant on games it has already seen, so we split the data. We ran it through 33,385 finished games across all 24 core leagues, in date order, so it only ever knew what had happened before each game. Settings were tuned on games before July 2025. The 9,440 games after that were kept back as the test.

Here is how the home team's win chance compared with what actually happened in those test games:

Sage said Games Average chance Home team won
20-30% 557 25.5% 27.1%
30-40% 952 35.3% 33.9%
40-50% 1,486 45.2% 46.4%
50-60% 1,876 55.2% 57.4%
60-70% 1,768 64.8% 65.6%
70-80% 1,349 74.7% 74.3%
80-90% 823 84.3% 86.4%
90-100% 298 93.7% 94.6%

The two right-hand columns track each other closely, within about two points in every band. When Sage said 75%, the team won about 75% of the time. That property is called calibration, and it is what you want from a chance.

We also scored it against a plain baseline that simply used each league's home-win rate. Sage's Brier score, where lower is better, was 0.206 against 0.244, and it beat the baseline in every one of the 24 leagues. Its typical miss on the margin was 10.7 points.

Where the numbers are weaker

Being honest about this is the point of publishing it.

What the model cannot see

This is the big one. The feed we use has no injury reports and no line-ups, so:

A number that ignores all this can still be well calibrated across thousands of games, because team news tends to even out. It can be badly wrong on one particular night. Always check team news. Bookmakers already have.

We also have not yet compared the model with bookmaker prices, because we only began capturing odds on 29 October 2026. We will run that test once a few hundred NBA games have prices stored. Until then we make no claim that these chances beat the market, and neither should you.

How to use the numbers

  1. Start with the win chance. It answers one question: who is likelier to win?
  2. Check team news. The model cannot.
  3. Compare with the market. Each game page shows the best prices we hold.
  4. Respect the close game. Even a 70% favourite should lose about three times in ten. In the EuroLeague, 32% of games finish within five points.
  5. Keep stakes flat. Our flat staking vs Kelly post shows why.

Every call is on the record

Testing on past games is only half of it. Since 30 October 2026, every published prediction has been settled and counted on the public basketball record, right or wrong, split by confidence band. Early numbers will swing, so judge them once there are a few hundred games.

The strongest half of each day's games is free, with win chance and projected score. Pro opens the rest, plus over/under and handicap reads, on the same subscription as football.

Frequently asked questions

Is Sage a machine learning model? It is a statistical ratings model. It learns from results by updating team ratings, and we prefer to describe it plainly.

Does it use bookmaker odds? No. Win chances come from results only, so they stay an independent view. Odds are captured separately so they can be shown beside the model.

Why did a 90% favourite lose? Because 90% is not 100%. In the test, teams rated 90-100% lost about one game in twenty. See the record page to check how each band is doing.

Which leagues are covered? Twenty-four, including the NBA, EuroLeague, EuroCup, Basketball Champions League, ACB, Lega A, BBL and LNB.

Predictions are chances, not promises. Only bet what you can afford to lose. 18+. BeGambleAware.org.