18+ • Bet Responsibly • Racing Alpha does not accept betsBeGambleAware.org
RacingAlpha
← All posts
16 July 2026 · 4 min read·Racing Alpha

We audited our own ledger. It was too harsh on itself.

Two weeks ago we published a post about being £130 down and promised the ledger stays up whatever it says. Today it says something we didn't expect: our settlement code was docking us points we never lost.

The bug

When a horse is withdrawn before the off — a non-runner — every bookmaker in Britain settles that bet as void: stake returned, nobody wins, nobody loses. Our settlement code didn't know that. It compared each pick against the race winner, and if they didn't match, it scored a loss. A pick whose horse never left the stable was treated exactly like a pick that finished last.

An independent code audit caught it this week. We verified it against the raw result data, and it's real: 18 picks across our two models were settled as −1 losses when the horse never ran.

Every affected pick

No summary statistics without receipts. These are all 18, oldest first — each was previously scored −1 and is now void at 0:

Date Course Horse Model
27 May Wexford Tiger Twins v1.1 (ML shadow)
28 May Limerick Rizedda v1.1 (ML shadow)
11 Jun Worcester Belcamo v1.0 (public card)
13 Jun Uttoxeter Onehundredneighty v1.0 (public card)
15 Jun Kilbeggan Fr Gilligansvoyge v1.0 (public card)
16 Jun Stratford Backer Bilk v1.0 (public card)
16 Jun Stratford Backer Bilk v1.1 (ML shadow)
1 Jul Worcester Newport v1.0 (public card)
7 Jul Uttoxeter Colinski v1.1 (ML shadow)
10 Jul Kilbeggan Lumiere Du Large v1.0 (public card)
10 Jul Kilbeggan High Notions v1.0 (public card)
10 Jul Worcester Little Ledgend v1.0 (public card)
10 Jul Worcester Alderley Charlie v1.1 (ML shadow)
10 Jul Worcester Estacas v1.1 (ML shadow)
11 Jul Limerick Deluca Chop v1.0 (public card)
13 Jul Lingfield Night Shining v1.1 (ML shadow)
13 Jul Lingfield Split Elevens v1.0 (public card)
13 Jul Lingfield Graffiti v1.0 (public card)

The corrected record

Under standard settlement rules, as of 16 July 2026:

  • v1.0 (the public card): −40.1 points over 184 settled picks — 27 winners, 14.7% strike at an average price of 6.91. Previously shown as −51.1 over 195: eleven of those "losses" were non-runners.
  • v1.1 (the ML shadow): −2.9 points over 139 settled picks — 21 winners, 15.1% strike. Previously −9.9 over 146.

Let's be clear about what this correction is not: it is not the model turning out to be secretly profitable. −40.1 points is still a losing record — around 1.2 standard deviations below breakeven on the ±34-point luck band, which remains consistent with bad luck and consistent with a small negative edge, flattering to neither. The ledger runs to 19 May 2027 and gets its full autopsy whatever it says. All of that stands.

But an honest ledger has to be honest in both directions. We built this site on the promise that we'd publish numbers that hurt us; it turns out we were publishing numbers that hurt us incorrectly, and the fix moves the record 11 points in our favour. If we'd quietly shipped that without a post, every screenshot of "−£511" against a new "−£401" would look like tampering. So: here's the diff, here's the reason, and the old posts stay up with a note.

The engineering fix (so it can't drift again)

The root cause wasn't one bad line — it was that six different parts of the site each re-derived win/lose/points independently, with three different opinions about voids. The homepage badge, the head-to-head dashboard, the auto-blog, the daily email and the ledger pages could in principle all disagree.

As of today there is exactly one settlement module, with the bookmaker rulebook in it (non-runner → void, abandoned → void, win → advised − 1, lose → −1). Results are settled once, when the result syncs, stored against the pick, and every page reads the stored value. The settlement rules are unit-tested, including the non-runner case that caused all this.

One caveat we've made before and will keep making: our headline CLV figure (+17.7%) compares our advised price — the best of ~31 bookmakers — against the SP, which is closer to an industry average. That structurally flatters anyone who shops prices, including us. A like-for-like CLV measure is on the roadmap and will be published alongside the old one.

What's next

Later this week: both models' ledgers published side by side, with a pre-registered promotion rule — written down in advance, so if the ML shadow keeps outperforming the public card, the handover happens by a rule we can't fudge after the fact, not by a quiet swap. That's the next post.


18+. Please gamble responsibly — BeGambleAware.org. Past performance — corrected or otherwise — does not predict future results. This post is information, not betting advice.

#transparency#correction#methodology#performance