Bayesian fair odds forevery boxing market.
spartanboxing maintains a posterior over each fighter's latent skill, power, durability, stamina, cut, wear, and style — and propagates uncertainty through within-fight stochastic dynamics into joint distributions over (winner, method, round).
14
State dim per fighter
4
Estimation passes
1s
Within-fight resolution
7+
Markets covered
The mispricing
Books quote points. Fights are distributions.
The edge in boxing isn't in picking winners. It's in owning the joint distribution over how a fight ends.
What the engine does
Built around uncertainty, not around point estimates.
Every component is a stochastic process with a posterior. Every prediction is a distribution. Every bet is sized to the model's self-assessed edge AND its self-assessed confidence.
Latent state per fighter
14-dim posterior: skill, power, durability, stamina, cut susceptibility, cumulative wear, and an 8-dim style embedding.
Two-level stochasticity
Realizations × process parameters. Both layers carry posteriors — predictive prices integrate over both, never collapsing one.
Within-fight SDE
Damage diffusion + Hawkes jumps for power-shot clustering, modeled at 1-second resolution. KO threshold is itself stochastic.
Schedule-conditioned percentiles
Pass 4 normalizes posteriors against synthetic fighters with comparable schedules — the only honest way to compare across opposition.
Population HMC
Monthly NUTS fit over the entire fighter corpus. Reparameterized splines, surrogate within-fight likelihood for tractability.
Joint output by Monte Carlo
10k forward simulations per fight produce empirical joints over (winner, method, round). Every market price marginalizes from the same simulation.
Edge with uncertainty haircut
Fractional Kelly sizing scaled by posterior credible-interval width — bets shrink when the model is uncertain, not the other way around.
Causal snapshot discipline
Every feature respects seen_at-not-event_at. Backtests can never accidentally peek at data that hadn't been entered yet.
Wear as a bridge coordinate
Within-fight damage rate IS the between-fight wear drift — same physical quantity, structurally tied. No identification ambiguity.
The four-pass loop
One canonical fit and scoring sequence.
Population baseline → per-fighter posterior → optional fighter-specific deviation → schedule-normalized comparable score. Predictions never fit anything ad hoc at request time.
Pass 1
Population HMC
Fit Θ_pop from the entire fighter corpus. NUTS, 4 chains × 1000 samples. Cadence: monthly.
Monthly · GPU hours
Pass 2
Per-fighter filter
EKF for Gaussian state coordinates, particles for jump components. Pre/post snapshots written per event.
Per fight · seconds
Pass 3
Idiosyncratic perturbation
GP perturbation per long-career fighter (≥25 fights), shrunk hierarchically. Captures what the population can't.
Quarterly · minutes
Pass 4
Schedule-conditioned percentiles
Simulate synthetic fighters with the target's schedule under Θ_pop. Report each fighter as a percentile in that distribution.
Per scheduled card · minutes
Predictive output
Joint distribution over (winner, method, round) by Monte Carlo
Each of 10k simulations samples Θ_pop from Pass 1, applies any Pass 3 perturbation, draws (x_i, x_j) from Pass 2 posteriors with Pass 4 percentiles as auxiliary inputs, and runs the within-fight SDE forward to a stoppage or decision. Every market price marginalizes from the empirical joint — they all come from one simulation, never from independent submodels.
Every market from one simulation
Marginalize, never submodel.
A 10k-path Monte Carlo against the empirical joint over (winner, method, round) is enough to price every market the book offers. No separate models for moneyline vs round-group vs go-the-distance — one source of truth, one set of credible intervals.
- Posterior intervals on every market price
- Edge calculation includes venue fee adjustment
- Fractional Kelly sized by ci_width(fair_p)
- Refused if ci_width > 25% — model knows what it doesn't know
- CLV measured against Pinnacle closing benchmark
How it works
Three steps. One engine.
Open your portal
Email + password. Instant access. The portal is the surface for every model output and pipeline state.
See the engine end-to-end
An interactive flowmap visualizes every component — ingestion, four passes, simulator, edge layer — with live status badges.
Trade with edge bands
Every market price comes with a posterior credible interval. Sizing scales by how confident the model actually is.
FAQ
Common questions.
Stop pricing winners.Start pricing distributions.
Open the portal to see the engine end-to-end — every spec component, every status badge, every chart placeholder reserved for the model.