πŸ€ NBA Player Statistics

2025-26 Season β€’ Advanced Analytics Dashboard
PPG: -
APG: -
RPG: -
BPG: -
SPG: -
Stocks: -
0
Players Shown
0
Avg PPG
0%
Avg TS%
0
Triple-Doubles
# Player Team GP MPG PPG RPG APG SPG BPG STK FG% 3P% FT% TS% TOV +/-

⚑ Beyond the Box Score: Novel Basketball Analytics

Traditional stats tell you what happened. These metrics try to tell you how it happened and how reliably it will happen again. We measure player involvement intensity, reward clean play over foul-hunting, and use Sortino-style risk adjustment to penalize only downside variance.

"We are playing ethical hoops. We are not flopping... We just want to play the right way."
β€” Jarrett Allen, Cleveland Cavaliers (2024)

Inspired by Allen's philosophy, the Ethical Hoops metric penalizes free throw attempts (proxy for foul-baiting) while rewarding blocks, steals, and offensive rebounds. Technical and flagrant fouls carry a per-game penalty that dilutes with clean play β€” redemption is possible. Scroll down to the Appendix for full methodology and formulas.

# Player Team GP MPG Net IPM Any IPM Ethical Eth/Min R-PTS R-REB R-AST

πŸ“ Appendix: Methodology & Formulas

1. Involvement Per Minute (IPM)

IPM measures how frequently a player directly impacts the game β€” every touch, every action, every mistake β€” normalized by playing time. It combines traditional box score stats with Second Spectrum tracking data (touches, deflections, screens, etc.) for a fuller picture.

Box Score Component

We track all involvements with different weights:

$$\text{FG}_{\text{miss}} = \text{FGA} - \text{FGM}$$ $$\text{FT}_{\text{miss}} = \text{FTA} - \text{FTM}$$
$$\text{Any IPM}_{\text{box}} = \frac{0.5 \cdot \text{PTS} + 0.5 \cdot \text{FG}_{\text{miss}} + 0.25 \cdot \text{FT}_{\text{miss}} + \text{REB} + \text{AST} + \text{STL} + \text{BLK} + \text{TOV} + 0.5 \cdot \text{PF}}{\text{MIN}}$$
$$\text{Net IPM}_{\text{box}} = \frac{0.5 \cdot \text{PTS} - 0.5 \cdot \text{FG}_{\text{miss}} - 0.25 \cdot \text{FT}_{\text{miss}} + \text{REB} + \text{AST} + \text{STL} + \text{BLK} - \text{TOV} - 0.5 \cdot \text{PF}}{\text{MIN}}$$

Any IPM counts everything β€” even mistakes like turnovers, fouls, and missed shots add to your "involvement" because you're still touching the ball and affecting the game. Net IPM flips all the bad stuff to negatives: missed shots, turnovers, and fouls all hurt you. It's a transparent alternative to black-box metrics like PER, LEBRON, or EPM β€” just add up the good, subtract the bad.

  • PTS Γ— 0.5: Points (halved to avoid double-counting with made shots)
  • FG_miss Γ— Β±0.5: +0.5 for Any (still involvement), -0.5 for Net (wasted possession)
  • FT_miss Γ— Β±0.25: +0.25 for Any, -0.25 for Net
  • REB, AST, STL, BLK Γ— 1.0: Full credit for these actions
  • TOV Γ— Β±1.0: +1 for Any (still involvement), -1 for Net (costly mistake)
  • PF Γ— Β±0.5: +0.5 for Any, -0.5 for Net

Tracking Component (Second Spectrum Data)

The box score misses a lot. Screen assists, deflections, loose balls β€” these are invisible in traditional stats but crucial to winning basketball. We add tracking data to capture this:

$$\text{IPM}_{\text{tracking}} = \frac{0.05 \cdot \text{TOUCHES} + 0.5 \cdot \text{DEFLECTIONS} + 0.1 \cdot \text{CONTESTED SHOTS}}{\text{MPG}}$$ $$+ \frac{0.5 \cdot \text{SCREEN AST} + 0.5 \cdot \text{LOOSE BALLS} + 0.5 \cdot \text{SECONDARY AST}}{\text{MPG}}$$
  • TOUCHES Γ— 0.05: Every ball touch counts, but at low weight (~3 contribution for avg starter)
  • DEFLECTIONS Γ— 0.5: Active hands on defense
  • CONTESTED_SHOTS Γ— 0.1: Defensive effort
  • SCREEN_ASSISTS Γ— 0.5: Off-ball work that creates shots
  • LOOSE_BALLS Γ— 0.5: Hustle plays
  • SECONDARY_AST Γ— 0.5: Hockey assists (the pass before the assist)

