Methodology

How the verdict was built

This is the archived methodology for the retired rules model. Each verdict was the sum of small probability shifts — each one a measurable, named factor with a published track record. No black box, no proprietary secret sauce. Every number on this page is recomputable from the public data and the open-source edges.js module that runs in your browser.

ArchiveThis page documents a model that is no longer part of the product. Until September 2026 Cannon Fight Lab published a win-probability forecast for every fight. We tested whether that forecast beat the price the market was offering, could not show that it did, and took it off the public product rather than keep publishing it with a disclaimer. Nothing here was deleted — the engine still runs and is still graded in the open, wins and losses at the same size, because a failed test is the one result a research site must not quietly remove. The live product is now Card Lab and Market Lab.
Model update — July 19, 2026

One engine, two faces

The rebuild promised below has shipped. CFL's picks now come from a single audited engine that trains strictly walk-forward: to predict any fight, it may only use what was knowable before that fight, and an automated leakage audit has to pass before anything publishes. The engine reads fighter history, per-fight statistics (strikes, takedowns, control, knockdowns), and physical attributes — height, reach, stance, age — and never a betting line.

It has two faces. Fight IQ is the calibrated winner probability for every fight: 61.6% straight-up across 3,288 fights it never trained on, with its highest-confidence Locks at 74.7%. Value compares that number to the vig-free market price and flags a bet only at 4+ points of disagreement. Because both are one brain, they can never contradict themselves.

The honest context stays on the label: just backing the closing favourite runs about 68%, so Fight IQ loses to Vegas — on purpose. A model within seven points of the market without ever looking at the market is a model you can trust to be independent of it. The v1–v6 experiments keep their archived records on the Proof Center.

Model update — July 14, 2026

The audit that audited the audit

The May 2026 subset test had a flaw of its own. It scored each factor using fighters' career-to-date records — but a fighter's record contains the result of the very fight being predicted. "Record: 75.5% when it fires" was hindsight. Measured the honest way — using only what was knowable before each fight — the record factor drops to 61.9%.

So we re-measured every factor against roughly 8,700 historical fights, two ways: raw, and on evenly-priced fights alone — only the fights where both men were priced within ±140 at close, so no factor gets credit for simply agreeing with the favourite. The result is blunt. Age survives: the younger fighter still wins about 57% of the fights the market priced as even. Reach, takedown defence, and striking volume all collapse to roughly a coin flip once the odds are level — most of what they "knew" was just repeating the favourite. Updated August 2026: this paragraph used to name UFC record as a second survivor. It was measured on a smoothed win rate, which pulls both fighters toward .500 and tightened the confidence range enough to clear the bar. Measured on the raw record — the one you can read off a fight card — it is still the strongest thing in the uncontrolled number at 62.9%, but on the couple of hundred evenly-priced fights it fires on, the range around it still crosses a coin flip. So we no longer call it a survivor. Corrected 18 September 2026: that August conclusion was drawn from a short sample. The script that builds these figures was reading its betting-odds rows by position without fixing their order, so it silently skipped some and counted others twice; the pool of evenly-priced fights it could see was about 1,220 but it was working from 869. Re-run correctly, the raw UFC record gap does clear the bar — about 58% across the evenly-priced fights it fires on. That is the plain UFC win–loss gap, and it is not the record factor this page's engine uses. The engine's version reads each fighter's whole professional career and smooths it; tested the same way, that one lands on a coin flip and we are not claiming otherwise. Two different measurements that share a word. Current figures are always in the Factor Lab.

To be precise about what shipped and what didn't: the engine (the July 2026 rebuild above) is live and audited. The separate fight-card verdict on this page's factor system still runs the May 2026 three-factor logic while we rebuild it on point-in-time data. Until that ships, treat verdict confidence as provisional.

The full numbers are in the Factor Lab — its table is measured against the database and republished when we review a new run, so every figure on it is one somebody has checked.

Model update — May 17, 2026

Why the verdict shrank from ten edges to three

The May 16 Allen vs Costa card was the worst single result in the model's track record: 2 of 10 committed picks. We audited the verdict logic the next day. The finding was uncomfortable but clear.

Of the ten edge factors, seven sat at 52–57% per-fire accuracy — close enough to a coin flip that they were behaving like correlated noise in the Bayesian combiner. A 53% factor doesn't add information; it adds confidence theatre. When several stacked on the wrong side of an upset, they outvoted what looked at the time like the genuinely predictive signals: Record, Cardio and Takedown Defense, all measuring 60%+ per-fire.

