The number you see is not the number the model said
Every probability on the site passes through one function before it reaches you. Here is what it changes, and why we would rather tell you than not.
There are eight model layers behind a match page, trained separately and precomputed long before you open it. Left alone, they contradict each other. Not often, and not by much, but in ways that are impossible to defend once you see them written down side by side.
So they are not left alone. Every served probability on this site - the match board, the screener, the comparison view, and the price your pick is settled at - comes out of a single function that reconciles them first. It leaves an audit trail: the raw value, the served value, and the rule that fired.
Three things it fixes
The first is arithmetic. Card points (yellows plus two per red) can never be less likely to clear a line than total cards, and total cards can never be less likely than yellows alone. That is an identity, not an opinion. Three independently trained layers were breaking it on the same screen.
The second is a question of who to believe. Some markets are derived analytically from others - half-time to full-time relationships, clean sheets - and some are trained directly on the outcome. When a derivation disagrees with a trained specialist, the specialist wins and the derivation is pulled back into line with it. This one matters more than it looks: the trained market is also what settles your pick. If the board showed you the derived number, you would be betting one price and settled at another.
The third is a bias we measured and did not like. In a domestic cup tie where the two clubs play in different divisions, the model ran almost sixteen percentage points above the Pinnacle and Betfair consensus on the favourite. Everywhere else it sat within a couple of points, including on continental ties between clubs from different countries - which was the control, and which came back clean. So the favourite in a cross-division domestic cup tie is pulled halfway back toward the historical ceiling we actually measured. The correction only ever pulls down, never up.
“A model that is confidently wrong in one specific situation is worse than a model that is vaguely right everywhere, because you cannot see it happening.
Why it happens in one place
It would be easier to patch each screen as someone notices. That is also how a site ends up quietly contradicting itself: a fix applied to the match page does not reach the screener, and the two disagree about the same match on the same afternoon.
So the reconciliation sits at the single point every surface reads through, and an audit script checks every served prediction for those identities. It currently reports all of them coherent. When that number stops being all of them, something is wrong and we would rather find out from the script.
The rates behind the cup correction are generated from our own match corpus, not typed in by hand. If the underlying pattern changes, they change with it.