How the model works
A plain-language guide to the statistical engine behind every probability on the site.
Expected goals (λ)
The model learns an attack and a defence rating for every team from historical results, then combines the two teams' ratings (plus home advantage and league context) into an expected number of goals for each side — its λ. Two λ values fully describe the match in the model's eyes.
From λ to probabilities
A bivariate Poisson distribution turns the two λ values into the probability of every scoreline, with the Dixon-Coles correction that fixes the well-known under-counting of low scores (0-0, 1-0, 1-1). Summing the right cells of that matrix gives the 1X2, over/under and BTTS probabilities. The derived over/under and BTTS pages use the published λ under an independent-Poisson view; the full correlation-aware matrix lives on each match page.
ELO and continuous retraining
ELO ratings track form and momentum between full retrains, and the results archive grows every day from multiple feeds, deduplicated to one row per real match. The model never sits on a stale dataset.
Why blend a model with the market?
The market aggregates enormous information and is hard to beat; the model finds the spots where a price looks out of line with the evidence. Neither is trusted blindly — the published call only exists where they, and the checks around them, agree there is value.