How we calculate this
No black box and no marketing jargon. Below is the method in brief — as far as it can be described without giving away the know-how.
What we actually compute
The model does not pick a winner. For every fixture it works out how often each possible scoreline would occur between these two sides — and every market follows from that distribution: 1X2, total goals, BTTS, corners. That is why we say „54 percent" rather than „the home side wins".
What goes into it
The starting point is how the teams have played so far. On top of that we add information about their strength and about the context of the particular fixture. Exactly what, and in what proportions, we keep to ourselves — it is the one thing we do not hand over, because everything else on this site is in the open.
The principle matters more than the list: nothing enters the model because it „sounds sensible". It first has to prove that it makes the forecasts better. The bar is high enough that most ideas fail it — we have tried dozens and discarded those whose results were no better than chance. The model is what survived the sieve, not a collection of everything we could compute.
Tested on matches the model has not seen
It is easy to build a model that explains the past beautifully — you just fit it to results you already know. Such a model falls apart in the first new round. So we test it the other way round: we step back in time, show the model only the matches played before a given round, ask it to forecast, and then compare that forecast with what actually happened. Round by round, across all the history we have.
While doing so we make sure that no information from the future leaks into a past forecast — not even indirectly. This sounds trivial, yet it is exactly the mistake underpinning most „models" that look brilliant in a presentation and stop working once a real match comes along.
What we measure ourselves against
Not our own expectations, but the closing line — the last price before kick-off. It is the hardest possible benchmark: that price already contains everything the market managed to learn. We check two things: how close to the truth our probabilities were, and whether we published them at a moment when the price was still better than at the close.
Testing on other leagues
A model that knows only one league is easy to over-fit to that league's history — it looks superb in hindsight and disappoints in a new season. So we verify the same assumptions on other leagues with a similar character of play. If the method only works on the Ekstraklasa, that is a signal we have fitted coincidence rather than understood football. It is our safeguard against a model that knows history by heart but cannot handle the future.
What this model cannot do
The model computes probabilities from the history of play and from measurable factors. It knows nothing about the mood in the dressing room, it has not heard about an unreported injury from training, it will not foresee a red card in the third minute or a goalkeeping error in stoppage time. That is why we talk about probabilities, not certainties — and in the end a single match decides, not an average of a thousand. Honest analytics also means pointing out where the numbers fall silent.
The result, stated plainly
On matches it had not seen, the model does not beat the closing line on any market, and betting blindly wherever it disagreed with the price ended in a loss. Every market, every league. That is why we treat „value?" flags as analysis, not as a signal to bet. This is not excessive caution — it is a measured result that we publish instead of hiding.
The fact that the model does not beat the market does not make it useless — it means the market is genuinely good, and the real value lies in understanding why, rather than racing it blindly. And that is what we offer: not a shortcut to winning, but a tool for thinking about probabilities.
We unpack the individual concepts — CLV, devigging, variance — in the Market reality section.