Where the numbers come from
paper-only · official settlement · scored against the marketThe models are intentionally explainable — no deep learning, no black boxes — so the reasoning behind every projection can be checked. Every number here is paper-only and educational, never wagering advice.
A real sportsbook price exists on both sides, so our probability can be shown next to the de-vigged market number.
No market price in the feed for this market. Anything we show for it stands alone, with nothing to check it against.
Too few decided results to judge a market. It is reported and never acted on, and it never leads a page.
What this site compares
System status: Ready- · what the sportsbook market says
- · what the simulation says
- · how historical calibration changes the interpretation
- · what actually happened afterward
- Model history
- 50.14%
- 38,519 settled results, 2026-05-16 → 2026-09-05
- vs the sportsbook
- Behind
- Their no-vig price scored 0.2413; ours 0.2455 on the same 6,695 held-out results. Lower is better.
- Markets approved
- 0
- 3 need recalibration · 1 disabled on their own record
2026-07-28 withheld. Settlement was stopped by an integrity check, so no outcomes were published and no rate exists for it.
Paper-only and educational, in public beta. Nothing here is betting advice. How to read this site.
The daily workflow
The same loop runs every day, per sport. Each step fails closed — if a source is missing, the board says so rather than inventing a number.
What we simulate — and what we don’t (yet)
Every market we cover, plus the ones we don’t — with the exact reason (provider feed, settlement, or validation). We never show a market we can’t back with real data.
De-vigged sportsbook moneyline. Settled from the official box score.
De-vigged run line. Settled from the official final score.
De-vigged total. Settled from the official final score.
Strikeouts / hits / total bases projected from game logs vs the line; a 10,000-run prop sim is shown only where the artifact exists. Settled from the official box score.
Full-game outcomes are currently MARKET-IMPLIED (from the de-vigged lines), not an independent score simulation. An independent, backtested sim is on the roadmap — not claimed until validated.
Team totals can be read from odds but are not yet settlement-validated, so they stay out of product cards until grading is proven.
Settlement: pending · needs: Odds API team-total lines, team-total settlement source
First-5-innings markets are planned; they need the F5 line feed and inning-level settlement.
Settlement: pending · needs: Odds API F5 lines, F5 settlement (linescore innings 1-5)
10,000 simulations of the final score per game. Early model: on a season it had never seen it picked winners no better than a coin flip, so win percentages stay near even and it is never presented as sharper than the sportsbook price.
Read from the same simulation as the projected score, so the two can never disagree. Experimental — never a validated pick.
Median and likely range from the same 10,000 runs, shown beside the sportsbook total for context.
The books' own moneyline, spread and total with the margin removed, captured before kickoff and attributed. Not a GameTimePicks prediction.
The scoring model is calibrated, but nobody publishes preseason playing time and the books offer no touchdown market for these games — so it appears as a watchlist, never a card.
Settlement: pending · needs: current role evidence, an offered touchdown market
Withheld: no source publishes who dresses for a preseason game or how much they play, so a projection would be invented rather than measured.
Settlement: pending · needs: event-bound player availability, an offered player market
De-vigged 90-minute 3-way. Market-implied read (not an independent soccer sim). Settled on the 90' result (ET/pens do not count for 90' markets).
Derived from the de-vigged 3-way. Settled on the 90' result.
Derived from the de-vigged 3-way. Settled on the 90' result.
De-vigged goal total where odds exist. Settled on the 90' score.
De-vigged BTTS where odds exist. Settled on the 90' score.
Shown as a market read where odds exist; full product eligibility needs AH push/half-win settlement.
Settlement: pending · needs: Odds API AH lines, AH settlement (push/half-win)
LIVE as a market-implied read from real Odds API prices. Grading is built + validated deterministically on real finished-match data, but LIVE settlement is blocked — the API-Football key is a free plan with no 2026-season stats. Educational only; never in a product card until settlement runs.
Settlement: unsupported · needs: paid API-Football plan (2026 season access), lineup confirmation
LIVE as a market-implied read from real Odds API prices. Deterministic grading is built + validated on real finished-match stats; LIVE settlement is blocked by the free API-Football plan (no 2026-season access). Educational only; never product-eligible until settlement runs.
Settlement: unsupported · needs: paid API-Football plan (2026 season access), lineup confirmation
Not offered — needs a set-piece/discipline feed + settlement. On the roadmap.
Settlement: unsupported · needs: Corners/cards odds provider, match-event settlement source
Not offered — a market-implied read can't price a full scoreline grid honestly without a real model + odds.
Settlement: unsupported · needs: Correct-score odds, independent scoreline model
Market-implied winner read where odds exist. EXPERIMENTAL — excluded from Bank Builder / Moonshot until the model clears its validation threshold.
Settlement: pending · needs: Odds API MMA moneyline
An experimental fighter-data read, NOT odds-backed. Shown for education only; not a priced market and never in a product card.
Settlement: unsupported · needs: Method odds feed, fighter finish/decision data
Not offered — needs a round/distance odds feed. Never faked.
Settlement: unsupported · needs: Round & distance odds feed, round-level settlement
9 supported · 5 need a provider/build · settlement-blocked + experimental markets are never in Bank Builder / Moonshot.
How to read this site
Every figure below is read from the same file the rest of the site renders, so this explanation cannot drift from the numbers it describes.
Seven questions people ask about these numbers
Why is the calibrated estimate different from the raw one?
Because the raw model is systematically overconfident. Across 38,519 settled results it stated about 59% on average and was right 50% of the time — about 9.1 percentage points too confident.
Calibration maps those stated probabilities onto observed frequencies, so the number you see is closer to true. It does not create new predictive information. It changes how confident we sound, not what we know. The three estimates are walked through in full on Learn.
Has the model shown it can out-predict the sportsbook?
No.
On 6,695 results the calibrator never saw, calibration improved our score (Brier 0.2559 → 0.2455; lower is better). On those same rows the sportsbook’s own no-vig price scored 0.2413 — still better than ours.
That is the current state of the evidence. If it changes, it will change because a preregistered experiment showed it on held-out data, not because the wording changed.
What do the market statuses mean?
- APPROVED
- Enough settled results, calibrated probabilities, and a better score than the sportsbook on the same rows.
- MONITOR
- Too few settled results to say anything yet. Reported, never acted on.
- RECALIBRATE
- A real record exists, but our stated probabilities are not trustworthy enough to lead with.
- DISABLED
- A large sample sits entirely below break-even. The history stays visible; we make no recommendation from it.
No market is currently APPROVED. Status reflects measured historical evidence, not preference. No MLB market currently meets the APPROVED bar; a market is only DISABLED when a large sample sits entirely below break-even.
What happened to every prediction you generated?
Each one lands in exactly one of these states, and the counts add up to the number generated. Rows we cannot grade stay in the count — removing them would quietly improve every rate beside them.
- Win
- The official box score resolved above or below the line, on the side we took.
- Loss
- The official box score resolved against the side we took.
- Void
- The result landed exactly on the line, or the player never came to bat. Not a loss.
- Pending
- The event has not produced a gradable result yet. Not a loss.
- Unavailable
- The game finished but this row never produced a gradable stat. Not a loss.
- No play
- We generated no directional call here, so there is nothing to grade.
- Withheld
- Settlement was withheld because the data failed an integrity check. No outcome was published.
Why is 2026-07-28 withheld?
This slate's board was built before a data-integrity guard was in place, and two halves of a doubleheader could not be told apart. Rather than grade predictions against the wrong game, we left the date unsettled. It has no win/loss record and is excluded from every rate on this site.
We could have published something for that day. Publishing a result we know was graded against the wrong game would be worse than publishing nothing.
A withheld date is not the same as a missing one. Withheld means we produced predictions and then refused to publish outcomes for them. A date marked not produced means no slate was built at all, so there was never anything to grade. Both appear in the accounting on Results; a date is never quietly dropped from the list.
How is the paper record different from the model history?
They are two different things over two different date ranges, and we never combine them.
The paper record is a small, hand-picked set of paper selections — a few cards a day at most. The model history is every prediction the model generated — 38,519 settled rows. Neither is evidence about the other.
How do I know today's data is current?
The System Status page reports every stage of the pipeline separately, and the overall state is the worst of them — we do not average a failure away behind several successes. A stage we cannot read reports as unknown, never as working.
What is still unproven?
The model does not out-predict the sportsbook. No market meets the approval bar. Historical settled rows predate our current event-identity checks and are labelled as legacy rather than retroactively stamped with lineage they never had.
GameTimePicks is paper-only and educational. Nothing here is betting advice.
Universal math
American odds → implied probability
odds < 0 : p = |odds| / (|odds| + 100)
No-vig (two-sided) probability
Sportsbook prices include the bookmaker’s margin. When both sides are known we strip it proportionally so the two probabilities sum to 1. This is the baseline every model number on the site is scored against — and on the settled record it is the better estimate of the two.
Model probability
A player-stat market is modelled as a distribution around the projection, and the chance of clearing the line is the area of that distribution above it. The width of the distribution matters as much as its centre: understating it makes every probability look more certain than the evidence supports.
This applies to MLB, the only sport currently producing model output. UFC prices are shown as the sportsbook’s own de-vigged numbers with no model behind them.
The model–market difference
In percentage points. This is a disagreement measure, not an advantage: across the settled corpus, the largest positive differences are where the model performed worst against the market. It is computed because a disagreement is worth looking at, and nothing on the site selects a side because the difference is large.
Calibration
A stated probability is only useful if outcomes arrive at roughly the stated frequency. Calibration maps our stated probabilities onto the frequencies actually observed on earlier settled slates — the raw output has run systematically hot, so the corrected number is lower and closer to true.
Calibration changes how confident we sound, not what we know. It is fitted on earlier slates and scored on results it never saw, and the raw number is kept alongside it rather than overwritten. Full walkthrough on Learn.
Data-quality grade
A per-market grade for how complete the inputs were. It describes the data, not the answer: an A-grade projection is not more likely to be right, it is only better evidenced.
- A — current price + full stats + confirmed event
- B — current price + partial stats
- C — no price to read against, or stale-limited but explainable
- unavailable — cannot project; shown as needs-data rather than estimated
Parlay odds + paper return
paper_return = stake × decimal (null if any leg lacks a price)
A combined price is never shown if any leg is missing odds — the slip reads “—” rather than a fabricated payout.
Multiplying legs also multiplies exposure to a shared result — concentration risk. The first settled UFC slate made that concrete: the individual moneylines graded 6–1 while every multi-leg card lost, 0–4, because each card was anchored on the same favourite and he was upset. A slip that repeats one anchor across every card stakes all of them on a single outcome, however well the legs grade on their own.
What a prediction is allowed to use
Every input has to exist before the event starts. That sounds obvious and is the single easiest way for a backtest to flatter itself, so it is enforced rather than assumed.
The prediction-time rule
We never use final scores, box scores, an unconfirmed lineup, rolling averages that include the event being predicted, or a price captured after the prediction was made. Each prediction records the timestamps of the data behind it and is checked against this rule; a prediction that fails the check is not published.
Confidence is not probability
Probability is how likely an outcome is. Confidence is how much the projection can be trusted — driven by data freshness, sample size, and whether a critical input is missing at all. They move independently: a 70% probability built on three games is not the same claim as a 70% probability built on three hundred.
On the measured record our highest-confidence groupings have not been our most accurate, which is why nothing on the site is ordered by confidence.
Missing and thin data is shown, not defaulted
If a feed is missing, stale or thin, the page says so rather than quietly substituting a default. Historical features carry their sample size and are weighted down accordingly, and a market with too few settled results is reported without being acted on.
By sport — what is actually modelled
One sport has a live model. The rest are either history we keep readable or a market price shown as a market price. Nothing below is described in the present tense unless it is producing output today.
MLB
live model · player props + game markets- Inputs
- Schedule and game logs from the official MLB Stats API; player-prop and game-market prices captured from the odds provider (batter hits, batter total bases, pitcher strikeouts, moneyline, run line, totals).
- Model
- Each stat is modelled as a distribution around a projection built from recent-form and season windows, then converted to P(over) against the posted line. Simulated game outcomes come from those same projections. Stated probabilities are then calibrated against earlier settled slates.
- Markets
- Read side by side with the de-vigged sportsbook price. A market whose own settled record sits below break-even has its predictions switched off and keeps only its history.
- Card rules
- Only markets with a real two-sided price are placed beside a market comparison; the rest are labelled as having no price to read against.
- Settlement
- Official MLB Stats API box scores. If the event mapping fails an integrity check, the whole slate is withheld rather than partially graded.
- Limitations
- No park, weather, bullpen-fatigue or handedness-split inputs. On the settled record the model does not out-score the de-vigged market price in any market.
NBA
history only · nothing new is produced- Inputs
- Player game logs and prop prices captured while the model was running.
- Model
- The projection model that produced this history is no longer run. Nothing is being generated, graded or published for NBA.
- Markets
- None currently. The archived player-prop record remains readable.
- Card rules
- None.
- Settlement
- The historical record was settled from official box scores at the time.
- Limitations
- Frozen. A record that stops updating is a record of the past, and it is labelled as one wherever it appears — it says nothing about today.
UFC / MMA
market-implied only · no fight model- Inputs
- Moneyline prices from the odds provider.
- Model
- There is no fight model. The probability shown is the posted price with the margin removed — the sportsbook's number, presented as theirs.
- Markets
- Moneyline only. Method, round and distance markets are not covered at all.
- Card rules
- None.
- Settlement
- Official finals; a bout that cannot be matched to a result is left ungraded rather than guessed.
- Limitations
- No settled record exists against which any UFC number here could be judged.
Soccer / World Cup
closed · archive only- Inputs
- Prices and fixtures captured during the 2026 tournament.
- Model
- Match-winner probabilities were de-vigged market prices with recent form attached. Nothing is being produced now.
- Markets
- None. The tournament archive stays readable as a record of what was published at the time.
- Card rules
- None.
- Settlement
- Official final score, regulation 90 minutes only — extra time and penalties never counted toward a 90-minute market.
- Limitations
- Closed as a destination. It is kept for the record, not offered as a product.
Data integrity
Results settle from official league sources, never from screenshots, web snippets, or user reports.
A past slate is never presented under today's heading. When today's data does not exist, the page says so and names the slate it is actually showing.
When a source is missing, the page says so. It does not fabricate a formula output or fall back to an older number.
A slate whose event mapping fails an integrity check is withheld entirely — no partial grading, no rate, and it stays visible in the accounting with the reason.
Standing limitations
- The market is still the better estimate. Scored on identical settled results, the de-vigged sportsbook price beats our probabilities. Nothing here has been shown to out-predict it, and a disagreement between the two is not evidence that we are right.
- One sport is live. MLB is the only sport producing model output. NBA is frozen history, UFC is a market price with no model behind it, and soccer is closed.
- Lines move. Boards reflect prices as captured, with the capture time shown. By the time you read them, prices have likely shifted, and there is no retained snapshot series to chart movement from.
- Missing context inputs. Park factor, weather, bullpen fatigue and handedness splits are not modelled for MLB.
- Some markets are switched off. Where a market's own settled record sits entirely below break-even across a large sample, predictions in it are disabled. The history stays visible and is never placed in a ranked or difference-ordered list.
- Legacy rows are labelled, not restamped. Settled results that predate the current event-identity checks are labelled legacy rather than retroactively stamped with lineage they never had.
