You build the system on a Sunday afternoon. You filter five years of results for trainers above a certain strike rate, on certain going, in certain classes. The backtest says it returned 89% on a level stake. You can hardly believe it. You start betting it on Monday.
Three months in, you’re roughly break-even. Six months in, you’re slightly down. The angle that looked unbeatable on paper has done nothing live. So you tweak a filter and start again… and the same thing happens.
Sound familiar?
Most systems stop making money for one reason: they were backfitted. The rules were shaped to fit one slice of past results instead of a pattern that repeats. In my data, narrow trainer, going and class filters showed an A/E ratio (actual winners divided by the winners the odds said to expect, so 1.00 means fair prices) of 1.82 on the races they were built on and 1.07 on fresh ones. One broad rule, PR Rank 1 (the horse my ratings put top in each race), held an A/E of 1.02 in both periods.
The fix is a test you run before any money goes on. I’ll show the numbers first, then the five steps.
The short version
- Every system is built on past results, so the question is whether its rules describe a real racing pattern or just the noise in one sample.
- The more rules you stack, the smaller the sample behind each one, and the easier it is for luck to look like skill.
- Hold some data back, never look at it while you build, then run the finished system on it once. If the numbers collapse, you overfitted.
What does backfitting actually mean?
Strictly, every betting system is backfitted. You can only build it on data that has already happened. The real question is whether your rules describe a genuine racing pattern or have been bent to flatter one slice of past noise. When it’s the second, it has its own name: overfitting.
A system overfits when it adds rules that only make sense in the data used to build it. They look like they explain something. They don’t. They trace the shape of past randomness and treat it as the future.
A few signs you might be overfitting:
- The system has lots of conditions stacked on top of each other.
- Some conditions have no clear racing reason for being there.
- The numbers on the build data look spectacular.
- Small changes to the rules make the apparent profit swing wildly.
None of these proves a system is noise. But if several are true, it may well be fitting noise rather than reading the sport, so test it harder before you trust it.
How does a system look profitable until it meets new data?
To see what backfitting does, I split my master dataset in two. The first half, 2013 to 2018, is where I built the systems. The second half, 2019 to early 2026, I held back and used to test them forward. That’s roughly 462,000 runners in the build period and 595,000 in the test period.
The systems were every trainer, going and class combination in the build period with at least 30 runners and an A/E of 1.20 or higher. That’s a filter plenty of careful bettors would call safe: a real sample, a strong number, a clear structure. 642 combinations qualified.
| Careful filter (642 combinations) | Build period, 2013 to 2018 | Test period, 2019 to 2026 |
|---|---|---|
| Runners | Over 42,000 | 38,455 |
| Strike rate | 17.9% | 13.3% |
| Return to Betfair SP, level stakes, after 2% commission | +89.3% | +4.9% |
| A/E ratio | 1.48 | 1.05 |
The same filters, untouched, were then applied to the later races. The return fell from +89.3% to +4.9%. Around 95% of the apparent profit vanished the moment the rules met new data.
Keep in mind that this is a look back at what happened. It tells you how fragile narrow rules were in 13 years of UK racing, not what next season will pay.
That’s the careful version. Tighten the build requirement to small samples of 10 to 29 runners with a return of 50% or more, the kind of "look at this number" filter an impatient builder chases, and 1,036 combinations qualify. Their A/E on the build data is 1.82. On the test data it falls to 1.07. The flashier the claim on the data you built on, the bigger the fall.
Why do more rules make a system worse?
Every extra rule slices the sample smaller, and a smaller sample makes it easier for randomness to pass for a pattern. Stack four or five conditions and the group of runners left can be small enough that a handful of lucky winners push the A/E to 1.50 with nothing repeatable behind it.
You can see it by asking how many of those 642 combinations still held an A/E above 1.05 on the test data. Of the 500 that had at least 10 runners to test, 241 did. That’s 48%. The other half were noise dressed as signal.
| Type of rule | A/E, build period | A/E, test period |
|---|---|---|
| Trainer, going and class, 30+ runners, A/E 1.20+ (642 combinations) | 1.48 | 1.05 |
| Small samples of 10 to 29 runners, return of 50%+ (1,036 combinations) | 1.82 | 1.07 |
| Larger samples of 100+ runners, return of 5% to 15% | 1.10 | 1.04 |
| PR Rank 1, all races | 1.02 | 1.02 |
| PR Rank 1, Class 1 and 2 only | 1.03 | 1.03 |
PR Rank 1 won 33.2% of 52,798 runners in the build period and 33.8% of 70,169 in the test period. One rule, two periods, the same answer. Narrowing it to Class 1 and 2, where there’s a racing reason to expect the top-rated horse to be most reliable, kept its shape too. The trainer filters, picked only because they looked good on the build data, did not. I wouldn’t claim that proves racing logic is always the difference, but it’s what these comparisons showed.
These figures are averages across lots of combinations, so any single system can land above or below them. The pattern is what matters: the smaller the claim on the build data, the smaller the letdown.
How do you test a system before you trust it?
Never look at all the data at once. The moment you build and test on the same data, you can’t tell a real edge from a system that has memorised the past.
- Take all the runners that meet your race criteria and ignore the rest.
- Set aside a fixed share of that data, typically 30% to 40%, and don’t look at it. This is your test set. It exists to fail your system if it deserves to fail.
- Build on the remaining 60% to 70%. Use racing logic for every rule. If you can’t say in plain English why a rule should work, leave it out.
- Run the finished system once on the held-back data. Look at strike rate, return to Betfair SP and A/E. If the test numbers are close to the build numbers, you may have something. If they collapse, you’ve overfitted.
- If it survives, paper-trade it for at least 100 selections before real money goes on. That means writing down the bets you would have placed, without staking anything. The test set still looks backwards. Live racing is the only true forward test.
How close is close? For a sense of scale, the careful filter above fell from an A/E of 1.48 to 1.05. In my view that’s a rule to throw out. The larger-sample group slipped from 1.10 to 1.04, which is the kind of shrinkage you can live with, as long as it keeps holding on live races.
It’s slower and less satisfying, but it’s the safeguard I wouldn’t skip, because the alternative is letting your bankroll do the testing for you. If you want the full routine, how to test a system before you bet it live goes through it in detail.
What does a system that survives look like?
The systems that last aren’t the clever ones. The builder behind them insists on a racing reason for every rule, won’t add a fifth condition just because it lifts the historic return from 12% to 18%, and doesn’t touch the held-back data.
The builder whose system fades keeps tweaking the same rules against the same data until the backtest looks beautiful. By then it isn’t evidence any more. It’s a description of what already happened, dressed up as a prediction.
In my data, the modest claims held up best and the spectacular ones fell furthest. So be most suspicious of the system that looks best on paper. Spend your time on the research. Placing the bet is the easy bit. If you want the whole process end to end, horse racing betting systems that work takes you through it in four steps.
What this doesn’t tell you
This is one dataset: UK racing from 2013 to 2026, priced at Betfair SP. It shows how often narrow rules fade on fresh data. It can’t tell you which of your own rules are noise, and a rule that survives a held-back test can still go cold. Passing makes a system less likely to be a fluke. It won’t make it a certainty.
When you have a rule you want to try, you can check it against ratings, pace and value data on today’s Race Advisor racecards. They run on the same dataset as the numbers above, so a rule that holds up on fresh races has earned a first small stake.



