StableBet
Professor Furlong and Pascal at the AI Lab
THE AI LAB
Here is exactly how we test. The settlement rules, the conventions, and the three traps that fake a winning system.
He checks everything twice. It's exhausting.
THE LAB · METHODS

Backtesting betting systems: the three mistakes that fake a winner

We ran 24 systems across 27,421real British races, found three settlement bugs flattering the numbers in the bookmaker's favour, and fixed them. None makes a profit. Here is the method, the traps, and what changed.

By James Maxwell, Stablebet AI Lab · figures verified against the Lab's settlement engine

Why most betting-system backtests are wrong

You already know the headline, and the data backs it: no common betting system beats the bookmaker's margin. Back the favourite, lay the favourite, follow the top-rated horse, stack four into an accumulator. Over a long enough run, the margin catches every one. You pay it on every bet, and no amount of clever selection makes it go away.

What's worth staying for is what happened when we first ran the numbers. A couple of systems came out looking too good. Laying the favourite appeared to make money; one narrow slice of favourite-backing showed a profit. A backtest that hands you free money has almost always got a bug in it, so we went looking. We found three. Each one nudged the results the same way, making the systems look better than they were and the bookmaker more beatable than he is. We corrected all three and ran it again. The conclusion held. The numbers came out tighter, and they sat close to where market theory says they should.

This is the second version of the analysis, and we think of it as iteration done in public. The headline finding lives in our main study, do betting systems work; here is what V1 did, where the traps are, and what moved when we closed them.

How we tested 24 systems on 27,421 real races

A result you cannot reproduce is only an anecdote, so here is the full settlement convention, set out precisely enough to re-run. The universe is every British race in our database over the last 2.7 years or so: 27,421 of them once the filters are applied. A race counts only if it had at least two priced runners and produced a winner. That second condition, winner-required, sounds trivial. It turns out to be the most important filter in the whole study.

Every bet settles to SP, the official Starting Price at the off, rather than a forecast price or the best price you might have grabbed earlier. A bet wins if the horse wins and otherwise loses. That includes fallers and pulled-up horses: if your horse unseats at the third, the stake is gone. We void only true non-runners, the horses withdrawn before the off, and return the stake as a real bookmaker would. When two or more horses share the shortest price, we split the stake across them. We never go back and pick whichever joint-favourite happened to win, because that would be reading the future.

So: a winner-required universe, at least two priced runners, settle to SP, fallers and pulled-up as losses, only true non-runners voided, joint-favourites split, flat stakes throughout. Every figure below follows from those rules, and you can browse every system, ranked, in the interactive Lab.

Three backtesting mistakes that fake a winning system

V1 was wrong in three specific ways. The size of each one matters more than the apology, so here is how far each moved the answer.

One: dropping the non-finishers.An early version of the pipeline filtered on “finish position is not null”, which quietly threw away every faller, pulled-up and unseated runner. Those are losing bets, so removing them made a losing system look like a winning one. That is where an early and entirely false +4.6% on jumps favourites came from. The fix is simple: a faller is a loss.

Two: including winnerless races.More than a thousand races in the raw data have no recorded winner, usually data gaps or voided results. With no winner, the selection gets booked as a loss in every one of them, losses that never matched a bet you could have struck. Leaving them in dragged every backing system down. Strip them out and the favourite's figure lifts by about four points. The fix is to require a recorded winner before a race enters the universe.

Three: a lookahead leak on joint favourites.Take the minimum price when favourites are joint and you get whichever runner is listed first. Racing databases tend to store runners roughly in finishing order, so “the first joint-favourite” quietly became “the one that won”. Splitting the stake removes the leak.

