Inputs
Ratings are built by the Legends Deck ratings engine from MLB Statcast tracking data and official MLB statistics — the same Hawk-Eye optical-tracking data MLB front offices use. Legends Deck is an independent project and has no commercial or licensing relationship with Major League Baseball.
From Statcast metric to 0–99 rating
Every attribute rating on every card starts from a real Statcast metric and follows the same pipeline:
- Rank against the league. The player's metric (barrel rate, sprint speed, OAA, etc.) is converted to a percentile rank against the qualified active-MLB population — the same population that clears the thresholds below.
- Map percentile to a 0–99 scale. (A card that tops the curve is rated 100 and carries the Perfect tier.) The percentile runs through a fixed curve that stretches the elite tier so a 90th-percentile skill reads as a 93 and a 50th-percentile skill reads as a 74 — not a flat 50-to-99 line. The curve is the same for every player and every metric; it does not change card to card.
- Regress small samples toward the position mean.A raw percentile from 60 plate appearances is noisy, so each component is Bayesian-regressed toward its position's average in proportion to sample size. This is why a rookie just clearing the threshold can swing more night-to-night than an established regular, and why a 60-PA hot streak can't mint a 99.
- Blend into an overall. The component ratings are combined with position-specific weights — a shortstop's fielding counts more than a designated hitter's — and anchored to expected run production (xwOBA) so the overall tracks actual offensive value, not just the sum of its parts.
The inputs are public Statcast data and the transforms are deterministic, so every player is evaluated by the same transparent math — but that math is a calibrated pipeline, not a single percentile copy. The full attribute-by-attribute breakdown — which Statcast metric drives Contact, Power, Vision, Velocity, Movement and the rest — is documented in How Card Ratings Work.
Refresh cadence
Ratings refresh nightly at 3 AM Pacific. Each night the current-season Statcast totals are refreshed, percentiles are recomputed against the updated population, and every card rating is regenerated from the new percentiles. If a hitter's barrel rate climbs, his card improves the next morning; if a pitcher's velocity drops, his rating drops. Live rates, live ratings.
Sample-size & qualification filters
Percentiles are only meaningful at a stable sample size, so every leaderboard applies a published minimum, taken from official sources rather than invented: Statcast hitter boards (exit velocity, barrel rate, hard-hit rate) use MLB's qualified list (2.1 plate appearances per team game); sprint speed needs 10 competitive runs; fastball velocity needs 100 four-seam fastballs; whiff and chase rate need 100 batters faced; team stat leaders use MLB's 3.1 plate appearances (batting average) and 1 inning (ERA) per team game. Players below a threshold still have cards, but they are excluded from that board's ranking, and each board reports the number of qualified players it ranks. These numbers are generated from one shared constant, so the copy cannot drift from the filter.
Edge cases & what this means
- Ratings can surprise you. A .314 hitter with a bottom-tier barrel rate is rated as a contact specialist, not a star — the math follows underlying skill, not surface stats or narrative.
- Rookies and small samples lag. A player just clearing the qualification threshold can swing more night-to-night than an established regular until his sample stabilizes.
- Daily refresh lag is real. Because ratings update once a night at 3 AM Pacific, an in-progress breakout shows up in the rating the next morning, not in real time.
Because the inputs are public Statcast data and the pipeline is deterministic, every player is evaluated by the same transparent math. See it applied on the leaderboards and position pages.
Statcast metric glossary
The metrics that drive every rating, explained in plain language: