How the model works
Every probability on this site comes from one model, retrained on 9,623 UFC bouts. Last trained Nov 10, 2026.
1. A rating for every fighter
Each fighter carries an Elo rating that moves after every UFC bout. Beat someone rated higher and you gain more; lose to someone rated lower and you drop more. We tuned it for MMA: a finish moves ratings 1.25× as much as a clear decision, a split or majority decision only 0.6×, newcomers' ratings move faster while we learn about them, and long layoffs pull a rating back toward average.
2. The matchup
The rating gap is combined with a handful of things Elo doesn't see: experience, recent form, ring rust, age, reach, finishing power and durability. The weights are learned from past fights using only information available before each one, and we don't allow nonsense directions — more reach can never count against you, however noisy the data.
On top of that sits a small, capped adjustment from career striking and grappling numbers, because they include fights the training data “hasn't seen yet” and would otherwise flatter the backtest.
3. How it ends
For the method, we look at how each fighter usually wins and how the opponent usually loses, shrunk toward UFC-wide base rates so a 3–0 prospect with three knockouts isn't treated as a guaranteed finisher.
How well it works
Trained on fights from Mar 10, 1994 to Dec 15, 2023, then scored on the 1409 fights that followed (Jan 12, 2024 – Nov 7, 2026). Log loss and Brier score measure how good the probabilities are, not just the picks — lower is better.
| Approach | Winners picked | Log loss | Brier |
|---|---|---|---|
| MMA ProTips model | 61.5% | 0.652 | 0.230 |
| Coin flip | 50.0% | 0.693 | 0.250 |
| More UFC fights | 43.8% | 0.737 | 0.271 |
| Better UFC win % | 59.9% | 0.672 | 0.239 |
| Elo only | 58.5% | 0.667 | 0.237 |
Method of victory, given the right winner: 51.7% correct over 1749 fights.
Calibration
When the model makes someone a 70% favorite, do they win about 70% of the time? Bar is the actual win rate; the tick is what the model predicted.
Weights
Change in log-odds per unit. A zero means the data didn't support it.
| Elo gap (per 100 points) | +0.468 |
| Avoiding stoppage losses | +0.274 |
| Years past 32 (per 3 years) | -0.208 |
| Years since last fight | -0.136 |
| Reach gap (per 4 inches) | +0.128 |
| Age gap (per 5 years) | -0.072 |
| Results over the last three fights | +0.020 |
| UFC experience (log of fights) | 0.000 |
| Share of wins by stoppage | 0.000 |
Tested, not used
Each retrain tries these extra inputs one at a time. One only stays if it makes the probabilities better on fights held back from training. These didn't, so the model leaves them out.
- Strength of schedule (avg opponent Elo)
- First-round finish rate
- Round 3+ finish rate
- Avoiding KO losses
- UFC win rate
- Fights in the last two years
- Southpaw vs orthodox
- Height gap
- Head-to-head history
- Five-round and title-fight experience
What it can't see
- Weight cuts, injuries, camp changes and short-notice replacements.
- Anything before a fighter's UFC debut — debutants start at an average rating.
- Betting markets. Once we add odds, you'll see where we disagree with the bookmakers.
How the picks are made
The win probabilities on every fight come from the site model above. The picks are something else. “Our pick” on a fight, and the write-up under it, comes from my own external model (I'm Greg Spencer): about 43 parameters per fighter, built on the same framework I use for my Dota 2 predictions, followed by a final read of the matchup.
Here is everything it looks at:
Striking
- Significant strikes landed per minute (SLpM) and absorbed per minute (SApM)
- Damage differential (SLpM minus SApM), one of the strongest single signals
- Striking accuracy and striking defense
- Knockdown rate
- Head / body / leg breakdowns and target-specific accuracy and defense
- Distance vs clinch vs ground strike distribution
Grappling
- Takedowns per 15 minutes, takedown accuracy and takedown defense
- Submission attempts
- Control time, on average and per takedown
- Ground-and-pound and positional advances
- Share of fight time spent standing vs on the ground
Finishing and durability
- Finish rate (KO/TKO and submission share of wins)
- How a fighter loses: vulnerability to KO vs submission
- Round 1 finish rate (early aggression)
- Round 3+ finish rate (cardio and damage accumulation)
Endurance
- Output drop-off from round to round
- Late-round finish rate
Record and experience
- Overall record and win rate, UFC and pro
- Number of UFC fights and total pro fights
- Championship experience and title-fight history
Form and activity
- Current streak and win rate over the last 3–5 fights
- Days since the last fight and activity rate
- Recent-form weighted versions of every rate (career and recent blend)
Opposition
- Elo rating of each fighter and the gap between them
- Strength of schedule: average opponent Elo and win rate
- Opponent-adjusted performance: striking and grappling rates weighted by who they came against
- Head-to-head history, when it exists
Physicals and format
- Age and age gap
- Height and reach, as differences and ratios
- Stance and stance matchup (orthodox vs southpaw)
- Weight class, catchweight and title fights
- Short-notice replacements and confirmed three- or five-round format
Matchup
- Style edges: how one fighter's strengths map onto the other's weaknesses, striking and grappling
- A-minus-B differential versions of almost every metric above
Context
- News, sentiment and expert consensus, used as a light check
Why the two sometimes disagree: the site model only uses what it can test honestly against past fights, which rules out career stats that include later bouts. My model uses those numbers, the round-by-round and control-time data, and judgment. When my pick goes against the site model's favorite, it's marked “Against the model”.
Both are graded in public. Every pick is locked before the card starts, with the model's number frozen next to it, and the track record shows our record next to the model's on the same fights.