How we build, validate and score our models — the data, the methods, the thresholds, and how to check our record yourself. Everything except the secret sauce.
The same process applies to every sport. A model doesn't go live because it looks clever — it goes live because it survives being tested on data it has never seen.
Out-of-sample by time. We train on the past and test on a later period the model never saw. No shuffling, no peeking forward.
Features added one at a time. Each candidate feature is kept only if it improves out-of-sample log-loss. Ones that don't earn their keep get dropped — we've thrown plenty away.
Calibration, not just accuracy. When the model says 70%, it has to happen about 70% of the time. We check this band by band and publish the chart.
Compared against the market. Every model is scored against bookmaker/exchange prices — the toughest benchmark there is.
Threshold gating. A prediction is not a bet. Only selections clearing our published thresholds get backed. Thresholds are set by out-of-sample sweeps (choose on one half of held-out history, confirm on the other), re-run after major model changes — last swept 21 July 2026. Current football gates: Over/Under 2.5 value bets need a 12%+ modelled edge at odds 1.70+; probability bets need a 60%+ modelled chance at odds 1.70+ (BTTS probability likewise). Match-result (1X2) thresholds are unchanged — the sweep found no robustly profitable 1X2 gate, and we say so rather than pretend otherwise.
Automated retraining. Models refresh on a schedule (weekly) so ratings never go stale.
The models
What's actually under the bonnet
Different sports need different machinery. Here's what each one runs on — the methods and the feature families, if not the weights.
⚽ Football
Gradient boosting + Poisson
CatBoost (classification and regression) for match outcomes, plus a Poisson goal model driving Over/Under and Correct Score. Probabilities are Platt-calibrated.
Around 90 engineered features across 24 modules, including:
A margin-of-victory Elo with adaptive K and idle-decay (a team's rating settles as it plays, and drifts back toward average when idle), fed into CatBoost with league and country context.
Trained pre-2024, tested 2024 onward. Calibrated at every band.
🤾 Handball
Two-stage 3-way
Handball draws (5.7% of games), so a 2-way model would be wrong. We run a two-stage model: a decisive-winner model multiplied by a separate draw-probability model, giving a true home/draw/away distribution.
MOV-Elo tuned specifically for handball, plus CatBoost with league, country and gender context. Men's and women's teams are kept strictly separate.
126,968games modelled
76.5%winner accuracy
5.7%draw rate handled
🎯 Match picks
Darts · Snooker · Rugby · Esports
A shared adaptive-K Elo engine with idle-decay and, where it validates, margin-of-victory scaling — so a convincing win moves a rating more than a narrow one.
Since 22 July 2026, published probabilities blend the Elo rating with the market's opening price through a gradient-boosted calibration layer — validated out-of-sample per sport before switching, and only kept where it beat the Elo-only model on held-out data. Rugby Union remains on its own API-based ratings model.
Rugby covers Union and League with competition-aware ratings (70.7% Union / 65.1% League out-of-sample).
These are our free sports. Same discipline, simpler machinery — because the data supports one market: the winner.
📈 Systematic trading
FX · Indices · Commodities — rule-based, no discretion
Three independent systematic books (FX on 4h, Indices and Commodities on daily), each built from engineered market features and blended into one cross-asset portfolio. Fully rule-based — no human overrides.
Validation is deliberately brutal: walk-forward testing, performance required to hold across separate market eras (not just one lucky regime), and stress-tested at double the real trading costs. Strategies that only work in one era, or die under cost stress, get cut.
The books are blended because they're near-uncorrelated with each other — that's where the portfolio's stability comes from, not from any single strategy.
From prediction to bet
How a pick is chosen — and our exact thresholds
A probability isn't a bet. We run two avenues, and each has a published bar it must clear. These aren't secret — the thresholds aren't the edge, the model is.
Avenue
What it looks for
Must clear
🔥 Value (EV)
Model probability implies a bigger edge than the odds are pricing
EV ≥ 5%andmodel probability ≥ 60%
🎯 Probability
The model's highest-confidence read of the match
probability ≥ 60%andodds ≥ 1.40
Why the 60% probability floor on value bets? Without it, an "edge" on a 12%-probability longshot at odds of 11.00 passes the EV test — and that's almost always model noise, not value. We won't back it, however good the maths looks. A 60% pick's fair odds are around 1.67, so you'll never see us call an 11.00 shot a value bet.
We publish the bets we skip. Selections clearing the bar are marked PASS — those are the ones we back. Selections the model flagged but that failed a threshold are marked FAIL and are still published, with their own P&L. You can see the whole funnel, and judge for yourself whether our filter earns its place. Most services only show you what they backed.
How we score ourselves
The rules of our own record
Fixed, published stakes. Singles are £10 level; accumulators are tiered by design (Safe £10, Medium/Combos £5, Longshot £3) and every stake is recorded per bet in the ledger. No hindsight-flattering staking plans, no doubling up.
Priced at the opener. P&L is struck at the odds we flagged when the pick was published — not a better price we found later.
Every bet counts. Wins, losses, and markets that are in the red. Nothing is quietly dropped.
Calibration published. Predicted probability vs what actually happened, band by band.
Brier score vs the market. We show our score next to the market's, even when the market wins.
Closing-line value (CLV). We record the opening price and the closing price on every pick. If our picks consistently beat the closing line, that's real evidence — and if they don't, that shows too.
Voids & postponements. Settled only on a real result; void/abandoned events are removed rather than counted as wins or losses.
Data: API-Sports for fixtures, results and odds; Betfair Exchange for market prices.
Check us, don't trust us
How to verify our record yourself
A record you can't audit is just a screenshot. Ours is designed to be checked by someone trying to catch us out.
Picks are timestamped by a third party — not by us. Every pick is committed to a public GitHub repository before the event starts. Git's commit history is timestamped by GitHub and can't be quietly rewritten. You can look back through the history and see exactly what we said, and when we said it.
Full record as CSV. Every record page has a download of the complete history — date, selection, odds, stake, result, P&L — not just the last few.
Losing markets stay visible. If a market is in the red, it stays on the page in red.
The part nobody else prints
What we don't claim
We don't beat the closing line. On basketball our model correlates 0.84 with the sharp closing price but the market is still sharper by roughly 0.016 Brier. Same story in rugby and football. The closing line sees things a results-based model can't — late team news, injuries, rotation. We mirror it well; we don't beat it. Anyone telling you their model beats the close is selling something.
Esports is our weakest model, and we'll say so. Betfair's esports data carries no game label, so multi-game organisations (a club with CS2, Dota and LoL rosters) share a single rating. We've proven that limitation is unfixable with this data, so we gate out any pick that disagrees sharply with the market rather than publish something we don't stand behind.
A tracked record is not a promise. Past calibration doesn't guarantee future profit. Margins, market efficiency, model drift and sample size all bite. Never stake money you can't afford to lose.
Where we draw the line
What stays private — and why
We've told you the model families, the feature categories, the data sources, the thresholds, the staking and the scoring rules. What we keep back is the part that would let someone simply copy the work:
Trained model weights and artefacts
Hyperparameters and tuning
The exact feature engineering recipe and transformations
The training and data pipelines
That's the difference between showing our workings and handing over the answer sheet. Everything you need to judge whether the models are any good is published — the record, the calibration, the thresholds and the funnel.