Demo · Live scores
DEN79·OKC84Q3 4:12
NYK28·BOS32Q2 1:48
LAL119·DAL112FINAL
MIN61·GSW56Q3 9:22
DEN79·OKC84Q3 4:12
NYK28·BOS32Q2 1:48
LAL119·DAL112FINAL
MIN61·GSW56Q3 9:22

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.

Games Played(GP)
NBA.com

Total games a player appeared in during the season.

Games Started(GS)
NBA.com

Games in which the player was in the starting lineup.

Minutes Per Game(MIN)
NBA.com

Average minutes played per game.

Points Per Game(PTS)
NBA.com

Average points scored per game.

Rebounds Per Game(REB)
NBA.com

Average total rebounds (offensive + defensive) per game.

Assists Per Game(AST)
NBA.com

Average assists per game.

Steals Per Game(STL)
NBA.com

Average steals per game.

Blocks Per Game(BLK)
NBA.com

Average blocked shots per game.

Turnovers Per Game(TOV)
NBA.com

Average turnovers committed per game.

Field Goal %(FG%)
NBA.com

Percentage of field goal attempts made (FGM / FGA).

Typical range: 30–55%

3-Point %(3P%)
NBA.com

Percentage of 3-point attempts made (FG3M / FG3A).

Typical range: 25–45%

Free Throw %(FT%)
NBA.com

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.

True Shooting %(TS%)
NBA.com
PTS / (2 × (FGA + 0.44 × FTA))

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%

Effective Field Goal %(eFG%)
NBA.com
(FGM + 0.5 × FG3M) / FGA

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%

Usage Rate(USG%)
NBA.com

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%

Offensive Rating(ORtg)
NBA.com

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

Defensive Rating(DRtg)
NBA.com

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

Net Rating(NRtg)
NBA.com
ORtg − DRtg

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

Pace(Pace)
NBA.com

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

Player Impact Estimate(PIE)
NBA.com

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.

Free Throw Rate(FTr)
Calculated
FTA / FGA

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

3-Point Attempt Rate(3PAr)
Calculated
FG3A / FGA

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

Assist / Turnover Ratio(AST/TOV)
Calculated
AST / TOV

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

Offensive Rebound %(OREB%)
Calculated
OREB / (OREB + DREB)

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.

Player Efficiency Rating(PER)
Calculated
(PTS + REB×1.2 + AST×1.5 + STL×2 + BLK×2 − TOV − missed FG×0.7 − missed FT×0.5 − PF×0.5) / MIN × 36

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)

Offensive Box Plus/Minus(OBPM)
Calculated
f(ORtg, AST, PTS, USG%, TS%)

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)

Defensive Box Plus/Minus(DBPM)
Calculated
f(DRtg, STL, BLK)

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)

Box Plus/Minus(BPM)
Calculated
OBPM + DBPM

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)

Win Shares(WS)
Calculated
(BPM + 2) × (MIN / 2400)

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

Value Over Replacement Player(VORP)
Calculated
(BPM − (−2)) × (MIN / (GP × 240)) × (GP / 82)

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

DARKO(DARKO)
Calculated
PER × 0.15 + TS% × 0.5 + age_factor × 6 − USG% × 0.01

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>

Estimated Plus/Minus(EPM)
External CSV

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

Regularized Adjusted Plus/Minus(RAPM)
External CSV

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

LEBRON(LEBRON)
External CSV

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

RAPTOR(RAPTOR)
External CSV

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

Player Impact Plus/Minus(PIPM)
External CSV

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.

🏀
NBA.com
via nba_api Python library
  • 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.

⚙️
Backend Calculations
advanced_metrics.py
  • 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.

📄
External CSV Import
epm_rapm_import.py
  • 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.