Method: How These Bookmaker Margins Were Measured, and Who Pays Us
Everything needed to check the register, disagree with it, or reproduce it. If something here does not match what you find, the figure is wrong and we want to know. The formula is not up for negotiation; any number can be.
The basket: BCI-1 (v1.0)
Figures come from a fixed, versioned basket. Changing what is in it produces a new version rather than a quiet edit, so two studies can be compared without wondering whether the contents moved underneath them.
- Competitions — Premier League · Championship · League One · League Two · ATP Canadian Open
- Market — match result only (home / draw / away, or the two-way equivalent)
- Odds format — decimal, as published to a UK visitor
- Weighting — each competition counts equally, so a busy league cannot dominate an operator’s average
- Window — every fixture available at capture, 7 August 2026
- Inclusion — an operator appears only if it priced markets in every competition in the basket. Partial coverage is not averaged into a whole-basket figure.
That last rule is why the register carries 18 operators rather than every name the feed returned.
The arithmetic, in full
For a market with decimal prices o1 … on covering every outcome:
- Book sum — S = Σ(1 / oi)
- Margin — M = (S − 1) × 100, the overround
- Payout — P = 100 / S, the share of stake returned across all outcomes
- Cost — C = 100 − P, per £100 staked. Equivalently C = M / (1 + M)
Margin and cost are different numbers and the register prints both. Two markets to check any implementation against, ours included:
| Market | Prices | S | Margin | Payout | Cost / £100 |
|---|---|---|---|---|---|
| Two-way | 1.90 / 1.90 | 1.052632 | 5.2632% | 95.0000% | £5.00 |
| Three-way | 2.10 / 3.50 / 3.60 | 1.039683 | 3.9683% | 96.1832% | £3.82 |
Averages are taken per operator per competition first, then across competitions. Averaging every market in one pass would let the competition with the most fixtures set the result.
Rules that exclude data, and what they excluded
Two filters run before anything is averaged. Both apply identically to every operator, including the ones we have a commercial relationship with.
Unpriced markets
A market where every outcome is quoted below 1.10 is not a priced market. It is an empty book showing placeholder prices. Including such markets would report an operator as extraordinarily expensive when it had simply not opened the market properly. In this study 6 of 1,150 markets were excluded on this rule, all of them on one exchange in one competition, leaving 1,144 markets in the study.
Thin competitions
A competition returning fewer than 8 fixtures at capture is not sampled at all rather than reported on a handful of matches. The Hundred — 3 events, below the 8-event floor — so it is shown as not sampled and excluded from every average on this site.
Where an operator has no figure for something, the register says not sampled. It is never shown as zero, never interpolated from neighbouring competitions, and never estimated.
Why exchanges are listed separately
A betting exchange does not set an overround. It matches customers against each other and charges commission on net winnings, so the gap between its prices is a by-product of the order book rather than a price anyone chose. Running exchanges and bookmakers down one ranking would produce a table that looks damning for bookmakers and means nothing.
Our own data makes the point better than the argument does. Betfair’s implied figure across this basket:
| Competition | Implied figure |
|---|---|
| Premier League | 1.58% |
| Championship | 5.75% |
| League One | 24.81% |
| League Two | 49.35% |
| ATP Canadian Open | 0.84% |
The exchange did not decide to charge 31 times more in League Two than on the Premier League. The book is thin there, so the spread between the best back and lay prices widens. That is liquidity, not price, and it is why the two are kept apart.
What this study does not cover
- Horse racing. The feed behind this study does not return UK racing markets. Any racing figure elsewhere on this site is either captured by hand and labelled as such, or presented as a worked illustration rather than a measurement.
- Prices you will see today. Every figure is from the capture window above. Odds move constantly and an individual market can sit well outside an operator’s average.
- Anything other than the match-result market. Margins differ by market type; nothing here should be read as an operator’s margin on other bets.
- Whether an account is any good. Price is one property among many.
Our commercial position, stated plainly
Some links on this site earn us money. That creates an obvious problem for a site that ranks operators, and the honest response is to describe the shape of it rather than to assert independence.
The order of the register is set by the measurement. It is not adjusted for commercial reasons, and an operator we earn from can and does finish last. In this study the dearest priced operator in the table is one we have a commercial relationship with. It is printed where the measurement puts it.
We measure more operators than we can link. The study covers 18 operators. We hold a commercial arrangement with 9 of them. The remaining 9 are measured and published on equal terms, carry no link and earn us nothing:
Betfair Sportsbook · Unibet · 888sport · Paddy Power · Betano · Betway · Sky Bet · LiveScore Bet · Virgin Bet
A reader who notices that every operator we link is also a commercial partner has noticed something real. That is the shape of the arrangement, and naming it costs us nothing; leaving you to spot it would cost the whole point of the register. What it does not decide is who gets written about: every measured operator has a page, on the same terms.
Where an operator has a current regulatory action recorded on the Gambling Commission’s public register, we state it on that operator’s page with the date and the outcome as published, whether or not we earn from them. Every operator listed on this site holds a current Gambling Commission licence, checked against the public register at 7 August 2026.
Questions about the method
Where does the odds data come from?
A commercial odds feed that returns the prices UK-facing operators published for each fixture, captured in a single window and stored unedited. Derived figures are computed from those stored files at build time, so no number on this site is typed in by hand.
Why only the match-result market?
Because it is the one market every operator prices on every fixture, which makes a like-for-like comparison possible. Adding markets that only some operators offer would mean comparing different baskets and calling the result the same thing.
Why weight each competition equally?
Otherwise the competition with the most fixtures would set the result. A league with three times the matches would drown out the others and the figure would describe that league rather than the operator.
What happens if an operator disputes a figure?
We re-check the figure against the stored capture. The formula is published and fixed; the numbers are ours and can be wrong. Where a check shows we are wrong, the figure changes.
Can I reproduce this?
Yes, and that is the point of publishing the basket, the exclusion rules and the two test vectors. Any implementation that returns 5.2632% on 1.90/1.90 and 3.9683% on 2.10/3.50/3.60 is doing the same arithmetic we are.
Do commercial arrangements affect what gets measured?
No. Every operator the feed returns is measured on identical terms, and the exclusion rules apply to all of them equally. The commercial relationship affects only whether an operator has a review page and a link.
Corrections
If a figure here is wrong we would rather change it than defend it. The formula is fixed and published above; the numbers are ours and can be checked against it. Where a source disagrees with one of our figures, we re-check the figure — not the formula.