Calibrated so average top-100 player gets ~6 per game from tracking (~3 from touches, ~3 from hustle).

Final IPM

$$\text{IPM}_{\text{final}} = (\text{IPM}_{\text{box}} + \text{IPM}_{\text{tracking}}) \times \text{scale}$$

The Gap Matters: A big gap between Any IPM and Net IPM reveals inefficiency. High Any + Low Net = ball-dominant but wasteful. High Any + High Net = true star.

Minutes Adjustment (The Bench Player Problem)

Raw IPM has a flaw: bench players with tiny sample sizes often top the leaderboards. A guy who plays 6 minutes and goes off looks like a god, while Jokić at 35 MPG with steady production looks pedestrian. We fix this with logarithmic scaling:

$$\text{scale} = \left( \frac{\ln(1 + \text{MPG})}{\ln(1 + \text{MPG}_{\max})} \right)^p$$

Where p = 1.5 is the harshness parameter and MPG_max is the league leader in minutes per game. This creates a smooth penalty curve:

  • 35 MPG player: scale β‰ˆ 0.97 (nearly full credit)
  • 20 MPG player: scale β‰ˆ 0.75 (moderate penalty)
  • 6 MPG player: scale β‰ˆ 0.42 (heavy penalty)

Why logarithmic? Linear scaling would be too harsh on rotation players. Log scaling recognizes that the difference between 30 and 35 MPG is less meaningful than the difference between 5 and 10 MPG.

2. Ethical Hoops Score

Named after Jarrett Allen's philosophy, this metric rewards players who score efficiently through real basketball plays rather than hunting for fouls and free throws. It combines box score stats with tracking data to capture the full picture of "playing the right way."

Box Score Component

$$\text{Ethical}_{\text{box}} = 1.0 \cdot \text{PTS} - 0.5 \cdot \text{FTM} - 1.5 \cdot \text{FTA}$$ $$+ 0.9 \cdot \text{AST} + 0.9 \cdot \text{OREB} + 0.7 \cdot \text{DREB}$$ $$+ 1.5 \cdot \text{BLK} + 1.5 \cdot \text{STL} - 1.2 \cdot \text{PF}$$

Breakdown of box score weights:

  • PTS Γ— 1.0: Full credit for points scored
  • FTM Γ— -0.5: Made free throws still required a whistle
  • FTA Γ— -1.5: Attempting free throws = hunting fouls (harsh penalty)
  • AST Γ— 0.9: Team play bonus (moderated to prevent point guard dominance)
  • OREB Γ— 0.9: Hustle plays
  • DREB Γ— 0.7: Expected, less credit than offensive boards
  • BLK Γ— 1.5: Rim protection, clean defense
  • STL Γ— 1.5: Active hands, not flopping (same as blocks)
  • PF Γ— -1.2: Undisciplined play (harsher penalty)

Tracking Component (Hustle Stats)

The box score misses the quintessential "ethical hoops" plays: setting screens, boxing out, contesting shots. We add tracking data to reward the dirty work:

