Inizia
Baseline — NBA Game and Data Analysis

Baseline — NBA Game and Data Analysis

NBA analysis you can actually defend — built from published rosters and minutes, so every number has a reason behind it. Each run ships with its model version, data cutoff, and source season — traceable, not a black box. Player estimates for points, rebounds, assists, threes, and PRA absorb the minutes an official injury report frees up. Built for fans, fantasy players, and analysts who want a defensible read before tip-off.
#Stile di vita#Analisi#Ricerca
Valutazione
Servono altre valutazioni
Venduti
1
Come si usa
Esegui su Capafy
Anche su app esterne
Fornito dal publisher
DeepSeek V4 Flash

Baseline — NBA analysis that shows its work

⚠ NBA statistical analysis only — no betting or wagering advice. Every number below is a modeled probability with an explicit uncertainty range, not a pick and not a recommendation. The tool assigns no action labels and never presents an outcome as certain.

What it does

Baseline turns an NBA matchup into a reproducible statistical analysis built only from published NBA statistics. Ask for a game and you get a modeled score, home margin, spread, total, win probability, and a central 60% range. Ask for a player and you get expected minutes plus modeled points, rebounds, assists, threes, and PRA.

The difference is what sits behind the number. Every analysis carries its model version, data cutoff, source season, and — when a season has no games yet — an explicit flag saying it fell back. A deterministic renderer writes the tables, not a language model improvising prose, so the same request at the same cutoff returns the same answer.

When to use it

  • A pregame read on a specific matchup. "Lakers vs 76ers on Oct 23 — what does the model say?" You want score, margin, and win probability from published statistics rather than a vibe.
  • A new season with a new roster. Rosters turn over every summer. Baseline rebuilds a 240-minute rotation from the current roster and each player's own NBA history, instead of quietly reusing last year's team.
  • A player number with a minutes reason. Minutes drive the estimate, and listed teammate statuses reallocate them — so "why is this number what it is?" has an actual answer.
  • You have to defend the number. Analysts, writers, and fantasy players who need to explain where a figure came from get the cutoff, the source season, the rotation, and the full JSON.

How it works

  1. Build the rotation. For a future game the CLI pulls both teams' published target-season rosters and each player's prior-season NBA history, then estimates a ten-player, 240-minute rotation with a 38-minute cap per player.
  2. Shrink the priors. Player on-court offensive rating, defensive rating, and pace shrink toward the prior-season league mean by 0.60 × min(1, prior_player_minutes / 1200), then get weighted by estimated rotation minutes.
  3. Blend roster with team. The roster profile is blended with the previous team profile at clamp(0.90 − 0.45 × retained_prior_rotation_minutes_share, 0.45, 0.90). The more of last season's rotation is gone, the more the model trusts the new roster — turnover changes the number, not just the confidence label.
  4. Absorb real games. Once both teams have played, their observed profile blends in at games / (games + 12). A one-game sample barely moves the number.
  5. Convert to points. Each offense is matched against the opposing defense around league average, converted at the modeled pace, then adjusted for home court and known rest.
  6. Quantify the uncertainty. A normal residual distribution produces win probability and any threshold probability you ask for. Roster turnover and players with no NBA prior widen the range instead of being hidden.

Why this is different

  • It models who actually plays. Most quick analysis reuses last season's team ratings. Baseline builds a current-roster rotation from published rosters and each player's own history, then reallocates those 240 minutes when an official injury report lists someone out.
  • The number is reproducible. The CLI renders the report and stamps every run with model version, cutoff, source season, and fallback flags. Re-run the analysis and land on the same figure, or open the JSON and trace it. A chat model answering from memory cannot do either.
  • Named sources, labeled values. Team and player statistics come from ESPN public statistics; injury status comes from timestamped NBA Official Injury Report PDFs on an allowlisted domain. Anything that source does not publish — individual player ratings and usage — is computed here by a stated formula and labeled as computed, not passed off as published. If a required roster or source is unavailable, the run fails and says so — it does not quietly substitute a different source or guess.

Example

Input: game --home PHI --away BOS --season 2026-27 --as-of 2026-11-10 (optional: --margin-threshold 4.5 or --total-threshold 224.5)

Output: a matchup heading and three Markdown tables — a model/context table with scores, home margin and its central 60% range, total, win probability, availability, source seasons, and confidence; a two-team roster table with modeled strengths, weaknesses, top additions and departures, and offense/defense/net personnel effects per 100 possessions; and a two-team personnel-impact table with newcomer minutes and role signals plus availability-driven minute and box-score changes.

Sample output from that command returned Philadelphia 113.2, Boston 115.3, home margin −2.0, win probability 0.4426 — a narrow Boston edge, which is what the model said rather than a forced call.

Input formats

  • A plain-language request naming the two teams and the date
  • Season selection (2025-26, 2026-27) and an explicit --as-of target date
  • A player name, with or without a team
  • Optional stat selection: pts, reb, ast, fg3m, pra, or all
  • Optional thresholds you supply yourself — margin, total, or one player stat
  • Optional direct URL to an official NBA injury-report PDF (must be on official.nba.com or ak-static.cms.nba.com)
  • Optional manual scenario adjustments in points
  • Output as rendered Markdown tables in Chinese or English, or full JSON via --format json / --output

Coverage and data depth

Source: ESPN public statistics, plus timestamped NBA Official Injury Report PDFs on an allowlisted domain.

  • Team profile — offensive rating, defensive rating, net rating, pace, games played
  • Recent form — the club's last N games, for the in-season blend
  • Rest context — the club's own game log and dates
  • Player game history — per-game minutes, points, rebounds, assists, threes, and dates
  • Player role and usage prior — season minutes, ratings, and usage; individual ratings and usage are computed here rather than published
  • Per-36 box rates — points, rebounds, assists, threes
  • Schedule — game IDs, dates, and home/away assignment
  • Roster — the target-season roster; for a past season, rebuilt from that season's own statistics
  • Availability — timestamped NBA Official Injury Report PDF

What it won't do

  • It won't tell you what to do with the number. Thresholds come from you; the tool returns only the modeled probability above them and assigns no action label.
  • It won't confirm a starting five or a minutes restriction. Official reports do not prove a lineup, so that field stays unavailable unless you supply an official confirmed source.
  • It isn't a trained ensemble. No hyperparameter fitting, no opponent-specific player defense, no travel, altitude, or referee features, no play-by-play possessions.
  • It isn't calibrated yet. The model's own validation status says its weights and uncertainty terms have not been walk-forward trained. Treat confidence as low when samples are small or availability is unknown.
  • It won't give you a past roster's positions or jersey numbers. For a historical game the roster is rebuilt from that season's own statistics — everyone who recorded minutes — so it is right about who played, and says plainly that position and number are unavailable rather than guessing.