Where the numbers come from
Every stat on StreakDeck traces back to a public source. This page lists those sources, explains how raw data gets shaped into the metrics you see (park factors, wRC+, xwOBA), and shows when the current build was put together.
Sources
We pull from six public feeds. Each one is read-only on our side: no source ever gets a request that changes its data, and no private or paywalled feed is mixed in.
MLB Stats API
SiteSchedule, results, lineups, box scores, and play-by-play. The backbone of every game page. Refreshed during the season so live games update without a full rebuild.
Baseball Savant / Statcast
SitePitch-by-pitch data including exit velocity, launch angle, barrels, and pitch type. Powers the contact-quality numbers on every player page and the xwOBA on contact metric.
FanGraphs
SiteAdvanced stats and the season wOBA weights used to compute wRC+. We use the public FanGraphs Guts page weights, refreshed at the start of each season.
Lahman database
SiteHistorical season totals, postseason results, and franchise records going back over a century. The archive uses Lahman for anything pre-2008.
Open-Meteo
SiteFree weather forecasts and historical observations. We pull a single conditions snapshot per game (temperature, wind, precipitation) using the venue coordinates and game time.
The Odds API
SitePre-game moneyline and run-line odds. Snapshot taken a few hours before first pitch and pinned to the game page as a record of where the market sat going in.
Park factors
Hitters in Coors Field do not face the same conditions as hitters in Petco Park. To compare them fairly, every player's wRC+ is park-adjusted using a per-venue, per-year runs factor (and a separate factor for home runs). A value of 1.00 means league average. Higher than 1.00 means the park inflates the dimension, lower than 1.00 means it suppresses it.
We use three-year-trailing factors from public Baseball Reference tables, cross-checked against the FanGraphs Guts park factor exports. Each per-player page surfaces the home-venue multiplier so you can see what was adjusted away.
| Venue | Runs | HR | AVG |
|---|---|---|---|
| Coors Field | 1.16 | 1.10 | 1.09 |
| Great American Ball Park | 1.05 | 1.17 | 1.01 |
| Fenway Park | 1.04 | 0.92 | 1.06 |
| Yankee Stadium | 1.03 | 1.16 | 0.99 |
| Citizens Bank Park | 1.03 | 1.12 | 1.01 |
| Venue | Runs | HR | AVG |
|---|---|---|---|
| T-Mobile Park | 0.95 | 0.94 | 0.96 |
| Tropicana Field | 0.96 | 0.95 | 0.97 |
| Petco Park | 0.96 | 0.99 | 0.97 |
| Oracle Park | 0.97 | 0.91 | 0.99 |
| Citi Field | 0.98 | 0.94 | 0.99 |
Values shown are for the most recent fully-played season in the source tables. Parks not in our table fall back to a neutral 1.00, so they neither help nor hurt their players in wRC+.
Build manifest
These numbers describe the exact build you are reading right now. If something looks stale, this is where to check first.
- Built at (UTC)
- 2026-05-29 19:54:50Z
- Source commit
- 06d4af7
- Package version
- 0.1.0
- Season covered
- 2026
- Hot DB last refreshed
- 2026-05-29 17:32:56Z
- Archive DB last rebuilt
- 2026-05-23 18:41:14Z
Stats library
All sabermetric formulas live in a single, dependency-free module and are the same on every page. The formulas (slashLine, wRC+, xwOBA on contact, platoon splits, barrel rate, hard-hit rate, average exit velocity) are documented in the open source src/lib/stats/README.md with the exact equations and sources used. wRC+ uses FanGraphs wOBA weights and park factors as described above. xwOBA on contact uses a launch-speed / launch-angle bin model from the MLB barrel definition.
Refresh cadence
- Production hot DB: refreshed every hour during the regular season. Picks up completed games, finalized box scores, and live pitch data.
- Archive rebuild: the static site you are reading is re-rendered on every successful hot DB refresh, so the Archive lags live data by at most one hour.
- Cold archive DB: rebuilt at the end of each season when the previous year's pitch data moves from hot to cold. Otherwise immutable.
- Pre-game inputs: weather, lineups, and odds snapshot a few hours before first pitch and pin to the game page. They do not get rewritten after the game starts.