Finnish basketball predictions
Win chances for every men's Korisliiga, I divisioona and southern II divisioona game, from team ratings that update after each result. A side project next to the NBA model, built on the federation's own results.
Pre-gamepredicted before the game and storedBacktestscored afterwards, on games the model was not trained on
Python, pandas, Fly.io. Updated every morning around 11:00. The ratings learn from results only; rosters are not used yet.
Games
next three weeks
Loading the Finnish fixtures.
Pre-game or backtest
what each number is
A pre-game number comes from predictions stored before each game. A backtest scores the model afterwards on games it was not tuned on. Pre-game logging started on 16 October 2026, so most of the record is still a backtest.
- Pre-gameLogged predictions, from 16 October 2026
Each game is stored twice and never changed: an early prediction when it first appears in the schedule, up to three weeks ahead, and a final one on the morning of the game, with every result up to then. The record uses the latest one stored before tip-off. Game-day predictions started on 19 October.
- BacktestThis season replayed
Each morning the current model runs through this season's games in order. Every chance uses only games played before it, but the settings and code are today's, so it is not what the page showed on the day.
- Backtest2025-26 accuracy
Settings tuned on earlier seasons, then scored once on 2025-26.
- BacktestModelling decisions
Every variant scored on 2025-26 after tuning on earlier seasons.
How it works
One rating per team
Each team's rating is its expected point margin against an average team. Before a game, home rating minus away rating plus a home-court bonus gives the expected margin, and that turns into a win chance. After the game both ratings move by a fixed share of the surprise, the gap between the expected and the actual margin: a fixed share of it in Korisliiga and I divisioona, a fixed share in II divisioona.
Opponent strength is built in, because the expected margin already includes it: losing by 8 to a team expected to win by 15 raises a rating. One limit: a game is judged by the ratings at the time. A heavy loss to an opponent that only later turns out to be strong is not revisited.
Two pools
Korisliiga and both I divisioona groups share one pool, so a promoted team keeps the rating it earned. The II divisioona is its own pool: it learns from every region, and this page shows the southern group.
Over the summer
Ratings shrink part of the way back to the level of the league a team last played in, because rosters change between seasons. That shrink is one of the settings the tuning chose.
Modelling decisions
backtests on 2025-26
The code
open source
The data pipeline, models and tests are in the finland folder of the Predicting-Nba repository. There are no betting prices for these leagues in any open data source yet, so nothing here is compared with a bookmaker.