Combat Sports Simulator Get started

Fight analytics engine

Run the fight ten thousand times before it happens.

A Monte Carlo simulation engine for combat sports. It plays a matchup out round by round, thousands of times over, and reports what actually happened across all of them — win probability, finish method, the round it ends, and why.

62
API endpoints
44
Data models
6
Model factors
14
Rated attributes
Matchup simulator In-page engine
Red corner
VS
Blue corner
Red KO/TKO
Blue KO/TKO
Decision
Avg finish rd
95% interval
Rounds won, by round

What the platform does

Nine surfaces, one fighter model

Every feature reads from the same fighter record — 14 rated attributes, style assignments, bout history and rating snapshots — so a valuation, a prediction and a simulation are all explaining the same underlying fighter.

Fighter comparison

Put two fighters side by side across all 14 rated attributes, with parity bands so near-equal dimensions read as even rather than as a false edge.

POST /comparisons · GET /comparisons/{id}/metrics

Outcome prediction

A weighted heuristic model scores a matchup analytically and returns the outcome distribution — plus every factor's contribution, so a call is never a black box.

POST /predictions/from-comparison/{id} · GET /predictions/{id}/factors

Monte Carlo simulation

Plays the fight out round by round across thousands of runs. Seeded runs are reproducible exactly, so a stored simulation can always be replayed.

POST /simulations · POST /simulations/ad-hoc

Cross-era matchups

Six era profiles from 1900 to now, each carrying its own training science, nutrition, glove weight, round count and testing rigour. Fighters are normalised onto common footing before they meet.

GET /simulations/eras · GET /simulations/style-matchups

Live match tracking

Open a live match, post events as they happen, and read win probability updating through the fight as a series rather than a single pre-fight number.

POST /live/matches/{id}/events · GET /live/matches/{id}/probability-series

History & ratings

Bout records feed career features and a rebuildable rating system, which in turn feeds rankings and head-to-head history for any pair of fighters.

GET /history/rankings · POST /history/ratings/rebuild

Multi-discipline profiles

A fighter carries a profile per sport, derived or projected where data is thin, with explicit coverage reporting so gaps are visible instead of silently imputed.

GET /disciplines/coverage · GET /disciplines/matchup/{a}/{b}

Valuation & market

Fighter valuations from tunable weight sets, with purse prediction and a negotiation simulator. Preview a weight set before activating it, and stream valuation changes as they land.

POST /valuations/purse-prediction · POST /valuations/negotiations/simulate

Training & calibration

Record real outcomes against past predictions, retrain a model, and read its calibration — the check on whether a stated 70% actually wins about 70% of the time.

POST /training/models/{id}/train · GET /training/runs/{id}/calibration

Inside the simulation

Six factors, applied every round

The simulator is not a coin weighted by overall rating. Each round is resolved from live output, accumulated damage and fatigue — these six factors are what move it, in the order the engine applies them.

1

Era normalization

Training science, nutrition, glove weight, championship distance and testing rigour differ by decade. Fighters are moved onto a common footing before the first bell, and the adjustment is logged rather than hidden.

2

Style clash matrix

Archetype interactions on a −1 to 1 scale: a grappler's edge on a striker, an out-boxer's on a brawler. Only one direction is stored and the reverse is negated, so the matrix cannot contradict itself.

3

Cardio decay

Fatigue compounds non-linearly with the round number, and is driven harder by the fighter's own pace and the damage they are carrying. Pressure costs more gas than patience.

4

Chin and KO hazard

A per-round finish probability that rises with the attacker's live output and with damage already banked, and falls with the defender's chin. Past a damage threshold the referee ends it as a TKO.

5

Ring IQ adaptation

From rounds 3, 6 and 9, high ring-IQ fighters re-read the fight and adjust — worth more to the fighter who is behind on the cards and therefore has to change something.

6

Bounded chaos

Multiplicative noise around every round's output and score. Combat sports are not deterministic, and a model that returns the same fight every time is lying about that.

Get access

The full dashboard

The simulator above runs a single matchup. The application adds everything that needs a database behind it — saved comparisons, stored simulations, live matches, rankings and the valuation market.

  • 01Save comparisons and replay any stored simulation by its seed
  • 02Track live matches with win probability updating round to round
  • 03Build and preview valuation weight sets before activating them
  • 04Record real outcomes and read the model's calibration over time

Accounts are not wired up yet. The API has no authentication endpoints, so these forms validate your input and then stop. Point them at a real service by setting window.CSS_CONFIG.authBase once /auth/login and /auth/register exist.

Running it locally? Open the dashboard or read the API docs.