Four movements, in order, for every bout on every MMA card — how PropsLock, the PropsMath forecast model, builds an MMA read. The inputs are public, the process is fixed, and the output is graded where you can see it. Follow one real, resolved bout down the right-hand rail as it assembles.
01
Compile
Market-implied probabilities from sportsbooks and prediction exchanges, career metrics from fighter history, and crowd tendencies — every public signal on every fighter, gathered before the fight. The strongest available market line anchors the read.
Daniil Donchenko: market anchor 67
02
Read
The signals blend into a single calibrated PropsLock probability per outcome, weighted market-first. When the fundamentals disagree with the market, the divergence is flagged — never buried inside the number. PropsLock stays anchored to the market by design and can lean away from it by at most ±0.5 in log-odds — about 12 percentage points on a 50/50 line, and less as the market gets more lopsided. So where it agrees with the market, that agreement is a structural feature of the method, not a coincidence.
The read: 73% Daniil Donchenko · +5pp vs market
03
Lock
Every read is timestamped and written to a permanent record before the event, and never edited afterward. The PropsLock read exists on the record before the first bell — that is the entire point.
Written to the record · Aug 29, 4:12 PM PDT
04
Learn
Each read is scored against the actual outcome, fight by fight, event by event. The rolling calibration record is public — including every miss — and feeds back into the next card's weighting.
Daniil Donchenko — called
Not every bout gets a graded call.
Signal quality gates the MMA verdict. A bout with thin data gets a smaller claim — or, when neither source is usable, no graded call at all.
Full
Market line and fighter-history stats both present. Full read available.
Partial
One source is missing. The read leans on less, and the claim shrinks accordingly.
No read
Neither the market line nor usable fighter-history stats were available. The bout is shown, but no call is graded.
College football
The CFB read is market-anchored and calibrated.
College football forecasts cover the weekly FBS moneyline slate. The market consensus for each game is the per-side median implied probability across sportsbooks quoting both sides, devigged so each pair sums to one.
The model probability is that consensus passed through a calibration map fitted on the 2021–2022 seasons and selected on 2023. Richer team-strength challengers — point-in-time Elo, rolling form, talent and recruiting composites — were fitted under a selection rule registered before any challenger number existed, and none beat the market on the held-out selection year. The launch map is the identity: where the market is already well calibrated, the honest correction is none.
The map was evaluated exactly once on the held-out 2025 season — 864 games: expected calibration error 1.7%, reliability slope 1.12, inside every pre-registered gate. Every CFB read is written to the same permanent record before kickoff and graded after the final, the same way every MMA read is.
No narrative research lanes run for CFB at launch — the read is the calibrated market consensus, stated plainly.
Some games are never quoted two ways. When one side is an overwhelming favorite, sportsbooks may post no moneyline at all — and a game with no market used to be passed over entirely.
Those games now get a read of their own. A committed team-strength artifact — point-in-time Elo, recent scoring margin, and how much history each program actually has — produces a winner probability without any market input, and the read is published only when it clears a confidence threshold fixed in advance by a held-out evaluation. Below that threshold the game is still passed, and says so.
A model-only read is a different fact from a market-anchored one, and the record treats it that way. It is graded on the winner like every other read and counts toward the called-and-graded tally; it is excluded from every number that compares the model against the market — pooled Brier score, reliability bins, and the model-versus-market comparison — because there is no market on it to compare against. No market figure is ever shown on one.
On held-out 2024–2025 games in the served band — raw model probability at or above 85% — the strength model's stated probabilities ran a measured 3 to 7 points below its winner accuracy: underconfident, in the conservative direction. Since 2026-09-04, every displayed and recorded no-line probability carries the same fixed calibration shift of +0.47 on the log-odds scale, fitted inside the same held-out evaluation that opened the band and versioned with the model artifact. That evaluation also fitted a tighter map for reads at or above 90%, with its own shift of +0.50; the artifact carries that map for a per-band serving mode that is not yet in use, and until it is, no displayed number uses it. Each pick's rationale states the raw strength read beside the calibrated figure, no displayed probability ever reaches 100%, and the public record grades the calibrated number — the one we display.
Some games carry a point spread but no two-way moneyline — the market will price the margin when it will not price the winner outright.
Those games get a read from the spread itself. One published relationship, fitted on past seasons and fixed in advance, converts a consensus spread into a win probability: the wider the spread, the further the probability sits from even. The consensus spread is the median across the sportsbooks quoting both sides of it, and the read is published only when at least two books do.
This read is market-derived, and the record treats it that way. It is graded on the winner and it enters the calibration numbers alongside every other market-anchored read, because there really is a market behind it. It is excluded from the return figures — there is no moneyline price on the game, so there was never a price to have used.
These probabilities are capped at 99.5%, and the other side of the game carries the remaining 0.5% so the pair still sums to one. At the published relationship's fitted width the cap starts to bind at a spread of about 39 points; below that the figure is the relationship's own output, unchanged. The record grades the capped number — the one shown.
How the relationship was checked, and on what: it was fitted on the 2021–2023 seasons, its width selected against 2024, and then evaluated once on games priced with a spread and no moneyline — the same class it serves. That evaluation was planned for the 2025 season alone; 2025 held only 70 such games, below the 300 fixed in advance, so before the check was re-run the population was widened to the pooled 2021–2025 games of that class — 591 of them, 144 from seasons the fit never saw. The pass marks were not moved: expected calibration error 1.8% against a 4.5% limit, reliability slope 0.99 inside a 0.70–1.30 band. Three of those five seasons' games were inside the fitting window, which is the known cost of pooling and is stated here rather than left to be inferred. The 2025 games alone, reported and not used as the gate, came in at 1.2% calibration error.
Receipts · verify a locked read
Every read carries a hash you can recompute.
A receipt is a SHA-256 fingerprint of a read's locked figures. When a forecast is written, PropsLock serializes that read — the market and model probabilities, the edge, the price, the tier, the model version, the timestamp, and a random nonce — into one exact block of text and hashes it. The hash is stored beside the read and published on the record before the card, while the result is still unknown.
What state a read is in is stated on its own line. Before its card starts, a read shows the time its figures were last set and that it locks at card start. Once the card has started, a read whose figures were set beforehand shows the time it locked. A read first recorded after the card began — a replacement bout — says so, and never claims the lock. A read with no card start on file states its timestamp and claims nothing more. A read that predates the mechanism shows no hash at all.
To check one yourself: open a graded card's receipts, expand a read's payload, and hash those exact bytes — shasum -a 256 will do it. Compare the result with the hash printed beside the read. The nonce is what makes the pre-card hash safe to publish while the figures are still withheld: without it, a low-entropy read could simply be guessed from its hash.
Each card also carries a manifest — one hash over the sorted list of its locked reads, with their count. A per-read hash proves a read was not edited. The manifest is what proves none was removed.
Here is what this does and does not prove, stated plainly. A hash we store in our own database proves nothing against us on its own; we could compute it whenever we liked. What makes it evidence is that it is published before the outcome, on a public page, in a form anyone can recompute — so a reader, a competitor, or the Internet Archive can record the commitment while the result is unknown and check it afterwards. We are not anchoring these hashes to any external timestamping service today, so the claim is exactly that and no more: we publish commitments before the card, recomputably, and invite the record.
The v1 payload is these fields, in this order, one per line:
sport
event_id
market
outcome
tier
model_probability
market_implied_probability
edge
best_price_american
best_price_sportsbook
kelly_fraction
model_version
locked_at
nonce
Receipts begin 2026-08-06. Reads locked before then may not carry one, and none is ever added after the fact.