- Bankroll
- $1000.00
- Today
- +0.00
- Risk
- 0.0%
- Open
- 0
- 7-day
- +0.00
What the model is actually based on.
A complete, honest list of every input that drives a probability number on this site — and what we deliberately don't use. Read it; if you don't buy our methodology, don't buy our edges.
Data inputs
Match results
multi-sport result feedsHistorical scores, league tables, fixture metadata. The Elo engine consumes these the moment they settle. Football covers top-7 European leagues + UEFA competitions; NBA covers regular season + playoffs since 2008; tennis covers ATP/WTA tour matches with surface tags.
Recent form
last 5 matches per teamW/L/D outcome, goals/points for and against, home or away. Fed into a form-strength feature alongside Elo.
Head-to-head
last 5 H2H, surface-aware for tennisDirect meetings between the two competitors. Lower weight than Elo because samples are small, but we surface them so you can sanity-check.
Rest days
schedule densityDays since each side's last match. NBA back-to-back and European-tournament fatigue effects are sport-tuned.
Home advantage
league-specific factorEmpirically estimated home-court / home-pitch lift per league. Folded into the rating diff before the logistic.
Player rosters + box scores
NBA onlyPer-player minutes, points, rebounds, assists, threes, PRA for the last N games. Drives NBA player-prop normal distributions.
Market odds
multi-book aggregator · sharpest preferredBest price per market across 8 books, vig stripped via de-vigging. The sharpest book's line is treated as the consensus market probability we beat or lose to.
News context
grounded-search LLMPer-team summary, named injuries with impact level, named suspensions, lineup notes, form notes, and the sources cited. See it on the Newsroom. Cached per match, regenerated when an analysis is rerun.
The model, per sport
Football · 1X2
logistic on Elo + form + restLogistic regression takes the Elo diff, recent-form gap, rest differential, and home-advantage factor. Output is a calibrated win/draw/away triple.
Football · scorelines + derivatives
bivariate Poisson on team xGRecent xG-for and xG-against per team feed two correlated Poisson rates. The full score grid is integrated to derive BTTS, totals (over/under 1.5/2.5/3.5), Asian handicap, clean sheet, win-to-nil, and HT/FT.
NBA · moneyline + totals
normal distribution on team ratesEach team's recent points-for / points-against are fitted to a normal distribution; difference + sum drive moneyline, spread (team_totals featured market), and game O/U.
NBA · player props
per-player normal pricingPoints / rebounds / assists / threes / PRA each get a mean+std fit from the player's last N games (starter or bench filtered). Over/under model probability is the integral past the line.
Tennis · match win
surface-aware EloSurface-specific Elo (hard/clay/grass) feeds a logistic output. Best-of-3 vs best-of-5 differs because long matches converge to favourite.
Calibration
Platt scaling on graded historyRaw model probabilities are stretched/compressed against the actual hit rate at each confidence bucket — see the calibration plot. The number we publish is the calibrated number, not the raw model number.
Edge calculation
- 01Pull every book's posted price for the market.
8 books fetched from our multi-book aggregator. We track who's quoting and how stale.
- 02Strip the vig.
Two-sided markets are divided by the sum of their implied probabilities to back out the no-vig fair line.
- 03Compare model probability to fair market probability.
Edge % = (model_prob − market_prob) / market_prob. Positive = model thinks the price is mispriced in our favour.
- 04Apply the +EV threshold.
Below ~3%, the edge is dominated by model noise. We tag those as 'fair'. Between 3–6% is mainline; above 6% is an outlier we surface in the ribbon ticker.
- 05Suggest a stake via fractional Kelly.
Quarter-Kelly by default (75% lower variance than full Kelly with very small ROI cost). Slider on every match page.
What we deliberately don't do
No proprietary 'inside info'
Every input is documented above. If we don't list it, the model doesn't see it.
No tipster mode
We publish probabilities and edge, not picks. You decide what to back. Our P&L is your P&L, graded on the same scorecard you see.
No survivorship bias
Every analysis we generate is graded — wins and losses both visible on /accuracy. We never delete a bad call.
No affiliate-bias incentive
We are not affiliated with any sportsbook. Best-price highlighting is purely a function of the posted lines, not a kickback.
What's not at full strength yet
- Asian handicap ladder is mostly model-only.
Our odds provider gives one handicap line per match on the current tier; the full ladder is generated by the model so you can read across, but only the lines books actually post show real prices + edge.
- Corners + cards markets are partial.
These markets cost more credits than our current odds provider tier covers efficiently. A secondary provider is integrated and activates as soon as that key is set.
- Player props for football aren't priced.
We model 1X2, BTTS, totals, AH, corners and cards — but not player-level shots/goals/assists. NBA has player props. Football player props are on the roadmap.
- Closing-line value (CLV) is data-blocked, not code-blocked.
The closing-line capture pipeline runs daily; CLV math reads it live. The landing hero shows 'unavailable' until ~30 picks have closing odds captured — never a backtest figure. The number lights up automatically as Phase 1 paper-trading accumulates.
- News context can lag during high-volume days.
Our news provider has a daily call cap and will return empty rather than risk overrun. When that happens, the news block on a match page falls back to 'no context available' — the model still runs without the news features.
If something on this list isn't how you'd want a model built, tell us. The methodology gets sharper because real users push on it.