EducationalNot betting advice · research use only.
GameTime Picks
Methodology · transparent by designReference

How GameTimePicks builds projections

paper-only · odds-backed + model-only · official settlement

Transparency over performance. The models are intentionally explainable — no deep learning, no black boxes — so the reasoning behind every projection is auditable. Every number here is paper-only and educational, never wagering advice.

Latest legacy pipeline run · 16 days ago
Odds-backed

A real sportsbook price exists. The projection is compared to the de-vigged market and is eligible for suggested cards.

Model-only

No market price in the feed (e.g. UFC method/round props). Shown for insight, clearly labeled, and never priced into a parlay.

Validation-stage

A new sport stays validation-stage until the model is graded against real settled results with a no-leakage backtest.

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

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 vig. When both sides are known we strip it proportionally so the two probabilities sum to 1 — the fair market baseline a model edge is measured against.

p_novig_side = p_raw_side / (p_raw_side + p_raw_other)

Model probability

Continuous markets (NBA/MLB player stats) model the stat as a normal distribution at the projection; soccer uses Poisson goal expectations; UFC blends the market baseline with a small, capped fighter-stats adjustment.

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

Edge

edge_pp = ( P_model − P_market_novig ) × 100

In percentage points. The lean is the side with positive edge. A large edge is one input, not a verdict — oversized edges often signal overprojection and are capped, not celebrated.

Composite confidence

Confidence is not the model probability. It blends edge, data completeness, sample size, source freshness, and market agreement, then buckets the result.

  • watchlist · model-only or thin/contrarian signal
  • lean → standard → strong · rising composite score on odds-backed legs
  • high-risk value · longshot · positive-EV but low win probability

Data-quality grade

  • A — current odds + full stats + confirmed event
  • B — current odds + partial stats
  • C — model-only / stale-limited but explainable
  • D — below the paid-card threshold
  • unavailable — cannot project; shown as needs-data

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.

Prediction framework (v1)

A leakage-aware, opportunity-first framework across MLB, NBA, UFC, and the World Cup. Every feature must be available before the event starts; projections never look more certain than the data supports.

The engine is live: it extracts each sport into the same pipeline (leakage validation → confidence → risk → eligibility), then builds suggested parlays by sport and risk level on the Parlay Lab. Sports with no qualified candidates say so honestly. The dual Bank Builder is shown as a dry-run preview only — a new ladder is launched solely by an operator, never automatically.

Feature hierarchy — opportunity first

The same priority order applies to every sport:

Availability → Opportunity → Role → Matchup → Efficiency → Context → Market → Uncertainty → Validation

Opportunity first, role second, matchup third, efficiency fourth, context fifth. Market is optional but powerful. Head-to-head history is last and heavily downweighted by sample size.

Prediction-time rule (no leakage)

feature_timestamp ≤ prediction_time < event_start_time

Features use only information available before the event. We never use final scores, box scores, an unconfirmed lineup/XI, fight results, rolling averages that include the target event, or closing odds captured after the prediction. Each prediction stores its feature, market, lineup, injury, and weather snapshot times and is validated against this rule.

Confidence ≠ probability · risk score

Probability is how likely a pick hits. Confidence is how much we trust the projection — driven by data freshness, role certainty, sample size, and model/market agreement (a missing critical input forces No Bet). A separate risk score flags fragility: small sample, stale data, DNP/scratch risk, volatile market, fragile single-player props, and over-correlation.

Missing / stale / sample-size honesty

If a feed is missing, stale, small-sample, or not yet built, we expose it — a flag, a lower confidence, a higher risk — rather than a quiet default. Historical and matchup features carry a sample-size bucket (0 · 1–5 · 6–15 · 16–30 · 31+) and are downweighted accordingly. Each defined feature also carries an implementation status (implemented · partial · planned · not available).

Bank Builder V2 — survival over outcome

Bank Builder uses a stricter survival score than Parlay Lab: only lower-variance, high-data-quality, confirmed-role legs across independent games. It can decline a winning-looking pick — e.g. a moneyline favorite is more fragile than the same team's double-chance or draw-no-bet, which cover the draw. Survival is judged before kickoff, not by the result. Suspended/postponed games are no-action (void) for the original slate, and a hitter prop with no plate appearance voids (DNP) — never a loss.

By sport

UFC / MMA

moneyline V1 · validation-stage
Inputs
Moneyline (h2h) odds from The Odds API MMA; fighter record, recent win rate, finish rate, sig-strikes & takedowns per round, reach, experience from a UFCStats dataset; per-bout data-quality.
Model
Market-implied baseline + a small, capped fighter-stats adjustment, shrunk toward the market when data is thin. Public eligibility requires a no-leakage backtest and data-quality ≥ B.
Markets
Odds-backed: moneyline. Model-only (no feed odds): goes-the-distance, total rounds, method — shown for insight, not parlay eligible.
Card rules
Concentration-aware: one favorite cannot anchor every card; longshots must carry a distinct thesis.
Settlement
Official ESPN MMA finals (status final only); KO/sub method graded only when present in the feed, else needs-review.
Limitations
Small-sample sport; no prop-odds feed; no licensed fighter-image source (initials avatars).

MLB

player props + game markets
Inputs
Schedule + game logs (MLB Stats API); prop odds (DK/FD via The Odds API): batter hits / total bases, pitcher strikeouts.
Model
Pitcher K: 0.55·last3 + 0.45·season, σ floored. Batter: 0.5·last10 + 0.5·season. P(over) via normal CDF. Conservative by design; oversized edges are flagged and capped.
Markets
Odds-backed: batter hits, total bases, pitcher strikeouts. Others default to insufficient-data.
Card rules
Odds-backed legs only; lower-variance vs longshot lanes separated; same-game over-correlation flagged.
Settlement
Official MLB Stats API boxscores.
Limitations
No park / weather / bullpen-fatigue / handedness-split inputs yet (roadmap).