Read that last number with the July and August 2026 updates above in mind. Those 60%+ figures came from the same hindsight-biased test as everything else in this section. Cardio was re-measured honestly in August 2026 and retired — it picks winners 50.2% of the time. Two factors still fire, Record and TD Defense. Both have since been re-measured point-in-time, and neither shows a signal of its own once the betting line is held flat: the Record factor here — whole-career professional, smoothed — lands on a coin flip, and TD Defense sits right on it. Corrected 18 September 2026: the Factor Lab now reports a genuine result for UFC record, and that is a different measurement from this one — plain UFC win–loss off the card, not smoothed career professional. It is not evidence for the factor described here, which remains unsupported.

At the time, we tested every subset of the ten factors against 8,533 historical fights (research/subset-test.js):

Superseded July 2026 — measured with hindsight; see update above
Accuracy by edge subset
All ten edges: 65.8% on 8,367 predictions
Drop the two noisiest (age, stance/reach): 67.5%
Top 3 only (Record, Cardio, TD Defense): 68.4% ← shipped
Record alone (when it fires): 75.5% — strongest single signal
These subset numbers used career-to-date records — hindsight. The record factor's honest point-in-time number is 61.9%. See the July 14, 2026 update above.

Superseded July 2026 — measured with hindsight; see update above
Calibration improved alongside accuracy. The 70–75% confidence band hit 82.9% accuracy before the change and 92.7% after. About 20% of fights now show "no edge" rather than a confident pick — those are genuine toss-ups where the prior model was gambling and losing.

Every pick committed before May 17 reflects the older ten-edge model. We don't retroactively re-grade — the track record is the track record. Cards from May 17 onward use the new three-edge model.

The unit

What an edge factor is

An edge is a single piece of statistical evidence that nudges the verdict toward one fighter or the other. Each factor outputs three things: who it favors, by how much (a percentage between 50% and 78%), and a one-line reason that you can read on the fight card.

Most fights have 3–5 factors firing. Fewer than 2 is rare; more than 6 is rare. If no factor fires, the verdict explicitly says "even matchup" rather than guessing — the model refuses to predict where it has no signal.

The toolkit

The factors we measure

Every factor below is implemented in the public edges.js file. Active factors drive the current verdict. Retired factors are kept documented for transparency — they were dropped May 17, 2026 after the subset audit showed they were diluting the verdict more than informing it.

Corrected 21 October 2026 — what the ranges below are worth once the price is level

Short version: the two factors still marked Active don't hold up. Age, which we retired, partly does. The Range column is what each factor claimed to be worth. We left those numbers up, because a claim that failed stays on the page. We then checked each one on the only fights where it could show something of its own: fights the market priced as roughly even, both fighters inside ±140 at close. If a factor only "works" when the betting favourite also has it, it was repeating the favourite, not reading the fight.

  • Record — not supported. Claimed 60–72%. On evenly-priced fights the fighter with the better record won 50.2% of the time — a coin flip. The 60% and 65% tiers sit above the whole range we measured for them. The 70% and 72% tiers come up too rarely on even fights to test at all. This is the record this page's engine uses: each fighter's whole professional career, smoothed. It is not the UFC-only record in the Factor Lab, which is a different measurement and does clear a coin flip. That result says nothing about this one, which remains unsupported.
  • TD defense — not supported. Claimed 52–56%. Every band landed between 48.6% and 52.2% on evenly-priced fights, and none clears a coin flip. The top band, the one claiming 56%, came in lowest of the three. The "when grappling is in play" check made no measurable difference.
  • Age — supported, partly. Claimed 52–70%, retired May 17. The younger fighter won 56.8% of 1,018 evenly-priced fights, and the range around that clears a coin flip. The 3–4 and 7–9 year gaps clear it on their own; 1–2 and 5–6 lean that way but can't be told apart from a coin flip yet; the 10+ year tier, which claimed 65.2%, has too few even fights to test. The discount for newer fighters isn't backed by anything we measured.

Age stays retired anyway. This test asks whether age tells you something on its own. It does not ask whether age adds anything the engine doesn't already see — the engine already reads each fighter's age. Putting it back would need its own test, written down before it is run. Nothing on this page is a pick, and nothing here says otherwise.

Numbers in this note are a fixed snapshot from a study run on 18 September 2026 against 8,739 past fights, 1,220 of them evenly priced. They will not move when the data refreshes. Live factor results are in the Factor Lab.

