Methodology
How the model is compared with the market
Every row in the Betting section sets a probability from our model beside one bookmaker's price for the same outcome. This page defines the words the section uses, explains each number on that row and the arithmetic between them, then states the one rule that decides which rows are qualified edges, and at what moment. The football model itself is explained once, on How the model works.
Glossary
One word, one population
The section uses these words, and no others, for the sets of rows they name. Each stands for one population, and none is used for a population it does not name.
- Evaluated price
- Any row the model has priced against a bookmaker: one selection, one price, one probability.
- Edge
- What a stake of one returns on average at the offered price: probability × odds − 1. Not used for: the probability gap.
- Probability gap
- Model probability minus market probability, in percentage points. Not used for: edge.
- Positive edge
- An evaluated price whose edge is above zero, nothing else implied. Not used for: anything qualified.
- Qualified edge
- An evaluated price that satisfies the canonical rule at a stated moment. Not used for: “value”, “opportunity”, “pick”.
- Qualified selection
- A qualified edge in the record, settled or pending. On the Performance page, a selection always means a qualified selection.
- Evaluation moment
- The time of a row's last model evaluation before kickoff, when its probability and price were stored. The record asks the rule about each selection at that moment, never at today's clock. Not used for: kickoff, the present.
- Settled / Pending
- A qualified selection whose match has a result is settled: won, lost or void. One whose match has kicked off and has no result yet is pending, which is neither settled nor a loss. Not used for: a loss.
- Stake / Units
- One unit on every qualified selection, equal and never varied. Units are the stake's own measure: a return of −3.5u is three and a half stakes lost.
- Fresh / Stale
- The price is within, or beyond, its tier's allowance at the assessment moment. Not used for: “current”, “live”.
- Full data / Limited data
- The match carries no model warning, or carries one. Not used for: confidence.
- Measured / Not measured
- The backtest's skill figure for the market is above zero, or is not. Not used for: “validated”, “proven”.
Value, opportunity, pick and best are retired from the section's pages. Each had come to mean two or three of the populations above at once; a qualified edge is what they were reaching for, and it is the only word now used for it.
The numbers
Model probability, fair odds, implied probability and overround
The model probability is our model's estimate of how likely an outcome is, written to the price row the last time the model was run. No page in this section works a probability out any other way.
Fair odds are the price the model breaks even at: one divided by the model probability. A 50% outcome has fair odds of 2.00. If the market offers more than the fair odds, the model thinks the price is too long; if it offers less, the model thinks it is too short.
The implied probability is the same conversion run the other way on the bookmaker's price: one divided by the odds. Odds of 2.50 imply 40%.
The overround is how much more than 100% a bookmaker's prices add up to across every outcome of a market. It is the bookmaker's margin: a three-way market whose implied probabilities sum to 104% carries a 4% overround.
The margin
How the margin is removed, and why the ranking does not use it
To compare the model with what the market itself thinks, the margin has to come out. We use the multiplicative method: each outcome's implied probability is divided by the market's total, so the outcomes sum to exactly 100% again and each keeps its share.
It only runs when every outcome of the market is priced. With one leg missing the total would be short and the margin understated, so in that case the market figure is shown as it is and labelled as including the margin.
The margin-removed figure is only used in the model-vs-market bars and the probability gap beside them. The edge, and everything ranked, filtered, coloured or qualified by it, uses the bookmaker's actual price with the margin still in it, because that is the price on offer.
Edge and the gap
Edge and the probability gap, side by side
A row carries two numbers that say how far the model is from the market, and they are not the same number. The edge is the model probability multiplied by the market odds, minus one: what a stake of one would return on average over many bets like this one, if the model's probability were exactly right. A 55% outcome at 2.00 has an edge of +10%; the same outcome at 1.70 has an edge of −6.5%.
The probability gap is the model probability minus the market's probability, in percentage points. The market's probability is the margin-removed figure when every outcome of the market is priced, and the implied probability, with the margin still in it, when one is not; the row says which. A 55% outcome against a market at 50% has a gap of +5.0 points whatever the price.
The edge is measured against the price on offer, so it ranks, filters and qualifies; the gap is measured against what the market thinks, so it explains. Two prices with the same gap can carry different edges, because the margin in them differs, and the price is what is paid.
A positive edge is a statement about an average, not about one match. A +10% edge on a 55% outcome still loses 45 times in 100. Over a small number of bets the results are dominated by that variance, and a run of losses is not evidence the edge was wrong, just as a run of wins is not evidence it was right. It also rests entirely on the model probability, which is an estimate with error in it.
Price needed
The price an edge needs
Since the edge is probability × odds − 1, the price at which it reaches 5% is one plus the threshold, divided by the model probability: (1 + 5%) ÷ probability. It is the fair odds scaled up by the threshold, and it needs no market price at all.
It says how far a price is from the line rather than only whether it is over, which is the figure to read when an edge is close. The worked example below ends on it.
Worked example
One row, worked through
A made-up match priced by the model as this page renders, against a complete three-way book (Home win 2.15 · Draw 3.40 · Away win 3.60). We follow Home win through every figure an Overview row shows.
- Model probability 49.7%
- Fair odds 1 ÷ 49.7% = 2.01
- Implied probability 1 ÷ 2.15 = 46.5%
- Overround 1 ÷ 2.15 + 1 ÷ 3.40 + 1 ÷ 3.60 = 103.7%, so 3.7%
- Market, margin removed 46.5% ÷ 103.7% = 44.9%
- Probability gap 49.7% − 44.9% = +4.8 pp
- Edge 49.7% × 2.15 − 1 = +6.7%
- Price needed for a 5% edge (1 + 5%) ÷ 49.7% = 2.11
So Home win would show an edge of +6.7% on the Overview and a probability gap of +4.8 pp against the market's margin-removed figure, and its edge reaches 5% at a price of 2.11. The edge is measured against the price on offer; the gap is measured against the market with its margin taken out.
Each result is computed from the unrounded figures and then rounded the way the Overview rounds: probabilities to one decimal, odds to two, edges signed to one decimal. Redoing a step from the rounded numbers shown can land one digit off.
The rule
What a qualified edge is
One rule decides, for one evaluated price at one moment, whether it is a qualified edge. Every count, card, colour and record in the section reads that rule, and nothing tests a criterion of its own. The moment is stated: the live pages ask about now, the record asks about each selection's last evaluation before kickoff, and the rule is the same whichever it is.
At the moment asked about, the price is a qualified edge when all of these hold, in this order: the match has not kicked off; the price was captured no later than the evaluation that priced it, so the stored probability was really set against it; the price is fresh by the odds schedule's tier for that distance from kickoff; the match carries no model warning and both sides have a sample behind their rating; the backtest measured skill on the market; and the edge, from the stored probability and price, is at least 5% and below 40%.
Each criterion that fails is a reason, and a row says its three status words — Fresh or Stale, Full data or Limited data, Measured or Not measured — whatever else it fails on. Comparisons are made at the stored columns' 6 decimals, so a figure stored exactly on a line sits on it. No verdict is stored: it is computed when asked for, because one written down would be wrong the moment the clock moved.
Where a match has more than one qualified edge, the cards show the one with the largest edge, then the earliest kickoff, while the board and the counts show them all. That is presentation, and it changes no verdict.
Freshness
Fresh and Stale: the odds schedule
Prices are fetched on a schedule tiered by time to kickoff, because the provider serves odds one match at a time and bills per request. Within 24 hours of kickoff a match's prices are refreshed every 3 hours; from there out to 72 hours, every 24 hours. Nothing is fetched further out: most bookmakers have not posted every market yet, and the requests would find nothing.
The model is re-run against the stored prices after every sweep, so a row's edge pairs each price with a probability evaluated against it.
A price is Fresh while it is within its tier's allowance and Stale once a refresh should already have replaced it: after 6 hours within the last 24 hours before kickoff, and after 48 hours before that. The tier is the one the match is in at the moment asked about, so a price a match two days out may keep for 48 hours is Stale at 6 on the day. Stale prices stay in All prices, with the word and the price's age beside the edge, and are never a qualified edge.
| Time to kickoff | Refreshed every | Stale after |
|---|---|---|
| Within 24 hours | 3 hours | 6 hours |
| 24 to 72 hours | 24 hours | 48 hours |
Limited data
Full data and Limited data: the sample behind a rating
A club's rating is fitted from the shot data of its matches. When a side has fewer than 10 such matches behind it — a newly promoted club, a competition early in its season — the match carries a model warning naming the side and its count; when a side has no sample at all, the model prices the match on the competition's average for that side and the warning says so. In either case every row on the match says Limited data, and is never a qualified edge.
Full data means neither: no warning, and a sample on both sides. It is a statement about how much the probability rests on, not about how sure the model is. The model has no uncertainty estimate of its own; it does not know about injuries, rotation, weather or anything else outside the shot data, and nothing on these pages should be read as a statement that one outcome will happen.
Skill
Measured and Not measured: what the backtest found
The model was replayed over a season of real matches in 7 competitions, measured on 17 August 2026. For every market it priced, its probabilities were scored against what happened and set against the base rate — simply knowing how often that outcome happens — and the difference is the market's skill figure.
Measured means the figure is above zero: the model beat the base rate on that market, by however little. It did on Away win, Home win, Home team to score, Home team 2+ goals, Away team 2+ goals, Away team to score. It did not on Over 1.5 goals, Both teams to score, Over 2.5 goals, Draw, and zero counts as not, since a model worth exactly as much as the base rate is worth nothing on it.
A market without measured skill stays in All prices so the comparison is complete, but every row on it says Not measured and is never a qualified edge, whatever the edge. Measured is not “validated”, not “proven” and not a measure of profit: it says the backtest's figure was positive on those competitions over that season, and no more. The Market overview carries the same split per selection.
Outliers
The outlier line
An edge of 40% or more is treated as a likely data error rather than a price. A bookmaker's price that far from the model's is far more often a wrong price, a market suspended and not withdrawn, a line keyed against the wrong selection or a probability pinned by thin data than a bet. Such rows stay in All prices, with the edge printed as it is, and are never a qualified edge.
The line is a cutoff on the quoted figure, not a judgment on any one row, and a row just under it is treated like any other: a qualified edge runs from 5% up to but not including 40%. Reading a three-figure edge in All prices as a three-figure edge is the mistake the line exists to prevent.
The odds
Where the prices come from
Prices come from one odds provider and are one bookmaker's, not the highest available and not a consensus of several. For every market we take the first of Bet365 → Paddy Power → Pinnacle that prices it, in that fixed order, and the bookmaker is named on the row.
The order is fixed rather than chosen per match, so no price is taken because it happens to disagree with the model. Bet365 comes first because it covers most of the competitions here; the others fill the leagues where it does not.
The record
How the record is kept
The qualified selection record on the Overview, the Performance page and the homepage is one tally, kept by these rules. Each term below is the rule's own definition: the Performance page prints the figures, and this is what they mean.
- What counts
- Every evaluated price that was a qualified edge at its evaluation moment, in every competition the site prices: a fresh price by the odds schedule's tier, full model data, a market with measured skill and an edge from 5% up to but not including 40%. It is the same rule the live board reads, asked at a different moment.
- The moment
- Each row is assessed at its own evaluation moment, with the probability and the price stored then. Nothing about a past selection is decided from today's clock, and a selection that qualified then counts whatever the price did after.
- The price
- The bookmaker's price paired with that evaluation, from the bookmaker named on the row. Nothing is re-priced with a later or a better price, and it is not a closing price (see The record's price). A row whose price was captured after the evaluation that was meant to price it is excluded and counted.
- No backfill
- A row written after its match kicked off is never counted, whatever it says. The record is of what the board would have highlighted before the match, and a row that could not have been on the board then cannot be in the record now.
- Staking
- An equal stake of one unit on every qualified selection, so a match with two qualified selections carries two units. A win returns the price less the stake, a loss costs the stake, and a void returns it and still counts as staked.
- Return
- Units are the sum of those returns, and ROI is units divided by units staked, quoted only from 30 settled selections, overall and in every breakdown row. Under that it is mostly the last few results. Returns are gross: before any commission, tax or fee.
- What is left out
- Pending selections, which are neither settled nor losses; rows without a price; the excluded pairs above, which are counted; and the daily combinations, a different bet on the same matches, reported on their own pages.
Settlement
Pending, won, lost and void
A qualified selection is pending from kickoff until its match has a result. Results are graded in one sweep once they land, so a match postponed by a week keeps its selections pending for that week. A pending selection is neither settled nor a loss: it adds nothing to the record until it is graded.
A selection is won when the outcome it names happened, by the same reading of the scoreline that priced it, and lost when it did not. A selection on a match that was never played — postponed without a new date, cancelled or abandoned, and recorded as void — is void: it was a price on a match that did not happen, so it carries no verdict about the price. A void returns the stake and still counts as a settled, staked selection.
A verdict, once written, does not move. A row is settled once and never re-graded, so the record is an archive and not a running estimate.
The record's price
What the record's price is, and is not
Every selection in the record is settled at the price stored with its last evaluation before kickoff: the bookmaker's price the model's probability was set against, captured at most its tier's allowance earlier, which within the last 24 hours is under 6 hours. It is the price a reader of the board would have seen beside the edge at the time.
It is not a closing price. There is no capture at kickoff, and nothing is re-priced with a later or a higher price. A price may have moved, been limited or been withdrawn between the capture and kickoff, and the record cannot say which way, so the Performance page says this beside its figures rather than implying a closing line.
Correlation
Why two selections on one match are not two experiments
A match can carry more than one qualified edge — a home win and the home side to score, say — and each is a selection staked at one unit. They are settled by the same ninety minutes, so they tend to win and lose together, and a count of selections overstates how many independent results the record holds.
That is why every selection count in the record carries the distinct match count beside it, and why the smaller figure is the one to read a return against. The equal stake is kept rather than split across a match's selections, because splitting it would let the record's size depend on how many markets a bookmaker happened to price.
Qualified calibration
What the calibration of qualified selections measures
The Performance page scores the model twice, over two populations. Model calibration reads every selection the model priced on a played match, from the last projection before kickoff, whether or not any price was quoted on it. The calibration of qualified selections reads the record's own rows only: the settled selections that met the qualification rule at their last pre-match evaluation, each with the model probability stored at that evaluation and its stored result. A void is counted and not scored, since a match that did not happen gives no outcome to be right about; a pending selection never enters.
Over the decided selections — won or lost — the section prints the model's average probability, how often the selections happened, the difference between the two in percentage points, and the Brier score, the mean squared distance between each probability and what happened. The base rate beside the Brier score is the same reference the overall calibration uses, computed on exactly this subset: a forecast that gave each selection its own frequency over these rows, which it could only have known with hindsight.
The two selection counts are the record's, so the section and the record can never disagree about how many rows they read. Selections from the same match are settled by the same ninety minutes and may be correlated, so the selection count overstates the independent results behind the reading. A qualified selection is one the model priced above the market, so the subset is chosen by the model's disagreement with the bookmaker; a reading over it describes the recorded sample and is not a fixed property of the model.
Rule history
Qualification rule history
Every material change to what “qualified” means, dated, newest first. A change here changes which selections the record counts, so the figures published before and after it are not comparable; the model itself is not changed by anything on this list.
-
Effective
One rule for every surface
Before: the section's surfaces each tested their own criteria. The hero counted every positive, unwarned, unstale price whatever the market's measured skill or the outlier line; the cards demanded a flat six hours of freshness; the Market overview and the historical record counted selections on matches with limited data, in markets without measured skill, at prices that were stale at their evaluation, with prices captured after the evaluation that was meant to price them, and with edges of 40% and more. The record was therefore looser than the live board, and the two could disagree about one row.
Now: one rule (The rule, above) decides for every surface — the hero count, the cards, the Market overview, the league odds lists and the record. At the moment asked about, a price is a qualified edge when the match has not kicked off, the price was captured no later than the evaluation that priced it, it is fresh by the odds schedule's tier for that distance from kickoff, the match carries full data, the market has measured skill, and the edge runs from 5% up to but not including 40%. Qualification is per selection; one card per match is a presentation rule and changes no verdict.
Why: a record kept by a looser rule than the board it describes is a record of something else. The one rule makes the count on the hero, the card on the board and the row in the record the same statement.
Recalculated: every historical selection was re-assessed under this rule at its own evaluation moment, and the record on the Overview, the Performance page and the homepage, and each competition's performance section, now print the recalculated figures. They are not comparable with figures published before this date, and neither set is a claim that the model did better or worse for the change.
For how the probabilities are made in the first place — expected goals, club ratings and the scoreline grid — read How the model works. The comparison itself is on the Betting Overview, and how every qualified selection has done is on Model performance.