01Read the market
The betting line is the starting point. It is the sharpest public number there is.
p = 100 / (
odds + 100)
underdog, odds above 0
p = |
odds| / (|
odds| + 100)
favorite, odds below 0
p1′ =
p1 / (
p1 +
p2)
remove the bookmaker's margin so both sides sum to 100%
Worked example
Fighter A -20066.7%
Fighter B +17037.0%
Adds up to103.7%
Fair line64.3% / 35.7%
With no sportsbook line we use Kalshi's exchange price the same way.
02Rate the fighters
Every UFC fight since 1994 feeds one rating. Beating good fighters counts more than beating weak ones.
EA = 1 / (1 + 10
(RB − RA) / 400)
expected chance A beats B
RA′ =
RA +
K · (
S −
EA)
S is 1 for a win, 0 for a loss
Start at 1500K = 2440 under 5 UFC fights×1.2 for a finish
03Two AIs make the call
Claude and GPT get the same file on every bout and pick independently.
In
UFCStats career numbersLast 5 fights and layoffElo ratingsMarket lineLine movementFight-week news with sources
Out
WinnerWin chance, 50 to 90%KO, sub or decision splitKey factors
61.5%when both agree, 569 fights
72.5%double locks, both 75%+, 51 fights
04Anchor to the market
The models are good, the market is better. So the stored confidence leans on the market. The pick itself never changes.
logit(
p) = 0.3 · logit(
pmodel) + 0.7 · logit(
pmarket)
logit(p) = ln(p / (1 − p))
shown = max(50%,
p)
a pick the market dislikes shows as a coin flip
Brier score on 121 priced bouts. Lower is better.
05Grade every pick
Right or wrong is not enough. We score how honest each number was.
Brier = (1/
n) Σ (
p −
o)
2p is the stated chance, o is 1 if the pick won; always saying 50% scores 0.250
60.5%Claude right, 703 fights
57.4%GPT right, 751 fights
Market score is on the 121 bouts with a stored line.
ClaudeGPTPerfect
Below the dashed line means overconfident. Dot size is sample size.
06Price a trade
A Kalshi contract pays $1 if the pick wins. It is only worth buying above break-even.
fee = 0.07 ·
P · (1 −
P)
per contract, P = price in dollars
break-even = P + fee
EV =
p −
P − fee
per $1 contract, p = true win chance
f = (
p ·
b − (1 −
p)) /
b,
b = (1 −
P) /
PKelly stake; edge sizing bets a fraction of this
What the record says
Model picks the favorite
Won68%
Price paid67%
102 picks
Model picks the underdog
Won37%
Price paid39%
19 picks
Gold tick is the price paid. Past results are small samples, not a promise.
Research lab: audited walk-forward results
No proven trading edge. Use paper tracking while collecting timestamped prices, fills and actual fees.
| Model | Bouts | Brier | Market |
|---|
| Sportsbook benchmark | 53 | 0.246 | 0.246 |
| Market + strongly shrunk model signals | 53 | 0.246 | 0.246 |
| Market + model signals | 53 | 0.248 | 0.246 |
| Market + lightly shrunk model signals | 53 | 0.249 | 0.246 |
| Model chosen using earlier events only | 53 | 0.246 | 0.246 |
| Stats model, untouched test set | Brier | Accuracy |
|---|
| logistic_C0.1 | 0.239 | 58.0% |
| logistic_C1 | 0.239 | 58.0% |
| forest | 0.239 | 59.0% |
| boosting | 0.240 | 58.0% |
| elo | 0.246 | 55.0% |
Trained on earlier cards only, tested on the next one. Updated 2026-11-04T02:57:13.363Z.
Prediction accuracy, sportsbook simulations and real Kalshi trades are tracked separately. See the record