How GameTimePicks builds projections
paper-only · odds-backed + model-only · official settlementTransparency 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.
A real sportsbook price exists. The projection is compared to the de-vigged market and is eligible for suggested cards.
No market price in the feed (e.g. UFC method/round props). Shown for insight, clearly labeled, and never priced into a parlay.
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.
Universal math
American odds → implied probability
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.
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.
Edge
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
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:
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)
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)
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.
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
Results settle from official sources (league APIs / ESPN finals), never from screenshots, web snippets, or user reports.
Past slates never show as 'today'. Stale content moves to results/archive; it never sits in active picks.
When a source or credential is missing, the page says so. It does not fabricate a formula output.
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.