To show which trap did what, we held the joint-favourite convention fixed at split and changed only the universe. With the winnerless races included (the V1 universe of about 27,900 races) the favourite returned −12.48%, the figure readers first saw; with a winner-required universe (V2, 27,421 races) it returned −8.74%. The winnerless-race trap accounts for most of the move, about four percentage points. Switching the joint-favourite convention on top of that adds only half a point or so, and the faller-drop had been fixed earlier. So the favourite going from −12.48% to −8.74%was not us finding a way to look less bad. It was removing more than a thousand races that should never have been in the sample, which moves the number toward the bookmaker's true margin. We can say which trap caused how much, and that is what separates a corrected result from a fudged one.

What every betting system actually returns

Back the favourite
−8.74%
95% CI [−10.4, −7.3]
Back everything (no skill)
−23.45%
the raw margin
Systems in profit
0 / 24
none beat zero
Return on investment by betting system, best to worstEvery system loses. Losses climb with price, from odds-on favourites near minus four percent to fifty-to-one longshots near minus fifty-nine percent, with the zero-skill baseline of backing every runner at minus twenty-three percent.0%−20%−40%−60%Odds-on favourites-4.6%Favourite-8.7%Second favourite-12%Top-rated horse-15.9%Random horse-21.6%Back everything (no skill)-23.4% baselineEach-way outsider-29.9%Outsider (longest price)-34.5%50/1+ longshots-59%Bars = ROI to SP. Whiskers = race-clustered 95% CI. Anything left of the grey bar beats backing blind.

Every figure carries a race-clustered bootstrap 95% confidence interval, shown as the whiskers. (A thousand resamples, clustered by race, because the runners in one race are not independent of each other.) Three things stand out.

First, the grey bar: the baseline. Back every runner in every race, which is what zero selection skill looks like, and you lose 23.45%. That is the raw margin paid in full, the zero point, the price of admission. Second, skill moves you along the gradient but never through zero. Every system beats the blind baseline. Favourites at −8.74% sit well ahead of backing everything, and the best on offer, odds-on at −4.64%, gets closest to break-even and stops there. These are blind, fixed rules. The chart maps the floor that selection-only systems cannot clear, not the ceiling a discretionary punter or a line-shopper might reach.

Third, the shape. Line the systems up by price and the losses climb in order, from odds-on out to the longshots. This is the fifty-year-old favourite-longshot bias, and it fell out of an honest engine in textbook order without being asked to. That is a good sign the data is clean. The path matters as much as the destination. The longest losing run on favourites was 19 bets; on the baseline, 34; on the 50/1-plus longshots, a brutal 841 in a row. Even the least-bad systems put you through droughts that feel broken when they are simply losing slowly.

Is the result a fluke? The stress tests

A single clean result is worth little on its own, so we pushed this one from several directions. Two engines, written separately and using different conventions, agree. The recompute engine with split joint-favourites puts the favourite at −8.74%; a separate engine using a pick-one convention, over 26,850 races and 233,788 bets, gives −8.97%, with overlapping intervals. The answer barely moves with the convention. It also holds across time: the favourite loses 10.98% over the last six months, 10.9% over the last year and 8.97% over the full 2.7 years, every interval below zero, and the baseline is steadier still at around −23% to −24% throughout.

There is one slice we will not oversell. Favourites in fields of sixteen or more come in at −6.02%, but the interval runs from −19.6% to +7.0% on only 605 races. It crosses zero, so on this sample that loss is not distinguishable from break-even. With around twenty intervals, you would expect roughly one to cross zero by chance, and the systems are not independent of each other. The strength of the finding rests on the consistent direction of every estimate and the shape of the gradient, not on any single interval. That we are pointing at the one slice that does not clear the bar should tell you how we treat the ones that do.

Then there is the obvious escape hatch: if the bookmaker has a margin, lay the favourite on the exchange instead. At SP the lay looks like +4.51%. But nobody lets you lay at SP, and once you settle at the realistic de-margined exchange price and take off 5% commission, it goes back underwater at −3.61%. The margin holds whichever side of the bet you stand on.

Common objections, answered

Publish a finding without meeting the objections and you have not finished, so here are six, each answered with the data.

