Methodology · how a read is built

How a read is built.

Four movements, in order — how PropsLock, the PropsMath forecast model, builds an MMA read. The inputs are public, the process is fixed, and we grade counted reads in public. 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 — the public signals it can reach on each fighter. The strongest available market line anchors the read.

Gamid Khizriev: market anchor 93

02

Read

The signals blend into one calibrated PropsLock read 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: 89% Gamid Khizriev · -4pp vs market

03

Lock

Every read on the record is timestamped. PropsLock is built to read before the event starts — that is the entire point. A counted read stays on the record as it was published. An MMA read first recorded after its card’s recorded start time is shown as “recorded mid-card, not counted” and left out of every tally. A college football read first recorded after kickoff is counted like any other.

Written to the record · Oct 10, 10:19 PM PDT

04

Learn

We score counted reads against the actual outcome, fight by fight, event by event. The rolling calibration record is public, misses included.

Gamid Khizriev — called

What information was available for an MMA read?

These labels describe available inputs, not confidence, accuracy, or a guarantee that a forecast will be graded. The record states separately whether a read was counted and why.

Market and stats

A market probability and a usable fighter-stat comparison were available. The winner probability starts from the market; available fighter history, research, and crowd signals can adjust it within the model’s limits. This label does not promise complete history for both fighters.

One source available

With a market but no usable stat comparison, the read still starts from the market. With stats but no market, it uses the stat-based estimate. Missing a source does not automatically mean a smaller probability, and a read without a market has no market comparison.

Neither source available

Without a market or usable stat comparison, a qualifying research signal may still produce a direction-only lean. When recorded as a model-only forecast, its eligible winner result counts toward accuracy, but never market comparisons. Otherwise the entry is an insufficient-data placeholder and counts toward neither. Draws, no contests, retired reads, and MMA reads first recorded after the card’s recorded start are not counted as correct or missed.

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 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. CFB reads go on the same public record as MMA reads, and we grade counted CFB reads after the final, the same way.

No narrative research lanes run for CFB at launch — the read is the calibrated market consensus, stated plainly.

A separate team-strength selection, where published, is a direction only. This selection family did not improve on the market baseline in prior evaluation; the market percentage is not confidence in that selection. Matchup briefs show only the recorded dated inputs and contributions, with missing evidence stated explicitly.

PropsLock's own college football ratings follow one rule: last season's results may count only through Week 3 of a season, with Week 0 counted as part of the first week. From Week 4 on — in 2026, every game from Tuesday, September 22 — a PropsLock selection may rest only on the current season's results. College rosters change too much from one year to the next for last season to stand in for this one.

This season's ratings are rebuilt each Tuesday from the season's completed games. Every FBS team starts the season level and FCS opponents are rated as one group, so nothing carries over from an earlier season. PropsLock selects a side only when each FBS team in the game has played at least three games this season, at least one against an FBS opponent, and its results connect it to the rest of the FBS field; otherwise the game shows no selection and says why. These selections are published as a direction only: their probabilities have not yet passed a held-out check under this rule.

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.

Earlier in the 2026 season, games with no two-way market could get a model-only read: a winner probability from a committed team-strength rating — point-in-time Elo, recent scoring margin, and how much history each program had — published only when it cleared a confidence threshold fixed in advance by a held-out evaluation. That rating was built from earlier seasons' results, so under the rule above it serves no game from Week 4 of 2026 on, and no model-only probability is published until a current-season rating passes the same kind of check.

A model-only read is a different fact from a market-anchored one, and the record treats it that way. We grade a counted model-only read on the winner, the same way as any other counted read, and it 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% — that rating's stated probabilities ran a measured 3 to 7 points below its winner accuracy: underconfident, in the conservative direction. So from 2026-09-04, each displayed and recorded no-line probability carried a fixed calibration shift on the log-odds scale (+0.47; the same evaluation also fitted +0.50 for reads at or above 90%), versioned with the model artifact, and each read's rationale names the raw strength read and the shift applied. No displayed probability reached 100%, and the public record grades the calibrated number — the one we displayed.

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. We grade a counted spread-implied read on the winner. 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

Receipts help readers check the record.

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. A card's receipts page shows the hashes of its market-anchored reads; a model-only read's hash is listed only in the card's manifest, and only if the read was hashed before the card's scheduled start time.

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.

Open a graded card's receipts and expand a read's payload to see what the hash covers. It shows the exact bytes the hash was taken over, except five lines the public page withholds — the card's internal ID, the best available price, the sportsbook that offered it, the Kelly fraction, and the nonce — each marked [withheld]. The hash still covers their real values, exactly as it covers every line that is shown. The card's internal ID is withheld because on some cards it is another website's address. The nonce is what keeps a hash from giving its figures away: without it, a figure with few possible values could simply be guessed from the hash. That is why it is withheld whenever the price, the sportsbook and the Kelly fraction are. With these five lines withheld, a read's hash cannot be recomputed from the page.

Each card with receipts recorded before its scheduled start also carries a manifest — one fingerprint over the sorted list of those receipts, with their count. Changing a covered figure changes its receipt; removing a listed receipt changes the manifest. Comparing an independently saved earlier copy with the current one can reveal those changes.

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, so a reader, a competitor, or the Internet Archive can record the commitment while the result is unknown. Until its card starts, a read's hash is its current receipt: an update before the card starts gives the read a new one, and from card start it is fixed. So a hash recorded once the card has started can be checked later against the one still shown. A read with no card start on file can take a new receipt until it grades or closes. Because five lines are withheld from the public payload, a reader cannot recompute a read's hash from the page. The page prints a read's payload only after our server has recomputed that hash from the stored figures and found it matches, and that check is one a reader has to take on trust. The card manifest, built only from the published hashes, any reader can still check. 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 and invite the record.

New MMA reads with admitted saved fighter inputs may use receipt version 2. It also commits to a dated evidence snapshot through a separate SHA-256 digest bound to the same random nonce. The public payload shows that digest, not the private snapshot or calculation details. The paid brief shows the saved fighter measurements and their coverage. Older version-1 receipts remain unchanged and do not commit to those measurements; no newer evidence is added to a locked read.

Version 1 contains these fields, in this order, one per line. Version 2 retains them and adds an analysis_snapshot_sha256 line:

  1. sport
  2. event_id
  3. market
  4. outcome
  5. tier
  6. model_probability
  7. market_implied_probability
  8. edge
  9. best_price_american
  10. best_price_sportsbook
  11. kelly_fraction
  12. model_version
  13. locked_at
  14. nonce

Receipts begin 2026-08-06. Reads locked before then may not carry one, and none is ever added after the fact.

PropsMath is an analytics tool, not a sportsbook. We do not facilitate or place bets. Questions about methodology: methodology@propsmath.com.