The edge: why our Player Stats model can disagree with the exchange
One of the most common questions we receive about BookieBashing Player Stats is what happens when our fair odds disagree substantially with the exchange.
The answer lies in how the model is built.
Our model is a hybrid. Market prices are an important input, but we do not simply reproduce them. We apply our own calibrations, developed from hundreds of thousands of historical player-stat results, to account for areas where our data shows that markets systematically overestimate or underestimate particular outcomes.
We take a wide view of the available market rather than relying on a single bookmaker or exchange price, and we discard prices that we consider to be outliers.
Critically, that is only the starting point.
Once team news is confirmed, we establish an expectancy for the match and for each team, then normalise that expectancy across the players actually starting. We also reserve an appropriate proportion for substitutes. This means that every player’s projection has to make sense within the context of the team as a whole.
That final normalisation process is particularly important. A player’s individual market price cannot simply be considered in isolation from the other ten players around him. An unusually attacking team selection might increase the team’s overall attacking expectancy while simultaneously reducing the proportion attributable to one particular forward.
It is this process that can produce some of the largest discrepancies between BookieBashing fair odds and exchange prices.
“But the exchange is 1.99. How can BookieBashing make it 3.01?”
We receive variations of this question several times every day.
The assumption behind it is understandable: if a liquid exchange is trading at 1.99 and our model says 3.01, surely the market must know something that we don’t?
Our historical data gives us good reason not to make that assumption.
Exchange prices are not an infallible estimate of true probability. Liquidity can come from many different sources, including bettors hedging bookmaker promotions such as Super Sub offers. The underlying bookmaker prices themselves are produced by models and traders which, like any model, can contain biases and inaccuracies.
Our position is therefore not that an exchange price must be correct. It is that it represents another piece of information to be tested against our own model.
And sometimes the disagreement is enormous.
The Haaland example
Erling Haaland against Manchester United provided an excellent example.
The exchange was offering 1.99 for Haaland to record 2+ shots on target. BookieBashing made the fair price 3.01 – a substantial difference. That made Haaland a strong value lay according to our model.
Why?
Our model expected 9.96 total shots on target in the match, with Manchester City allocated 5.24.
Once City’s confirmed team was taken into account and that expectancy was distributed across the starting players and substitutes, Haaland could only be allocated an expectancy of approximately 1.13 shots on target.
With players including Foden, Cherki, Fernandes, Nunes and others competing for City’s available attacking output, it would have been internally inconsistent simply to give Haaland the expectancy implied by the exchange while retaining our team-level projection.
Using the model’s distribution from that expectancy produced fair odds of 3.01 for Haaland 2+ SOT.
The exchange was 1.99.
So we laid it.
And it won.
There is an important irony here, though. Haaland 1+ SOT was also a substantial value lay, at 1.30 versus our fair odds of 1.44, and that particular bet lost £23.30.
That is exactly why looking at individual bets is such a poor way to assess a pricing model.
Dorgu demonstrates the same thing from the other direction
Patrick Dorgu provides an equally useful example.
Our model made Dorgu 2.57 for 1+ SOT, while the exchange offered 3.90. That was a 149.63% EV back according to our calculations.
He failed to record the required shot on target and the bet lost £43.66.
So in two of the selections members were particularly likely to notice:
Haaland 1+ SOT: big value lay – lost.
Dorgu 1+ SOT: big value back – lost.
It would be very easy to screenshot those two bets and conclude that the model was wrong.
But that is precisely the wrong way to evaluate a probabilistic model.
A bet at 150% EV is not supposed to win every time. A value lay is not supposed to win every time either. The question is whether those estimated advantages translate into profit when we repeat the process across a sufficiently broad portfolio.
And Sunday’s complete dataset gives us an unusually good demonstration.
The bigger picture: 184 bets
Across Coventry v Brighton and Manchester United v Manchester City, the model identified 184 qualifying exchange bets.
The combined result was:
| Market | Bets | P/L | ROI |
|---|---|---|---|
| Cards | 30 | +£185.31 | +16.24% |
| Shots on Target | 57 | +£232.87 | +11.54% |
| Anytime Goalscorer | 32 | +£108.35 | +10.97% |
| 2+ / 3+ Goals | 31 | +£38.29 | +1.71% |
| First Goalscorer | 34 | -£10.92 | -0.95% |
| Overall | 184 | +£553.90 | +7.34% |
For ROI here, I have used profit divided by capital at risk – stake for backs and liability for lays. That is important because otherwise the comparison between back and lay strategies becomes distorted.
Shots on Target is perhaps the most interesting result
The SOT market is particularly revealing because it contains both of the headline examples above.
Across 57 SOT bets, the strategy made:
+£232.87 at +11.54% ROI.
But even that hides an interesting split:
| SOT Market | P/L |
|---|---|
| 1+ Shots on Target | -£40.45 |
| 2+ Shots on Target | +£273.32 |
| Combined SOT | +£232.87 |
That is a very useful illustration of variance.
Haaland 1+ lost. Dorgu 1+ lost. In fact, the entire 1+ SOT portfolio lost £40.45.
Yet when we broaden the sample to all of the SOT opportunities generated by exactly the same pricing methodology, the overall market produced £232.87 profit.
Among the successful 2+ SOT lays was Haaland himself: the model made him 3.01, the exchange was 1.99, and the position returned £82.33.
That is the bigger picture we want members to focus on.
Four of five market groups were profitable
The results are also encouraging because the profit wasn’t dependent on a single market.
Cards produced the strongest ROI at +16.24%, followed by SOT at +11.54% and AGS at +10.97%.
Only FGS lost, and even there the result was just -0.95% ROI across 34 bets.
So four of the five broad market groups were profitable:
Cards +16.24% | SOT +11.54% | AGS +10.97% | 2+/3+ +1.71% | FGS -0.95%.
That diversification matters. We aren’t looking for one magic player prediction or one spectacular bet. We are repeatedly applying the same underlying principles – calibration, market comparison, team-level expectancy and lineup normalisation – across hundreds of individual prices.
Individual bets aren’t model validation
This is perhaps the most important conclusion from these results.
If someone sends us a message saying:
“Haaland had a shot on target, so your 1+ SOT price was wrong.”
That isn’t how probability works.
Nor would we claim that our Dorgu price was proven correct if he had scored from his first shot.
A price is an estimate of probability, not a prediction of a binary outcome.
We therefore don’t judge the Player Stats model by whether Haaland, Dorgu or any other individual player wins or loses a particular bet. We judge it through calibration and through the performance of sufficiently large samples of prices.
Sunday provides a neat miniature example of that principle.
Two eye-catching, high-EV selections lost. Haaland 1+ SOT lost. Dorgu 1+ SOT lost.
Look only at those two and the model looks bad.
Zoom out to all 57 SOT bets, however, and the result was +£232.87 and +11.54% ROI.
Zoom out again to all 184 player-stat bets across the two matches and the result was:
+£553.90 profit
+7.34% ROI
That is why we encourage members not to judge the model from the outcome of the player they happened to bet on.
The edge isn’t one bet. The edge is the process repeated across the entire market.