Pricing every shot, and finding out which shooting skills are real
A box score tells you what went in. It cannot tell you whether the shooter was good or the shots were easy. That distinction is worth real money. It is the difference between a cold shooter and a broken shot diet, between a breakout and a hot streak. This study prices all 218,701 field-goal attempts of 2023-24 with a logistic xMake model built from location, distance, angle, and nine action families, with the game clock deliberately left out. Then it follows the consequences across three NBA seasons, the G League, and the WNBA.
Terms used in this analysis
- xPPS: Expected points per shot - the model's fair price of a shot diet: what an average shooter would score on the same attempts, judged from location and shot type alone, before knowing what went in.
- xMake: The model's probability that a given shot goes in, estimated from location and shot type; the per-shot building block behind xPPS and xPTS.
- shot-making: Actual minus expected points per 100 shots: conversion above or below what the shot diet itself explains. Positive means making shots the model prices as hard.
- eFG%: Effective field-goal percentage: field-goal percentage with made threes counted 1.5x, putting twos and threes on one points scale.
- 2-for-1: Shooting early with 25-36 seconds left in a period so your team gets two possessions to the opponent's one before the buzzer.
- decile calibration: Split shots into ten bins by predicted make probability and compare predicted vs actual rates per bin; the reported number is the worst bin's gap.
- empirical Bayes: Estimate the spread of true skill across the league from the data, then pull each individual's noisy estimate toward the league mean in proportion to its noise.
- shrinkage weight: The fraction of an observed number that survives empirical-Bayes regression: 1 means fully trusted, 0 means replaced by the league mean.
- corner three: A three-pointer from the corner, where the NBA line is roughly 3 ft closer than the arc - the geometry discount that makes it the cheapest three.
Nothing downstream matters if the pricing is wrong, so the first figure is the least glamorous and most important one.
With every shot priced, player skill splits cleanly in two. Selection (xPPS) is the value of the shots a player chooses; making is conversion above what those shots should yield. The two skills have different rosters, and that is the decomposition's whole point. The make-above-expected list is JokiΔ, Curry, DonΔiΔ: players who convert hard shots. The best-diet list is rim-runners like Gafford, whose value is standing in the right place. Box-score efficiency mixes the two; this separates them.
The model's most quotable tactical result comes from what was left out of it. Because the clock is not a feature, end-of-period effects appear in the residuals, where they decompose: final-four-second heaves are worse shots (β17 expected points per 100 by selection) and worse-executed shots (a further β22 per 100). The 2-for-1 launch window at 25β36 seconds, meanwhile, costs almost nothing (~β0.8 per 100), upgrading the sibling play-by-play study's eFG-proxy finding with a real per-shot price.
Then comes the question that turns a descriptive model into a projection tool: which of these skills repeats? Each season is scored with its own refit model, so level drift cannot masquerade as skill. Shot selection correlates at r β .91/.87 year over year. Shot-making correlates at only r β .60/.59. And raw points per shot persists no better than making, because box-score efficiency inherits all of making's noise.
The persistence finding earns its keep by becoming a rule. An empirical-Bayes projection carries each player's diet forward and shrinks his making toward the league mean in proportion to its sampling noise; its two fixed-weight corners are the natural baselines (weight 1 is naive carry-forward, weight 0 is diet-only). On both held-out season pairs, the EB rule beats naive carry-forward by 11.4% and 10.0% in mean absolute error, and beats both corners, meaning the gain comes precisely from regressing the noisy component and only that component.
Finally, the same pipeline refit on the WNBA (with its own play-by-play gate) shows the deepest structural result: shot selection follows the rulebook. The WNBA's three-point line is nearly uniform (the corner discount that defines NBA geometry barely exists), and corner threes are 12.9% of WNBA threes versus 25.5% in the NBA.
What this study cannot claim, it says out loud: the public feed has no defender positions, so "selection" bundles openness with location. The team-tracking versions of this model separate those, and this is the public-data ceiling.
Method, code, and verification
The full technical write-up (data provenance, model specification, validation gates, and stated limitations) is the README. The analysis is implemented independently in R and Python and reconciled to numeric tolerance; run_checks.sh replays every gate.