Show the band-by-band numbers
Factor · bandClaimedEvenly-priced fightsWon95% range
Record · gap 8–15 pts60.0%33949.9%44.6–55.1%
Record · gap 15–25 pts65.0%10547.6%38.3–57.1%
Record · gap 25–40 pts70.0%2070.0%too few to test
Record · gap 40+ pts72.0%0—never fired on an even fight
Record · any gap60–72%46450.2%45.7–54.7%
TD defense · gap 10–2052.5%16450.6%43.0–58.2%
TD defense · gap 20–3054.0%11552.2%43.1–61.1%
TD defense · gap 30+56.0%13948.9%40.8–57.1%
TD defense · any gap52–56%41850.5%45.7–55.2%
Age · 1–2 yrs52.0%35755.2%50.0–60.3%
Age · 3–4 yrs55.9%27557.5%51.5–63.2%
Age · 5–6 yrs58.2%19756.3%49.4–63.1%
Age · 7–9 yrs63.3%14260.6%52.3–68.2%
Age · 10+ yrs65.2%4755.3%too few to test
Age · any gap52–70%1,01856.8%53.7–59.8%

"Evenly priced" means both fighters closed inside ±140. Every fighter's stats are taken as they stood before each fight, never from career totals that include the result. A band needs 100 evenly-priced fights before we call it tested either way. The takedown rows use the "grappling is in play" check; dropping the check moves every band by less than a point, which is where the 48.6% low comes from (top band, no check). The age claims shown are the original tiers; the page's two surviving records disagree about which age tiers shipped last, and every band where they differ is in the too-few-to-test rows. Full study: research/factors/FACTOR_EVIDENCE_2026-09-18.md.

FactorTriggers whenRangeStatus
Record
Pro W-L gap (Laplace-smoothed)
Adjusted win-rate gap of at least 8 percentage points between the two fightersCorrected 21 October 2026: on evenly-priced fights it is a coin flip. Whole-career professional record, smoothed — not the Factor Lab's UFC-only record. See the correction above. 60–72%Claimed. Measured on even fights: 50.2% Active
Not supported
Cardio
Late-round output sustain
Was: cardio tier gap of 3+. Re-tested point-in-time on market-even fights it picks winners 50.2% of the time — a coin flip. It predicts fight length, not the winner. See cardio methodology. 50% Retired Aug 19
TD defense
Takedown defense %
10+ percentage-point gap in takedown defense, when grappling is in playCorrected 21 October 2026: no band clears a coin flip on evenly-priced fights. See the correction above. 52–56%Claimed. Measured on even fights: 48.6–52.2% Active
Not supported
Age
Years younger
1+ year age gap. Newcomer-discounted at gap < 9 when either fighter has <5 UFC fights.Corrected 21 October 2026: the younger fighter wins more than half of evenly-priced fights, so this one partly holds up. It stays retired — that is a different question. See the correction above. 52–70%Claimed. Measured on even fights: 56.8% of 1,018 Retired May 17
Supported, partly
Win streak
Current consecutive wins
One fighter on a 2+ win streak that's longer than the opponent's 53–63% Retired May 17
Loss streak
Opponent on a skid
One fighter on a 2+ loss streak — fades the colder fighter 53–60% Retired May 17
Post-loss
Layoff after a loss
Asymmetric post-loss state with 6+ months of rust 52–58% Retired May 17
Stance + reach
Striking geometry
Mixed stances (southpaw vs orthodox) and/or 2"+ reach gap, when striking is in play 52–57% Retired May 17
Strikes/min
SLpM differential
1.0+ strikes/min gap, when at least one fighter strikes meaningfully 52–55% Retired May 17
TD accuracy
Takedown finish %
15+ percentage-point gap in takedown accuracy, when grappling is in play 52–56% Retired May 17
The math

How factors combine into a verdict

Each firing factor pushes the prior probability up or down using a Bayesian odds update. A single 60% edge raises the prior from 50% to 60%; two independent 60% edges raise it to roughly 69%, not 70%, because the second update is anchored to an already-shifted prior.

Per-factor update
prior × factor_pct ÷ ( prior × factor_pct + (1 − prior) × (1 − factor_pct) )
Applied iteratively across every firing factor, starting from a 50/50 prior.

Then a hard cap is applied: the verdict can never exceed the strongest single factor by more than 6 percentage points, and is bounded at 78% on top. This prevents stacked-edges runaway — ten weak edges shouldn't claim 95% confidence in a UFC fight where the floor of randomness is roughly 25%.

