How the SharpXI model works
By Adam
No black box: this page walks a single bet-builder leg all the way from raw match data to a ranked edge. It's the long version — the homepage has the three-step gist and the guides take the ideas one at a time. Stay if you like knowing why.
1. A recency-weighted base rate
For each player and market we compute a per-90 rate from that player's historical matches in every league we cover, weighting recent games more heavily (an exponential half-life). A player who moves between leagues keeps that history — recent form carries across a transfer. 4 full seasons of data per league underpin every rate (the season in progress adds to that as it is played); everything league-relative (the opponent factor, positional priors, recalibration) is computed within the player's league, so a defence is rated against its own league, not a blend.
2. Shrinkage for small samples
A player with three matches shouldn't dominate the model. We shrink each rate toward a positional prior using empirical-Bayes — the fewer the minutes, the more the estimate leans on what players in that position typically do. This is why every pick carries a sample size.
3. Context adjustments
- Opponent — how much the opposition concede (for shots) or draw/commit fouls (for fouls), relative to the league average.
- Home or away — for shots, shots on target, saves and fouls committed, the expected count is scaled for where the match is played, using the gap we measured between home and away games. Where we measured no reliable gap, nothing is applied.
- Referee — for cards, the official is often the single biggest, most mispriced factor. We use each referee's card tendency.
- Minutes & role — the rate is scaled by projected minutes; lineup risk widens the confidence.
- Derby / match context — a modest multiplier where it's warranted. The subjective stuff a model can't see (must-win pressure) is never faked into the numbers.
4. The right distribution per market
- Counts (shots, fouls) — a Negative Binomial, which handles the over-dispersion real player data shows; Poisson as a fallback. We take P(count ≥ line).
- Cards — a Poisson booking model for P(at least one card).
- Team & match goals — a Dixon-Coles bivariate-Poisson fit on team expected goals (xG), capturing attack, defence, home advantage and the low-score correlation.
5. Removing the bookmaker's margin (de-vig)
A bookmaker's price includes their margin, so the naïve implied probability is inflated — and it inflates longshots most (the favourite–longshot bias). Because player bets are longshots, this matters more here than almost anywhere. We de-vig with Shin's method wherever a market is priced on both sides — and that is the catch: player markets are quoted one side only, so there is no second price to strip the margin against, and the edge we show on a player leg is measured against the price as offered, margin included. We mark those legs raw rather than guessing a margin, because a guessed de-vig manufactures edge that isn't there. Where both sides do exist — match goals — the de-vig runs and the margin is measurable: we have recorded it at roughly 1% on the exchange, 4–5% at Pinnacle and 8% at the softest book.
6. Calibration — grading ourselves honestly
Each market is re-calibrated with isotonic regression, fit on a temporal-train split and only kept if it beats the raw model on a held-out set — no self-grading. 3+ saves is our weakest market and we say so; more data is the fix, and we keep adding it. You don't have to take our word for any of this: the track record shows predicted vs. observed rates and Brier skill for every market, out of sample.
7. Edge, confidence and staking
The headline number is edge = our probability × decimal price − 1. Alongside it sits a confidence rating built from sample size, referee-table maturity and lineup certainty. For staking we surface a fractional (¼) Kelly figure — a discipline, not an instruction.
Why closing-line value? Short-run profit is noisy and bookmakers limit winners. The honest scoreboard is whether our prices beat the closing line over time. Every leg is a hypothesis with a probability — not a guarantee.
One caveat on completeness: every method on this page is named and public, but the tuning — the half-lives, the shrinkage strengths, the factor weightings — stays ours. The methods are published; the tuning is the edge.
Data: player and team statistics are sourced from public match data; bookmaker prices are entered per leg. SharpXI is an analytics tool, not a betting operator.