$$\text{Ethical}_{\text{tracking}} = 0.4 \cdot \text{DEFLECTIONS} + 0.1 \cdot \text{CONTESTED SHOTS}$$ $$+ 0.5 \cdot \text{SCREEN AST} + 0.4 \cdot \text{BOX OUTS} + 1.5 \cdot \text{CHARGES DRAWN}$$
  • DEFLECTIONS Γ— 0.4: Active hands on defense
  • CONTESTED_SHOTS Γ— 0.1: Effort defense
  • SCREEN_ASSISTS Γ— 0.5: Selfless off-ball work that creates shots for others
  • BOX_OUTS Γ— 0.4: Doing the dirty work on the glass
  • CHARGES_DRAWN Γ— 1.5: Taking contact (capped at BLK weight β€” it's rare but valuable)

Calibrated so average top-100 player gets ~2.2 per game from tracking.

Final Ethical Hoops

$$\text{Ethical}_{\text{total}} = \text{Ethical}_{\text{box}} + \text{Ethical}_{\text{tracking}} - 4 \times \text{TECH} - 10 \times \text{FLAG}$$

Technical & Flagrant Foul Penalty

Technicals and flagrants represent the opposite of ethical basketball β€” losing your cool, dangerous plays, disrespecting officials. The penalty is added to the season total, then divided like any other stat. Clean games dilute the impact, creating a redemption path.

$$\text{Ethical}_{\text{avg}} = \frac{\text{Ethical}_{\text{total}}}{\text{GP}}$$ $$\text{Ethical}_{\text{per min}} = \frac{\text{Ethical}_{\text{total}}}{\text{MIN}}$$
  • TECH Γ— -4: Technical foul penalty (β‰ˆ 3 personal fouls worth)
  • FLAG Γ— -10: Flagrant foul penalty (β‰ˆ 2.5Γ— tech, causes ejections + opponent FTs)

Example penalties (25 GP): Jokić (0T 2F) = -0.80/game. Gobert (3T 4F) = -2.08/game. Stewart (5T 2F) = -1.82/game. Meaningful but don't dominate rankings — fouls act as a tiebreaker, not the headline.

Ethical Per Minute (Eth/Min) = Ethical Total / Total Minutes, allowing comparison across different roles and playing times.

Who ranks high? Efficient mid-range assassins, post players who score without drawing fouls, rim protectors, and glue guys who set screens and box out. Who ranks low? Foul merchants who live at the line, players who rely on referee charity over skill.

3. Risk-Adjusted Stats (Sortino-Style)

A player averaging 25 PPG sounds great β€” but what if they score 40 one night and 10 the next? Consistency matters. Unlike standard deviation which penalizes ALL variance, we use downside deviation (Sortino-style) which only penalizes bad games.

Why Sortino over Sharpe?

Standard deviation treats a 45-point explosion the same as a 5-point dud β€” both are "variance." But explosions are good! We only want to penalize the downside.

$$\text{threshold} = \bar{X} \text{ (player's mean)}$$ $$\text{Downside Deviation} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} \left( \min(X_i - \text{threshold}, 0) \right)^2}$$ $$\text{Risk-Adjusted Stat} = \bar{X} - \text{Downside Deviation}$$

Example with three players, all averaging 20 PPG:

  • Player A: [20, 22, 18, 21, 19] β†’ low variance β†’ high R-PTS
  • Player B: [10, 15, 20, 25, 30] β†’ high downside games β†’ lower R-PTS
  • Player C: [20, 20, 20, 20, 70] β†’ explosion helps, no downside β†’ very high R-PTS
  • R-PTS: Risk-adjusted points per game
  • R-REB: Risk-adjusted rebounds per game
  • R-AST: Risk-adjusted assists per game

Interpretation: R-PTS tells you what floor you can count on. A player with R-PTS of 17 means "even on a bad night, they'll probably give you around 17." It rewards consistency without punishing upside explosions.

4. Stocks (STK)

A simple but useful combination stat for defensive playmakers:

$$\text{Stocks} = \text{STL} + \text{BLK}$$

Found on the Player Stats tab. Elite perimeter defenders rack up steals; elite rim protectors rack up blocks. The rare players who do both (like peak Hakeem, prime AD, or current Wemby) are defensive unicorns.

Philosophy

These metrics share a common philosophy: context matters more than counting. Raw totals favor high-minute players on bad teams who chuck shots. Per-minute stats favor low-minute players with small samples. We try to thread the needle β€” rewarding genuine impact while adjusting for opportunity and reliability.

None of these are perfect. Basketball is too complex to reduce to a single number. But they offer a different lens than traditional stats, one that might surface players the box score undersells and expose players it oversells.

# Player Team GP TD DD NTD 30+ 40+ 50+ 20/10 PTS↑ REB↑ AST↑ BLK↑ STL↑

πŸ“ˆ Any IPM vs Ethical Hoops

Scatter plot showing player involvement intensity (Any IPM) against ethical play score. Dot colors reflect team colors. Hover for detailed stats with rankings.

Added players:
Dot color = Team color ● Top 10 IPM βˆͺ Top 10 Ethical (fixed) + Your selections