our method, in the open
How we set the numbers, and why we sit under the consensus
Where the model's rates come from, how it is anchored to what everyone else expects, and why our headline number usually sits a shade below the crowd. The method, with nothing hidden.
21 July 2026 · 6 min read · James Frewin

Every number on this site starts as an argument with myself, not a lookup in a database. So it is worth being plain about where a match’s figures actually come from, in order, with nothing hidden. There are three moves, and the third is the one people ask about most: why the headline usually sits a shade under the crowd.
First, a goal rate for each side
The engine is a bivariate Poisson simulation, and it needs one main input per team: an expected-goals rate, how many goals a side would score in an average match against this opponent. That single number carries most of the weight, so it is built carefully, not guessed.
It starts with recent results and, more usefully, the underlying expected goals behind them, because a team that has been creating good chances is a better bet than one riding a hot finishing streak. Then it is adjusted for the things a table cannot see: team news (who is injured, who is suspended, the XI that is actually likely to start), home advantage where it applies, and how the two styles meet, a pressing side against a team that plays out from the back is a different game than the raw ratings suggest. This is where the judgement lives. Once the two rates are set, the simulation is mechanical: play the match 100,000 times and count.
Second, anchor to what everyone else expects
A rate built in a vacuum is easy to fool yourself with. So before trusting our own, we anchor to the consensus, what everyone else expects, and treat it as a strong prior. That means taking the market’s win, draw and loss expectations and the published models (Opta and the like), then decomposing that consensus into an expected-goals pair of its own. We start from there.
The discipline is deliberate. If our number and the crowd’s agree, good, that is the base case. If they diverge, the burden is on us to say exactly what the consensus is missing and why, in the write-up, not to quietly assume we know better. Most of the time the honest answer is a small adjustment, not a wholesale disagreement.
Third, why we sit a shade under the crowd
Here is the part that reads oddly at first: our headline win probability for the favourite usually lands just below the consensus. That is on purpose, and it is a mix of two things.
Humility about our own edge. We are one model among many, run by one person. When we are close to the crowd, we are not going to pretend a rounding error is insight. Shading toward the consensus rather than away from it is the safer error.
Respect for variance. Football is low-scoring and noisy, and heavy favourites tend to be a touch overbacked by narrative, the better team, the bigger names, the story that wants them to win. So we lean a little toward the underdog and a little toward the draw, which the crowd chronically underrates. The gap is small, a point or two, but it points the same way almost every time.
When we are unsure, we err toward the underdog and the draw. A favourite priced a shade too low costs less than one priced too high.
All of it, on the record
None of this is a pitch to trust us. It is a method you can check. The rates, the adjustments and the shade under the crowd are all reproducible: the engine is open source, so you can run the same match yourself, change a rate, and watch the number move. And every pre-match call is timestamped and kept next to the result, misses included.


