Skip to main content
EducationalNot betting advice · research use only.
GameTime Picks
MethodologyReference

Where the numbers come from

paper-only · official settlement · scored against the market

The 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.

Live today
Priced

A real sportsbook price exists on both sides, so our probability can be shown next to the de-vigged market number.

Unpriced

No market price in the feed for this market. Anything we show for it stands alone, with nothing to check it against.

Not enough settled results

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.

Collect
schedule · odds · stats
Project
per-sport model
Compare
vs no-vig market
Build
risk-tiered cards
Publish
active-date only
Settle
official source
Learn
calibrate + audit

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.

MLBmarket-anchored + 10k player-prop sim
MoneylineSupported

De-vigged sportsbook moneyline. Settled from the official box score.

Run lineSupported

De-vigged run line. Settled from the official final score.

Total (O/U)Supported

De-vigged total. Settled from the official final score.

Player props (K / hits / TB)Conditional

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 score simulationExperimental

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 totalsSettlement blocked

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 (F5)Coming soon

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)

NFLexperimental 10k preseason score simulation — not product-eligible
Projected scoreExperimental

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.

Win chanceExperimental

Read from the same simulation as the projected score, so the two can never disagree. Experimental — never a validated pick.

Total pointsExperimental

Median and likely range from the same 10,000 runs, shown beside the sportsbook total for context.

Sportsbook pricesSupported

The books' own moneyline, spread and total with the margin removed, captured before kickoff and attributed. Not a GameTimePicks prediction.

Anytime touchdownSettlement blocked

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

Passing / rushing / receivingProvider needed

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

Soccermarket-implied 90' read — no live tournament right now
Match result (1X2)Supported

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).

Double chanceSupported

Derived from the de-vigged 3-way. Settled on the 90' result.

Draw no betSupported

Derived from the de-vigged 3-way. Settled on the 90' result.

Total goalsSupported

De-vigged goal total where odds exist. Settled on the 90' score.

Both teams to scoreSupported

De-vigged BTTS where odds exist. Settled on the 90' score.

Asian handicapConditional

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)

Anytime goalscorerExperimental

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

Shots / shots on target / assistsExperimental

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

Corners / cardsProvider needed

Not offered — needs a set-piece/discipline feed + settlement. On the roadmap.

Settlement: unsupported · needs: Corners/cards odds provider, match-event settlement source

Correct scoreProvider needed

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

UFCexperimental — market-implied, not product-eligible
Moneyline (winner)Experimental

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

Method of victoryExperimental

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

Round / goes the distanceProvider needed

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.25590.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 = 100 / (odds + 100)
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.

p_novig_side = p_raw_side / (p_raw_side + p_raw_other)

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.

P(over) = 1 − Φ ( (line − projection) / σ )

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

difference_pp = ( P_model − P_market_novig ) × 100

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

decimal = Π ( per-leg decimal )
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

feature_timestamp ≤ prediction_time < event_start_time

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

Official settlement only

Results settle from official league sources, never from screenshots, web snippets, or user reports.

Stale-date gating

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.

Unavailable / needs-data

When a source is missing, the page says so. It does not fabricate a formula output or fall back to an older number.

Refuse rather than guess

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.