The record, as published
One standard deviation of the total under a zero-edge assumption is about ±36u, so this result sits -1.9 σ from zero: too far for "bad luck", exactly where "no edge, paying the margin" lives. The closing-line value says the same thing in a faster language — the market moved against our picks on average, and the market was right.
The headline number is boring. The breakdown is not.
A bettor who picks at random and takes the best available price loses roughly the bookmaker's margin — four to six percent. Our model lost 6.7%. In other words, 1041 picks later, a Poisson goal model blended with market prices had produced market-average results, dressed in the language of value. Every claim of edge on this site rested on that record, so the honest question is not "was it unlucky" but "where exactly did it fail". The archive can answer that, and the answer turned out to be specific.
1. Calibration — what the model said vs what happened
| Model's stated probability | Picks | Actual hit rate | Gap | P/L |
|---|---|---|---|---|
| <30% | 37 | 18.9% | -6 pts | -1.3u |
| 30–39% | 116 | 27.6% | -7 pts | -21.9u |
| 40–49% | 340 | 43.2% | -2 pts | -10.4u |
| 50–59% | 377 | 44.6% | -10 pts | -51.5u |
| 60–69% | 136 | 60.3% | -5 pts | +6.4u |
| 70%+ | 35 | 80% | +5 pts | +9u |
The model was well calibrated above 60% and badly overconfident in the middle: picks it rated 50–59% won 44.6% of the time — about ten points short — and that bucket, the largest one with 377 picks, carried -51.5u of the loss on its own. A model that is right about its favourites and wrong about its coin-flips is a model that should stop publishing coin-flips.
2. By market — the Over problem
| Market | Picks | Hit rate | Avg odds | P/L | ROI |
|---|---|---|---|---|---|
| Over goals | 232 | 43.5% | 1.97 | -35.1u | -15.1% |
| Under goals | 459 | 49.7% | 1.93 | -25u | -5.4% |
| Match result | 337 | 37.7% | 2.88 | -21.9u | -6.5% |
| Draw | 13 | 61.5% | 3.76 | +12.2u | +93.8% |
Over-goals picks lost -35.1u at -15.1% ROI — the majority of the whole deficit from a minority of the picks. The mechanism is a known one: a Poisson model with time-decayed attack rates runs hot on goal expectation, and the totals market, which is sharp, does not. Unders and match-result picks were close to break-even, which is what "no edge" looks like once you remove the one market that was actively wrong.
3. By price band
| Odds taken | Picks | Hit rate | P/L | ROI |
|---|---|---|---|---|
| 1.20–1.49 | 21 | 71.4% | -1.4u | -6.7% |
| 1.50–1.99 | 451 | 51.4% | -32.6u | -7.2% |
| 2.00–2.49 | 358 | 41.3% | -34.4u | -9.6% |
| 2.50–2.99 | 134 | 37.3% | +2u | +1.5% |
| 3.00+ | 77 | 24.7% | -3.3u | -4.3% |
No price band rescued the record. The favourite–longshot bias that sank the first weeks (v1) on double-digit prices was capped at 4.00 from 29 July; the loss moved into the 1.50–2.50 range where most picks live, which points at calibration, not at price selection.
4. By month — the new-season trap
| Month | Picks | Hit rate | P/L | ROI |
|---|---|---|---|---|
| July 2026 | 71 | 43.7% | -3.8u | -5.4% |
| August 2026 | 483 | 46.2% | -8.1u | -1.7% |
| September 2026 | 487 | 43.1% | -57.8u | -11.9% |
September alone cost -57.8u across 487 picks. Team ratings are fitted on two seasons of results with a 240-day half-life, which means that in the opening weeks of a season they still describe last year's squads: summer transfers, new managers and promoted sides are invisible to them. The model kept publishing at full volume through exactly the period when it knew least.
5. By league (20+ picks)
| League | Picks | Hit rate | P/L | ROI |
|---|---|---|---|---|
| Premier League | 50 | 52% | +10.8u | +21.6% |
| La Liga 2 | 25 | 56% | +4.2u | +16.8% |
| Greek Super League | 30 | 53.3% | +3.9u | +13% |
| League One | 23 | 47.8% | +2.3u | +10% |
| Liga Profesional | 38 | 44.7% | +3.8u | +10% |
| Championship | 34 | 17.6% | -21u | -61.8% |
| Süper Lig | 34 | 32.4% | -12.2u | -35.9% |
| Liga MX | 22 | 31.8% | -7.3u | -33.2% |
| Ekstraklasa | 38 | 34.2% | -10u | -26.3% |
| Belgian Pro League | 25 | 36% | -6.3u | -25.2% |
Five best and five worst leagues by ROI. With twenty to fifty picks per league these are mostly noise — a league at +30% on 40 picks is one good fortnight — and we resisted the temptation to blacklist the bad ones. Rules that fix a specific league's past are how a model gets fitted to the scoreboard.
6. What the record would have been — with a warning
| Rule applied after the fact | Picks | Hit rate | P/L | ROI |
|---|---|---|---|---|
| As published | 1041 | 44.6% | -69.7u | -6.7% |
| No Over-goals picks | 809 | 44.9% | -34.7u | -4.3% |
| Only picks rated ≥55% | 321 | 57% | +3.1u | +1% |
| Only picks rated ≥60% | 171 | 64.3% | +15.4u | +9% |
| No Overs + rated ≥55% (the v3 rules) | 253 | 58.1% | +6.3u | +2.5% |
These are in-sample numbers: rules chosen by looking at the same data they are then scored on. They will flatter any filter, and we expect the honest out-of-sample result of the new rules to be "around zero, on a quarter of the volume" rather than the double-digit ROI the table suggests. Publishing the table anyway is the point — it is how you will be able to check us against it in three months.
What we changed
From 18 September 2026 the same model publishes under three additional gates, reported as a separate track (v3) on the performance page: a pick must carry a blended probability of at least 55% (the region where the model was actually calibrated); Over-goals selections are never official and remain on match pages as a labelled lean; and no official pick is published until both teams have four matches in the last 75 days, so the opening weeks of a season carry information rather than bets. The old record stays exactly as it was. A record that only keeps its winning periods is a marketing page, not a record.
Why publish a loss
Because the alternative is the industry standard, and the industry standard is a lie. Every "sure odds" page online shows a win rate with no denominator, no prices and no archive. Our archive is public down to the individual pick, price and timestamp — the daily results pages hold every one — and the closing-line experiment runs alongside it as the faster test. If v3 does not beat the market either, that will be on this page too.
Method notes
Picks are archived at publication with the best available price across the bookmakers we track, then settled on the official final score; voids (postponements, pushes on whole-number totals) are excluded from hit rates and P/L. Flat 1-unit stakes throughout. "Stated probability" is the model's blended probability at publication. CLV compares the price taken with the last price snapshotted before kick-off (twice-daily snapshots, so a proxy for the true close). The full dataset is downloadable as CSV from our Kaggle listing and reproducible from the archive JSON behind these pages.