The number
The probability of the market, next to how much the model actually knows about that match. When it knows little, it says so.
Statistical analysis of football
We estimate the joint distribution over the exact scores of a match. Every goal market follows from that matrix — full time, first half, second half — consistent by construction. Then we publish how right we were.
How to read it
A number on its own cannot be checked: either you trust it or you don’t. That is why under every probability sits the reason that produced it, and under that the record of how those probabilities have held up over time.
The probability of the market, next to how much the model actually knows about that match. When it knows little, it says so.
expected goals · 90 minutes
The expected goals of the two sides. They are the primitive everything else comes from: «2.1 against 1.3» explains a 71% Over 2.5 on its own.
The historical calibration, computed on forecasts saved before kick-off. It is the one thing anyone can verify from the outside.
The joint matrix
The model does not estimate «the probability of Over 2.5». It estimates how likely each single result is: 0-0, 1-0, 2-1, all the way to 10-10. Eleven by eleven, one cell per score, and they sum to exactly one.
Example with expected goals 1.74 – 1.12. The percentages beside it are genuinely computed from this matrix, live.
What comes out
First half and second half have models of their own, and full time is born from their convolution. It costs one ten-thousandth of RPS — nothing — and in exchange the three windows cannot contradict each other.
the main window
estimated, not derived
a gift from the convolution
Consistency, up close
It sounds obvious, and with one model per window it happens constantly with nothing to flag it. Here the three rows come out of the same distribution: the inequality is arithmetic.
The public record
Anyone can publish percentages. Almost nobody publishes how right they were. Every forecast is saved before kick-off and compared with what actually happened: if the model is calibrated, the points sit on the diagonal.
Being calibrated does not mean guessing right. It means the published number really says what it claims — and that is the only thing anyone can check from the outside.
Measured on 18,599 matches the model had never seen. The tails — Over 4.5 and Over 5.5 — are the best calibrated markets, the opposite of what you would expect.
Isotonic calibrators reach production only where they pass a log loss test on unseen data: squeezing probabilities costs discrimination, and on an already calibrated market it does not pay off.
Where we are
six seasons, rebuilt match by match
the catalogue is growing: more leagues on the way
over 18,755 matches the model had never seen
full time, first half and second half, from the same matrix
Weighted average RPS, walk-forward validation. The shorter the bar, the better. The scale starts at 0.20: a few thousandths separate a decent model from a very good one, and they deserve to be visible.
Coverage
The catalogue of covered leagues is being expanded: we are adding more, and each new competition brings six seasons of history with it before it can be published. This page reads the list from the service, so it updates itself.
List from the last check: the service did not answer.
The boundary
The distinction is not cosmetic: it decides what may leave the service and what may not. It is written in the code before it is written on this page.
Bookmaker odds stay in the backend, where they serve as the yardstick for how good the model is. They never reach the page, and an automated test checks that on every response the service gives.
What we publish are probabilities, expected goals and statistics. What to do with them is not a question this project answers, and nowhere will you find a line telling you what to bet.
Every forecast carries how much the model actually knows about that match. For a newly promoted side on matchday three the confidence is low, and it says so.
18+Gambling can lead to addiction. This site does not promote gambling, carries no operator advertising and does not invite anyone to bet.
What comes next
iOS and Android, free. Until then the work continues where it counts: collecting data every three hours, retraining the models every Monday and building up the track record that makes everything else verifiable.