Track record

What we measured against the full UFC history

The validation script in research/validate.js simulates every edge.js verdict against every decided UFC fight in the database. Headline numbers from the May 17 rebuild run:

Superseded July 2026 — measured with hindsight; see update above
Overall accuracy
68.4% correct on 6,655 historical predictions
The new model abstains on ~20% of fights (no Record, Cardio, or TD-defense edge fires) rather than guess. The remaining 6,655 are where the model has genuine signal — and on those it lifts +2.6 percentage points over the old ten-edge version (65.8% → 68.4%).

Calibration check: in a well-calibrated model, predictions at confidence X% should win X% of the time. Here's what that May validation found:

Superseded July 2026 — measured with hindsight; see update above
Predicted confidenceActual win rateFights in band
50–55%55.9%1,952
55–60%64.7%1,614
60–65%72.7%1,676
65–70%81.6%1,008
70–75%92.7%399
75%+100.0%6

Every confidence band landed inside or above its predicted range in that run — but the July 14, 2026 audit showed the run itself was flattered by hindsight (career-to-date stats scored against past fights). Treat these bands as an upper bound, not a promise, until the point-in-time rebuild ships.

How we tune

A concrete example: the age recalibration

The age factor used to assign 55.9% to fighters with a 3–4 year age advantage. We extended the validation script to compute the actual historical win rate at every integer age gap among veteran fighters (5+ UFC fights on both sides), where the data is cleanest. The result:

Age gap → actual younger-fighter win rate (veterans only)
Gap 1–2 yrs: ~52% · model said 52% — on
Gap 3–4 yrs: ~59% · model said 55.9% — undersold
Gap 5–6 yrs: ~57% · model said 58.2% — slightly oversold
Gap 7–9 yrs: ~64% · model said 63.3% — on
Gap 10–11 yrs: ~62% · model said 65.2% — oversold
Gap 12+ yrs: ~70% · model said 65.2% — undersold
Source: research/validate.js. Veterans-only because newcomer fights are noisier (older newcomers often have more regional experience and outperform their age gap).

We shipped new tiers that match the measured rates. The newcomer discount used to apply uniformly; it now only fires at gap < 9 years because the data shows newcomer fights with 9+ year age gaps actually have higher win rates for the younger fighter, not lower. The age edge function is open in edges.js — every line of the recalibration is reviewable.

Corrected 21 October 2026: the last sentence above is no longer true. Age was retired from the verdict on May 17, 2026 and its function has since been removed from edges.js; we could not recover the exact version that last shipped. Two records survive and they disagree: one lists the original tiers (52 / 55.9 / 58.2 / 63.3 / 65.2%), and this section describes recalibrated ones. We are saying so rather than picking one. On evenly-priced fights the bands where the two versions differ most — the 10+ year gaps — come up too rarely to test either way. See the correction in the factor table.

This is what "open methodology" means in practice. Factors aren't tuned to vibes; they're tuned to the database, the tuning process is documented in code, and the validation rerun confirms the change improved calibration.

Honest limitations

What this model can't do

Validation uses current career stats on historical fights

When we score the model against a 2018 fight, we use the fighters' current career averages — not their stats as they existed in 2018. That introduces a measurable hindsight bias. Year-over-year accuracy in the validation report drifts higher for recent years, confirming the effect. Real fair-replay accuracy is lower than the headline numbers above — the July 14, 2026 update at the top of this page quantifies the gap, and the Factor Lab now measures every factor point-in-time. We flag this prominently in research/results.md.

Streak edges were silently broken for months

The win-streak / loss-streak / post-loss factors are listed in edges.js, but a data-shape mismatch meant they returned null on every fight in production until we found it. We fixed the bug and ran validation again. We mention this because "we found and fixed it" is the right framing for a working methodology, not "our model is flawless."

MMA has an irreducible floor of randomness

Roughly a quarter of UFC fights are won by the statistical underdog. No model — ours, the betting market's, or anyone else's — will ever predict more than ~75% of fights correctly. Anything claiming 90%+ accuracy on a meaningful sample is wrong or overfit.

Past performance is not a guarantee

Backtests on 8,000+ historical fights describe the past — and as the July 14, 2026 update shows, even the backtest can flatter itself. Nothing here tells you any individual upcoming fight will go the way the model predicts. Read the verdict alongside the matchup story. Stats for entertainment purposes only. 1-800-GAMBLER.