Isn't this trivial, just the bookmaker's over-round?
Partly. The over-round is about 12% a card, rising toward 30% in the biggest fields. But the phrase smuggles in the idea that skill might beat the margin, and that is the claim we tested. The zero-skill baseline (backing every runner) loses 23.45%, the gradient shows skill moving you toward zero and then stopping, and across 24 systems nothing crossed into profit.
Could it just be noise on a small sample?
No. The sample is 27,421 races and 233,788 settled bets, every reported race-clustered confidence interval sits below zero, the result holds across the last six months, the last year and the full 2.7 years, and the one really small slice (favourites in 16+ runner fields, 605 races) is the only one we decline to call statistically significant.
You settled to SP. Wouldn't the exchange or line-shopping flip it?
On the exchange, the realistic de-margined lay of the favourite with 5% commission still loses, at −3.61%, and backing at Betfair SP would trim a point or two without closing a gap of eight to twelve points. Line-shopping is a fair limit we own: we settle to bookmaker SP, so a reader taking best-of-show prices or chasing closing-line value is playing a different game we have not measured. What we measured is the floor these blind, fixed rules cannot clear.
You found bugs in your own data, so why trust the corrected numbers?
Because we found them by attacking our own result and proved each one's size in a controlled comparison; because two independently-written engines using different conventions agree to within half a percentage point; because the result reproduces the textbook favourite-longshot bias unprompted; and because it is reproducible from the conventions we publish. The one slice whose interval pokes above zero is shown and flagged, not hidden.
Did you cherry-pick which twenty systems to test?
No. The rules are blind and fixed in advance (back the favourite, the second favourite, the outsider, a random horse, accumulators of each), applied across the whole universe with a zero-skill baseline as the control. There was nothing to select for, and nothing survived. The fair narrower point is that these are all price and rating rules; we have tested the common ones.
You're a betting affiliate. Isn't telling people not to bet just marketing?
The site does carry affiliate links and earns a commission when a reader signs up with a bookmaker, and that is exactly why the honest number is the asset rather than a threat to it. A site that shows betting loses, and proves it on its own AI model, is worth more than one that does not. Burying our own losing model and our own data bugs would be a strange way to chase turnover.

What this study can't tell you

We settle to bookmaker SP, not Betfair SP. BSP would be a shade kinder, but we do not carry it in the pipeline. That bias runs against us looking good, so it does not threaten the conclusion. We model no commission on the back side, which is correct for bookmaker bets; only the lay rebuttal carries the 5% exchange commission. And 2.7 years is a long sample, not an eternal one. Markets move, and we will keep re-running it.

The model loses too, and it is not a tipster. Backed blind, our AI predictor returns −11.36% over 6,601 races, with a Brier score of about 0.102 against the market's sharper 0.093, which makes it a less accurate forecaster than the market itself (what a Brier score is). We do not sell its picks, because naming the likely winner is a different thing from finding a mispriced one. We publish the losing figure because it would be the easiest one to bury. You can follow its live record on the track record.

The bottom line for punters

We set out to break our own finding. We found three ways the numbers had been flattering us, all in the bookmaker's favour, and fixed every one. The favourite settled at −8.74%, the zero-skill baseline of backing everything at −23.45%. The losses line up by price in textbook order, two engines and three time windows agree, the exchange escape hatch is a mirage, and none of the 24 systems, our own model included, finished above water.

The honest version is narrow and firm. To the most rigorous settlement we can apply, across this 2.7-year sample, every fixed system loses, the sizes match what market theory predicts, and skill only ever carries you along the gradient toward break-even without taking you through it. The margin is not a wall you climb with a clever system. It is the floor the whole game is built on. The most useful thing we can do is show you that floor clearly, error bars and all, and let you decide what to do with it.

Figures from the Stablebet AI Lab settlement engine, July 2026. ROIs to bookmaker SP, flat stakes, race-clustered bootstrap 95% confidence intervals (B=1,000). A methods document, not betting advice. Please gamble responsibly, and note that our own analysis says the expected outcome of doing so is a loss.