NBA

player props
Inputs
Player game logs (official source); prop odds; home/away splits; recent-form windows.
Model
proj = 0.45·last5 + 0.35·last10 + 0.20·season + 0.30·(split − base); P(over) via normal CDF; anomaly guardrails cap implausible edges.
Markets
Odds-backed: PTS / REB / AST player props.
Card rules
Confidence + edge thresholds per risk profile; max legs per game; anomaly exclusion on lower-variance lanes.
Settlement
Official boxscore (manual override → league API → ESPN → stats-unavailable).
Limitations
No minutes / rest / back-to-back adjustment yet. Off-season shows no-slate, never stale finals as active.

World Cup / Soccer

odds-backed + recent form
Inputs
PRICES from The Odds API (soccer_fifa_world_cup): 3-way moneyline, totals, double chance, BTTS, draw-no-bet. STATS from API-Football: recent form (last-5 across all competitions), group/standings, lineups, and settlement (final scores).
Model
Two providers: The Odds API supplies the odds → de-vigged market-implied probabilities (3-way for moneyline/double chance); API-Football attaches real recent form + group. A full Poisson team-strength model follows once enough WC matches are played (season stats are thin this early).
Markets
Odds-backed: match winner (3-way, Draw is a real outcome), totals, double chance (real book odds), BTTS, draw-no-bet. Player props (anytime goalscorer + shots on target) are live — odds-backed, market-implied, limited-data, not parlay/Bank-Builder eligible.
Card rules
Favorites only above a probability floor; stale fixtures never shown as active; no card without a live price; honest counts (no padding).
Settlement
Official final score from API-Football, regulation 90 only (no extra time / penalties).
Limitations
Recent form is live; per-team WC-season stats and the Poisson model are thin until more group games are played. Player-prop projections (odds + recent form) are the next increment.

Bank Builder

paper ladder · 2× $100→$10K banked
Inputs
Draws only from the official Suggested-parlay pool; selects on combined American price within a target window (not on edge/confidence).
Model
A fixed paper stake compounds up a ladder; each step rolls the prior bankroll forward only after the step settles officially.
Markets
Whatever the eligible suggested slip contains (may mix sports).
Card rules
One pending step at a time; honest diagnosis when no eligible slip exists.
Settlement
Official results per leg; the bankroll changes only on settlement.
Limitations
Proven repeatable: 2 completed $100→$10K ladders → $20,465.40 crown (run #1 reached $100 → $10,376.17, 5–0, then a second independent $100→$10K). A fresh operator-approved card now runs daily — see Mr. Dub for the full journey.

Suggested cards

conservative → longshot
Inputs
Eligible odds-backed legs from the day's boards across sports.
Model
Greedy build per risk profile (confidence tiers, minimum edge, max legs, recent-form requirement), then a concentration score over the slip.
Markets
Conservative / balanced / high-risk / longshot lanes; an optional mixed card only when data quality is strong enough.
Card rules
Active-date + odds-backed only; no settled events; no single anchor across every card; longshots must be a different thesis; honest 'not enough current odds-backed legs' state when thin.
Settlement
Each leg settles on its official result; slip status is win/loss/push/pending/void.
Limitations
Concentration caps are being promoted from shadow to live under an operator-approved path (see UFC lesson).

UFC first-slate learning (UFC 250, settled)

6–1
moneyline model
+320
Hokit underdog hit
−520
Topuria fav missed
0–4
suggested cards

The straight-pick signal was strong (six of seven moneylines, including a +320 underdog). The suggested cards went 0–4 — and every card failed for the same reason: each one leaned on the same heavy favorite (Topuria, −520), who lost. That is concentration risk, not a model-accuracy problem.

Card-builder V2 lesson

No single leg may anchor every card; heavy-favorite exposure is capped; each card now carries a concentration score; and a stress test asks “what if the top favorite loses?” before publishing. One slate does not prove a model — the validation-stage label stays on.

Data integrity

Official settlement only

Results settle from official sources (league APIs / ESPN finals), never from screenshots, web snippets, or user reports.

Stale-date gating

Past slates never show as 'today'. Stale content moves to results/archive; it never sits in active picks.

Unavailable / needs-data

When a source or credential is missing, the page says so. It does not fabricate a formula output.

No fabrication

No invented odds, projections, results, fighter/player images, fight histories, player stats, or injuries. Missing images fall back to initials.

Limitations & roadmap

  • Generation is operator-run. Slates are generated on demand, not yet fully automated; freshness reflects the last pipeline run.
  • Lines move. Boards reflect odds at pipeline time. By the time you read them, prices have likely shifted.
  • UFC props need a feed. Method / round / distance stay model-only until a real prop-odds feed and a graded model for them exist.
  • MLB context inputs. Park factor, weather, bullpen fatigue, and handedness splits are on the roadmap, not yet modeled.
  • Soccer depth. World Cup prices come from The Odds API; recent form, group, lineups, settlement, and player identity/photos from API-Football. Odds-backed player props (anytime goalscorer + shots on target) are live but market-implied only — labelled limited-data and not parlay/Bank-Builder eligible. Per-team WC-season stats and the Poisson model stay thin until more group games are played.
  • Richer feeds + automation. Fuller data feeds, a licensed fighter-image source, and detailed fight histories are planned.