Model performance
Beat the closing line
+0.58pp
1,022 picks published as value, settled, at a real recorded price.95% interval +0.15 to +1.00pp over 538 picks across 47 match-days. The interval excludes zero.
It clears zero by 0.15pp. The smallest effect this sample could reliably detect is 0.60pp (80% power, 538 picks across 47 match-days). The measured 0.58pp is below that, so this establishes that we are not BEHIND the close; it does not establish how far ahead.
Win rate
53.3%
929 decided picks of 1,022 settled. A win rate is not a return: the price each pick was taken at decides that.
Return per pick
-3.97%
At the price each pick was available at. 95% interval -11.39 to +2.76% — wide enough that no return can be claimed from it either way.
Shopped to the best price we observed on the ladder, the same picks return -28.84u (-2.82%) — a change in the price, not in the results. 600 of 1022 picks had a priced ladder at their own line; the rest keep the price we recorded. We name the book on each pick, because which books you can actually use is not something we can know for you.
94% of these picks were published before the current settings. We changed what the model is allowed to publish on 17 October 2026, so the record above mostly measures picks the gate would select differently today. It is a true record of what we called; it is not yet a record of what we are calling now. Enough picks from the current settings will have settled to report them separately around 25 September, and to compare them properly around 14 October.
These two point opposite ways, and both are true. Beating the closing line says the forecast is better than the market’s. The return is what is left after the bookmaker’s margin is paid out of that edge — and the margin is currently several times larger than the edge, so a better-than-market forecast still loses money at the prices available.
What this counts
Published as a value pick, settled, at a real recorded entry price, graded forward rather than by a retrospective sweep.
Sold as value today: asian handicap — +0.76pp (+0.21 to +1.30pp) over 596 picks.
A previously published figure read 53.2% over 771 picks. Same picks, different population. The headline keeps markets that were later retired, and counts only picks carrying a real recorded price. No result changed.
What this counts
The record counts markets currently published as value picks. Markets we no longer publish as value picks, and in-play calls, are still graded and still shown on their own fixtures — they just do not move this number.
Those 5,148 retired picks returned -6.5%. We retired those markets on this same history, so read the scoped figure as a description of what we publish now, not as an independent forecast.
A correction, stated in full. A defect let 119 picks that had failed our own edge floor be counted as value picks. They returned -24.7%, so removing them IMPROVES the figure above: as published it was -3.5% over 921 picks. We publish all three so the correction can be checked rather than trusted. The rule was written down before it was applied, it judges each pick against the floor that was in force when that pick was published, and it leaves in 22 settled picks we could not demonstrate the defect for — which were 19-3 in our favour.
Every pick ever settled, all markets: -5.6% (-280.9u over 5,016 priced picks).
"Live forward" picks carry a publication time and were graded as their matches finished; "retrospective or untimed" picks were settled after the fact by a bulk sweep or carry no publication time, so nothing shows they were offered before kickoff. Graded between 2026-06-16 and 2026-11-04.
Methodology
How we keep this honest
• Only picks we actually published to you are counted — the exact picks you can act on, nothing cherry-picked.
• Pre-match picks lock at kickoff and are graded win or lose — we never quietly delete a losing pick.
• Win rate is shown against break-even — the win rate the odds require to profit — so the number means something on its own.
• "Beat the closing line" is how often we secured a better price than where the market ended up — the sharpest sign of a real edge.
• Return is measured at fair (no-margin) odds, isolating our forecasting skill from the bookmaker's cut.
• Pushes return the stake — a line landing exactly counts as neither win nor loss — and a cancelled match voids its picks instead of leaving them hanging.
• Small samples are flagged, not hidden, and every graded pick is listed in the archive below.
Calibration curve
Predicted vs actual
When we say a chance is X%, it should happen about X% of the time. On average our stated chances land within ±4.1 points of what actually happens.
Measured on published picks only, which are selected for value — so this is a stricter test than a model's raw output.
Forward calibration
Do we deliver what we claim?
Measured on picks we published and settled promptly — not on the data the model was fitted to. A negative figure means the model claimed more than it delivered.
Across every published pick the model claims more than it delivers, and that is established. Whether the picks we sell as value are over-confident is not: that sample is smaller and its interval still contains zero.
Bins: equal width deciles · all history. The error figure moves with the bin choice, so the choice is stated. Intervals are a clustered bootstrap over match-days, because picks on one slate share fixtures and model version.
These are three nested samples, widest first — not a trend. Reading a direction across them is how a difference of half a point once got published as a finding.
Closing-line value
Did the price move toward us?
A pick beats the close when the market shortens it after we publish. A price that never moved counts as half, not as a loss, and a pick whose close we captured before publishing is left out entirely — it could not have been beaten. It is a faster read on whether a market is worth selling than the settled return, because it uses every pick rather than only the decided money.
8 outcomes · 3 match-days · too few to conclude
20 outcomes · 7 match-days · too few to conclude
387 outcomes · 39 match-days · 95% interval 49.7–60.9%
10 outcomes · 6 match-days · too few to conclude
57 outcomes · 13 match-days · 95% interval 37.8–53.8% · too few to conclude
36 outcomes · 7 match-days · too few to conclude
Measured on picks published as value, settled forward against a captured closing price, pre-match only. Above 50% the market moved toward the pick after we published it.
And is it moving?
All markets pooled, newest last. A calendar week holds too few match-days at our volume to carry a rate, so each point covers a rolling window and the series steps weekly.
518 outcomes · 39 match-days · 95% interval 48.5–58.2%
518 outcomes · 39 match-days · 95% interval 48.5–58.2%
518 outcomes · 39 match-days · 95% interval 48.5–58.2%
518 outcomes · 39 match-days · 95% interval 48.5–58.2%
518 outcomes · 39 match-days · 95% interval 48.5–58.2%
518 outcomes · 39 match-days · 95% interval 48.5–58.2%
518 outcomes · 39 match-days · 95% interval 48.5–58.2%
518 outcomes · 39 match-days · 95% interval 48.5–58.2%
90 days ending on each point's own date, so consecutive points overlap and a single match-day cannot move the line by itself. Stepped weekly because a calendar week at our current volume holds too few match-days to carry a rate at all.
By confidence band
Hit rate by confidence
Realistic range 34–100%
Realistic range 54–63%
Realistic range 41–52%
Reliability by slice
How much the model beats the base rate
Measured nightly over every graded outcome, not only the picks we published. Each figure is how much sharper our probabilities are than simply knowing how often the thing happens; zero means no sharper at all. Every row states the sample it was measured over and its interval, and a slice with too few outcomes is shown and labelled rather than quietly dropped.
By market
11 slicesEvery graded outcome, not only the picks we published.
38,670 outcomes · 39 match-days · 95% interval 89.4–90.6%
claimed 97.8% · happened 90.0%
40,499 outcomes · 106 match-days · 95% interval 13.0–13.6%
claimed 13.6% · happened 13.3%
11,222 outcomes · 108 match-days · 95% interval 49.0–50.9%
Both sides of this market are counted together, so over- and under-confidence cancel and no direction can be read from it.
106,823 outcomes · 72 match-days · 95% interval 49.7–50.3%
Both sides of this market are counted together, so over- and under-confidence cancel and no direction can be read from it.
16,874 outcomes · 108 match-days · 95% interval 32.6–34.1%
claimed 33.5% · happened 33.3%
16,870 outcomes · 107 match-days · 95% interval 65.9–67.4%
claimed 66.6% · happened 66.7%
28,090 outcomes · 108 match-days · 95% interval 11.8–12.6%
claimed 12.8% · happened 12.2%
11,240 outcomes · 107 match-days · 95% interval 41.3–43.9%
Both sides of this market are counted together, so over- and under-confidence cancel and no direction can be read from it.
By tier
4 slicesHow far into a fixture the read was taken.
38,670 outcomes · 39 match-days · 95% interval 89.4–90.6%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
119,506 outcomes · 77 match-days · 95% interval 45.1–45.8%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
260,984 outcomes · 97 match-days · 95% interval 44.8–45.4%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
75,126 outcomes · 106 match-days · 95% interval 38.8–39.5%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
By competition
93 slicesCompetitions with enough settled outcomes to measure.
162 outcomes · 1 match-days
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
264 outcomes · 2 match-days
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
758 outcomes · 3 match-days
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
1,640 outcomes · 5 match-days
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
1,345 outcomes · 4 match-days
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
17,112 outcomes · 27 match-days · 95% interval 46.0–47.6%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
3,362 outcomes · 6 match-days
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
1,821 outcomes · 9 match-days · 95% interval 40.0–44.5%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
By confidence band
3 slicesThe band is a threshold on a score that does not currently rank outcome.
3,160 outcomes · 91 match-days · 95% interval 47.4–52.8%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
4,112 outcomes · 89 match-days · 95% interval 51.6–56.4%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
353 outcomes · 46 match-days · 95% interval 49.8–63.3%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
By price
5 slicesThe price the pick was available at, not the fair price.
548 outcomes · 63 match-days · 95% interval 16.2–24.2%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
1,021 outcomes · 79 match-days · 95% interval 33.8–40.8%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
2,340 outcomes · 82 match-days · 95% interval 45.4–50.2%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
2,132 outcomes · 84 match-days · 95% interval 58.7–64.6%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
1,584 outcomes · 68 match-days · 95% interval 62.2–73.8%
This counts every market at once, and markets with two opposite sides cancel each other out, so no direction can be read from it.
By market and band
30 slicesThe finest cut, and the one where cells go thin.
632 outcomes · 53 match-days · 95% interval 42.6–51.2%
395 outcomes · 33 match-days · 95% interval 38.1–48.1%
434 outcomes · 45 match-days · 95% interval 46.7–57.4%
515 outcomes · 48 match-days · 95% interval 47.3–58.3%
673 outcomes · 60 match-days · 95% interval 42.6–51.1%
226 outcomes · 49 match-days · 95% interval 42.7–57.3%
739 outcomes · 81 match-days · 95% interval 50.0–59.8%
1,791 outcomes · 86 match-days · 95% interval 48.6–57.0%
By sport
By market
By analysis tier
Hit rate by tier
By edge bucket
Hit rate by edge range
By league
Hit rate by competition
By model version
Performance by model
Model audit log
Version history
matchsense-basketball-spread v2026.03.1
Model matchsense-basketball-spread v2026.03.1 is currently active
10/20/2026
matchsense-football-moneyline v2026.03.1
Model matchsense-football-moneyline v2026.03.1 is currently active
10/20/2026
matchsense-basketball-spread v2026.03.1
Model matchsense-basketball-spread v2026.03.1 created for BASKETBALL Spread
3/25/2026
matchsense-football-moneyline v2026.03.1
Model matchsense-football-moneyline v2026.03.1 created for FOOTBALL Moneyline
3/25/2026