Reference
Learn
Explanations of every stat in the platform and where the data comes from.
Metrics Glossary
All stats displayed in player dashboards, grouped by category.
Traditional Stats
Box score counting stats pulled directly from NBA.com.
Total games a player appeared in during the season.
Games in which the player was in the starting lineup.
Average minutes played per game.
Average points scored per game.
Average total rebounds (offensive + defensive) per game.
Average assists per game.
Average steals per game.
Average blocked shots per game.
Average turnovers committed per game.
Percentage of field goal attempts made (FGM / FGA).
Typical range: 30–55%
Percentage of 3-point attempts made (FG3M / FG3A).
Typical range: 25–45%
Percentage of free throw attempts made (FTM / FTA).
Typical range: 60–95%
Advanced — from NBA.com
Advanced metrics fetched from the NBA Stats API. These account for context like pace and shot type.
Overall shooting efficiency that accounts for 2-pointers, 3-pointers, and free throws. The 0.44 factor adjusts for the fact that and-one free throws and technical free throws don't count as possessions.
Typical range: 45–65%
Adjusts FG% to account for 3-pointers being worth 50% more than 2-pointers. A player making all 3s at 40% has the same eFG% as one making all 2s at 60%.
Typical range: 44–62%
Estimate of the percentage of team possessions a player uses while on the court (via field goal attempts, free throw attempts, and turnovers). League average is ~20%.
Typical range: 10–35%
Points scored by the player's team per 100 possessions while the player is on the court. League average is around 110–115.
Typical range: 95–130
Points allowed by the player's team per 100 possessions while the player is on the court. Lower is better. League average is around 110–115.
Typical range: 95–120
The point differential per 100 possessions while the player is on the court. Positive means the team outscores opponents. Elite players often post +5 or better.
Typical range: −15 to +15
Number of possessions per 48 minutes when the player is on the court. Reflects the tempo of play for a given player's lineups.
Typical range: 96–105
A player's share of the team's combined box score events (points, rebounds, assists, etc.). Roughly represents overall box-score contribution relative to teammates and opponents.
Typical range: 5–20%
Shot Profile & Role Metrics
Secondary box-score rate stats that reveal a player's style, role, and decision-making. Computed automatically on every sync.
How often a player gets to the free throw line relative to field goal attempts. High FTr indicates aggressiveness driving to the rim or drawing contact. Elite foul-drawers exceed 0.40; perimeter players often sit below 0.20.
Typical range: 0.10 – 0.60
Share of field goal attempts taken from 3-point range. Reveals shot profile and offensive role — centers hover near 0.05–0.15 while pure shooters often exceed 0.50.
Typical range: 0.05 – 0.70
Measures decision-making efficiency for playmakers. A ratio above 3.0 is elite; below 1.5 suggests ball-handling issues. Best interpreted alongside usage rate.
Typical range: 0.5 – 5.0
Share of a player's rebounds that are offensive. High OREB% (above 30%) indicates a player who crashes the glass aggressively for second-chance opportunities.
Typical range: 5 – 45%
Calculated Metrics
Metrics computed in our backend from box score data. These don't require team-level context and are updated automatically on every sync.
A per-minute rating that rolls all box-score contributions into a single number, scaled to a per-36-minute basis. League average is 15 by definition. Our version uses a simplified Hollinger formula without pace adjustments.
Typical range: 0–40 (avg: 15)
The offensive component of BPM — estimates how many points above average a player contributes on offense per 100 possessions. Captures scoring efficiency, playmaking, and usage-adjusted production. A player with OBPM +3 provides 3 more offensive points per 100 possessions than the average player.
Typical range: −5 to +10 (avg: 0)
The defensive component of BPM — estimates how many fewer points a player allows on defense per 100 possessions. Captures steals (on-ball pressure), blocks (rim protection), and team defensive rating while the player is on court. Elite defenders post DBPM above +1.
Typical range: −4 to +4 (avg: 0)
Estimates points above or below a replacement player per 100 possessions, derived purely from the box score. BPM = OBPM + DBPM. A BPM of 0 equals league average; −2 is replacement level. Stars typically post +4 to +10.
Typical range: −5 to +10 (avg: 0)
Estimated number of wins a player contributes in a season. An average starter (BPM = 0) playing 2400 minutes produces roughly 2 Win Shares. Career totals are the sum across all seasons.
Typical range: 0–20+ per season
Win value above what a replacement-level player (BPM = −2) would provide over the same minutes, scaled to an 82-game season. Career totals are summed. An All-Star season is roughly VORP ≥ 2.
Typical range: −2 to +15 per season
A projection metric that rewards young, efficient players. The age factor peaks below 24 and decreases linearly — a 21-year-old earns more credit for the same stats than a 28-year-old. Useful for identifying breakout prospects.
External Import Metrics
Metrics sourced from third-party analytics providers and loaded via CSV import. Use the import script: python backend/data/epm_rapm_import.py file.csv --metrics <name>
A regression-based estimate of a player's net impact per 100 possessions, incorporating both box score stats and play-by-play data. Source: Dunks & Threes (dunksandthrees.com/epm). Import: --metrics epm
Typical range: −10 to +10
A statistically regularized estimate of player impact derived from lineup data, controlling for teammates and opponents. The backbone behind most modern all-in-one metrics. Source: nbarapm.com. Import: --metrics rapm
Typical range: −10 to +10
Luck-adjusted player Estimate using Box prior Regularized ON-off. Combines a box-score prior with luck-adjusted on-off RAPM. Ranked the most trusted all-in-one metric by NBA front offices. Source: Basketball Index (bball-index.com). Import: --metrics lebron
Typical range: −10 to +10
Robust Algorithm using Player Tracking and On-Off Ratings. FiveThirtyEight's all-in-one metric blending tracking and on-off data. Historical data (2014+) publicly available on GitHub. Source: github.com/fivethirtyeight/data/tree/master/nba-raptor. Import: --metrics raptor
Typical range: −10 to +10
Combines a luck-adjusted RAPM with a box-score prior for stability. Particularly strong for mid-season evaluation with limited sample sizes. Source: Basketball Index (bball-index.com). Import: --metrics pipm
Typical range: −10 to +10
Data Sources
Where each piece of data originates and how it gets into the platform.
- •Player bio — name, position, height, weight, birth date, draft info
- •Career stats — traditional box score stats by season (regular season + playoffs)
- •Advanced stats — TS%, eFG%, USG%, Offensive/Defensive/Net Rating, PIE, Pace
Requests are rate-limited and cached for 12–24 hours to avoid hammering the NBA Stats API.
- •PER, BPM, Win Shares, VORP, DARKO — computed from box score totals
- •Applied automatically on every player sync
- •Missing values are backfilled on the first page load for older records
These formulas are approximations. BPM and VORP in particular require team-level context for full accuracy; ours are box-score-only estimates.
- •EPM and RAPM — sourced from third-party analytics providers
- •Loaded manually via import script: python backend/data/epm_rapm_import.py <file.csv>
- •Expected CSV columns: player_id, season, epm, rapm
EPM/RAPM values will show as — until a CSV is imported. These metrics are optional and not available for all seasons or players.