CAGE IQ
UFC fight-night win probabilities, measured against real results. A model that publishes its forecasts before each card and is scored honestly afterwards, including the fact that it still trails the betting market.
Key Features & Outcomes
- No demo mode and no fake data: with an empty database every page shows an honest empty state; the history is 2,067 fighters, 566 events and 6,743 bouts, with counts checked against the source
- Models were tested and rejected in the open: an Elo baseline failed its own gate and boosted trees were not adopted; the deployed logistic regression scores a held-out log loss of 0.640 against 0.676 for Elo
- Measured against the market, not just a coin flip: the betting market's closing line scores 0.581, so the model is still behind it and the site says so
- A scheduled Worker collects the fight schedule, odds and results, with a quota planner to stay inside the free odds-feed allowance and a public health check that fails loudly if the scheduler stops
- Found and fixed a production outage caused by an unindexed health-check query exhausting the daily database read allowance; guarded since by a read-budget audit and indexed joins
The idea
Most fight predictions are opinions. The idea here was a model that commits to a probability before the card, then gets marked against what actually happens, so it is possible to tell whether it is any good rather than just sounding confident.
The build
A Next.js app on Cloudflare Workers reads from a D1 database of every UFC bout on record. The model is trained offline in Python and its forecasts are written to the database; the site only reads them. A scheduled Worker keeps the upcoming cards, odds and results current.
The honest part is the scoring. The first model, a simple Elo rating, beat a coin flip but not a plain win-rate baseline, so it was not deployed. The model that is live, a logistic regression, passes the same gates but still scores worse than the bookmakers' closing odds. That gap is published, not hidden.
Prospective scoring, forecasts made before the card and graded after it, starts with the 7 November event. Until enough cards have been scored, treat the numbers as an experiment, not advice. It is not a betting tool and is not affiliated with or endorsed by the UFC.