Sign in
Documentation

Methodology

How the model works, what data it eats, how it is validated, and where it breaks. No black box, no "proprietary algorithm" — every input is auditable on this site.

1. Data sources

All numbers below come from this site's own database — read live via the counts API.

Historical fights (cross-promotion)
0
UFC per-round stat rows
0
Bouts with closing odds
0
Promotions tracked
0
Events archived
0
Fighters indexed
0
  • Sherdog 0 fighter-result rows

    Primary historical record across UFC, Bellator, PFL, ONE, Strikeforce, Pride, WEC, and 25+ regional promotions. Used to build cross-promotion Elo.

  • UFC Stats (official) 0 per-round stat rows

    Significant strikes, takedowns, control time, knockdowns, submission attempts — per round, per fighter. Powers Win Probability, Method Classifier, and Defense pages.

  • BestFightOdds + fightodds.io 0 bouts with closing odds

    Open/close lines plus a consensus across 8–14 books. Used for devigging, CLV tracking, and the live market column on /picks.

  • MMA Decisions 0 judge scorecards

    Per-round per-judge scoring. Backs Judging Forensics and the per-judge fingerprint pages.

  • Wikipedia + Tapology 0 fighter records

    Bios, images, nationality, reach, gym affiliation. Wikipedia 30-day pageviews drive the Popularity index.

2. Model architecture

Cross-promotion Elo is the spine. Every historical fight in the database — UFC plus seven major outside-UFC promotions — updates a shared rating pool. All fighters share one ladder, which means a Bellator champion who joins the UFC already has an opponent-adjusted rating from day one.

for each historical fight (chronological):
  ra, rb  = rating[A], rating[B]
  ea      = 1 / (1 + 10^((rb − ra) / 400))
  sa      = 1 if A won, 0 if A lost, 0.5 if draw
  rating[A] = ra + K * (sa − ea)
  rating[B] = rb + K * ((1 − sa) − (1 − ea))

# Parameters (locked, not fit per-fighter)
K    = 24
INIT = 1500   # every newcomer starts here

Win probability for an upcoming bout is the standard Elo expected score using the two fighters' current ratings. Finish mix (KO / SUB / DEC) is a probability-weighted blend of each fighter's career finish profile — KO wins / wins, SUB wins / wins, DEC wins / wins. Method-classifier and round-level work for the analytics pages use different empirical models that are documented on each page.

3. Features used

  • ·Cross-promotion Elo and peak Elo (career ceiling)
  • ·Career record: fights, wins, losses, draws
  • ·Finish mix: KO/SUB/DEC wins as % of total wins
  • ·Loss profile: KO/SUB/DEC losses as % of total losses
  • ·Last fight date (recency / inactivity flag)
  • ·Live consensus market odds (when available, per bout)
  • ·Historical closing-line implied probability (career CLV)

Deliberately not used today: physical attributes (reach, age, height), camp, short-notice flag, weight-cut history. They show up on the Analytics pages as standalone studies but are not yet wired into the headline pick model — that's on the changelog.

4. Validation

Source of truth: closing line value. Hitting bets at the closing line beats book hold over a long sample, which is the only validation metric that survives variance. Per-pick accuracy and ROI roll up on the Model Record and Pick ROI pages, both with full receipts.

  • Brier score — mean squared error between model probability and actual outcome. Lower is better; the reliability curve on Model Record shows where the model is over- or under-confident.
  • Paper-trade backtest — every locked pick is graded as a flat 1-unit bet at the closing line. ROI vs market is the headline number.
  • No leakage — the Elo ratings used to score a fight only include bouts that took place before that fight's date. Forward-looking stats never touch the training set.

5. Live calibration

A model that says "70%" should win about 70 out of 100 such picks over time. This chart is built live from every graded pick in the database, bucketed by the probability the model assigned at lock time. Perfect calibration would put every bar exactly on the diagonal.

Computing live calibration…

6. Known limitations

  • ·Style mismatches are not encoded. Elo treats two opponents as equivalent if their rating is equal — a wrestle-grinder vs an elite striker may have a very different real edge than the rating gap suggests.
  • ·Short-notice fights get no penalty. A fighter who took the bout on 5 days' notice is rated identically to one with a 10-week camp.
  • ·Pre-2010 control-time data is missing for many bouts; some Analytics pages (round dynamics, control bias) are restricted to post-2010 fights.
  • ·Women's division coverage is thinner than men's pre-2014. The Women's Parity audit page tracks the gap.
  • ·Defense metrics rely on what the opponent did, not on frame-level video analysis. Slipped strikes are not measurable from box-score data.
  • ·Inactive fighters keep their last rating forever — no Elo decay for layoff. A returning veteran may be over-rated by the model.

7. Changelog

  • 2026-05-19Inline model probability on every upcoming bout row. "Why the model leans X" block on every pick (top 3 ranked drivers from the FighterModel features).
  • 2026-05-18Auto-generate fight previews cron at /api/public/hooks/auto-generate-previews. Sidebar restructured into Predict / Events / Fighters / Analytics groups.
  • 2026-05-17Server-computed "Biggest Edge" hero strip on /this-weekend. Paper-trade backtest published on homepage.
  • 2026-05-16Cross-promotion Elo extended to 7 promotions (UFC, Bellator, PFL+WSOF, ONE, Strikeforce, Pride, WEC). 17,952 fighter-result rows joined into one rating pool.
  • 2026-05-15Initial Elo build, finish-method classifier, judging forensics, scorecard imports, market-edge analytics shipped.
Everything on this page describes the model as it exists today. Predictions are decision support, not betting advice — verify before acting. The model is wrong all the time; the only honest claim is that it is wrong less often than the books on a measurable set of fights, and only sometimes.