THE COURTSIDE VIEW2025–26 SEASON
HOMEPLAYERSSTANDINGSHEAD TO HEADCR DEEP DIVEVISUAL STORIESFANTASY
COURTSIDE VIEW · EXCLUSIVE

COURTSIDE
RATING
DEEP DIVE

97.2
CR
SHAI GILGEOUS-ALEXANDER
OKC · GUARDMVP
The most efficient scoring guard in a generation. Dominant on both ends.
WHAT MAKES UP THE NUMBER
CR COMPONENT BREAKDOWN
Hover any label for a plain-English explanation of what each component measures.
OFF RAPM
LG AVG +0.0+6.8
99th
98/100
DEF RAPM
LG AVG +0.0+2.1
78th
82/100
BOX SCORE
LG AVG 14.831.2
97th
96/100
SHOT QUALITY
LG AVG 56.4%64.2%
95th
94/100
CREATION
LG AVG 3.28.4
98th
97/100
SHOT QUALITY · VISUAL
Shot selection and efficiency by zone vs league average. Brighter = further above average.
FG% VS LG AVG
MISS
57.4%
eFG%
LG ↑ above avg
24.1%
RIM FREQ
38.2%
3PT FREQ
OFFENSIVE IMPACT
124.1
ORTG · LG 114.8
32.4%
USAGE%
28.1%
AST%
DEFENSIVE IMPACT
14.2%
DREB%
2 / 1
STL / BLK
-3.2
DRtg IMPACT
BOX SCORE IMPACT
9.4
BPM
31.2
PER
8.1
VORP
CREATION METRICS
28.1%
AST%
10.2%
TOV%
9.8
POTENTIAL AST
EXCLUSIVE · COURTSIDE VIEW
CR RANKINGS vs MVP VOTING
The CR ranks players purely on on-court impact. MVP voting is influenced by narrative, market size, and team record. When they diverge — that's the story.
CR RANKING
1
SHAI GILGEOUS-ALEXANDER
OKCMVP
97.2
CR
=
2
NIKOLA JOKIC
DENMVP
96.1
CR
=
3
LUKA DONCIC
LALMVP
95.4
CR
4
JAYSON TATUM
BOSALL-NBA
93.0
CR
=
5
ANTHONY EDWARDS
MINALL-NBA
91.3
CR
MVP VOTING
1
SHAI GILGEOUS-ALEXANDER
Unanimous
98%
VOTES
2
NIKOLA JOKIC
4x finalist
71%
VOTES
3
GIANNIS ANTETOKOUNMPO
Volume stats
58%
VOTES
4
JAYSON TATUM
Title contender
44%
VOTES
5
LUKA DONCIC
New market
38%
VOTES
CR SNUB
=CR and MVP aligned
Higher in CR than MVP
Lower in CR than MVP — potential snub
VOTE % = SHARE OF FIRST PLACE VOTES
COURTSIDE VIEW · PROPRIETARY

CR METHODOLOGY

5 components · 10 underlying metrics · proprietary weights
HOW CR IS CALCULATED
CR is built from 5 components made up of 10 underlying metrics: ORAPM and DRAPM (impact components), BPM and PER (box score efficiency), eFG% / Rim Frequency / 3PT Frequency / Midrange Frequency (shot quality), and AST% / Potential Assists (creation).
m₁ ORAPM
m₂ DRAPM
m₃ BPM
m₄ PER
m₅ eFG%
m₆ RIM FREQ
m₇ 3PT FREQ
m₈ MID FREQ
m₉ AST%
m₁₀ POTENTIAL AST
i
The precise weight of each metric is proprietary and not publicly disclosed. This is consistent with industry practice — ESPN's Real Plus-Minus, FiveThirtyEight's RAPTOR, and similar metrics protect their weighting methodology. The inputs and how each is calculated are documented in full below.
THE CALCULATION — STEP BY STEP
1
NORMALISE EACH METRIC TO A PERCENTILE
Each raw metric is converted to a 0–100 percentile score relative to all qualifying players in the pool for that season. This puts every metric on the same scale so they can be fairly combined — otherwise you would be adding "+6.8 ORAPM" to "64.2% eFG%" which are completely different units.
FORMULA
percentile(player, metric) = (players with lower value ÷ total players) × 100
Example: if SGA's eFG% is higher than 190 of 200 qualifying players, his normalised eFG% score = (190 ÷ 200) × 100 = 95. For metrics where lower is better (e.g. midrange frequency), the ranking is inverted — fewer midrange attempts = higher percentile.
2
WEIGHT AND SUM
Each normalised metric is multiplied by its proprietary weight, then all 10 weighted scores are summed. The weights reflect how much each metric contributes to predicting true player impact. A metric weighted at 0.20 contributes twice as much as one weighted at 0.10.
FORMULA
raw_score = w₁·p(ORAPM) + w₂·p(DRAPM) + w₃·p(BPM) + w₄·p(PER)
           + w₅·p(eFG%) + w₆·p(RimFreq) + w₇·p(3PTFreq) + w₈·p(MidFreq)
           + w₉·p(AST%) + w₁₀·p(PotentialAST)
where p(x) = percentile score of metric x · weights w₁–w₁₀ are proprietary · Σw = 1
The weights sum to 1, meaning the raw score is a weighted average of percentiles and will itself sit between 0 and 100. A player who ranks at the 90th percentile across all metrics would produce a raw score near 90 before scaling.
3
SCALE TO 0–100 USING HISTORICAL ANCHORS
The raw score is scaled using two fixed historical anchor points — a floor and a ceiling — drawn from our full dataset (2017–18 season onward). Anchors are fixed permanently so that a CR of 90 means the same thing in 2025 as it did in 2018. The scale does not recalibrate each season.
FORMULA
CR = (raw_score − floor_score) ÷ (ceiling_score − floor_score) × (99 − 30) + 30
floor_score = raw score of a historical replacement-level player season (maps to CR ≈ 30)
ceiling_score = raw score of the best historical player season in the dataset (maps to CR ≈ 99)
95–99
MVP TIER
Historically elite season
88–94
ALL-NBA
Top 10–15 player
78–87
ALL-STAR
Clear starter, impact player
65–77
SOLID STARTER
Positive contributor
30–64
BENCH / FRINGE
Below average to replacement
All underlying data sourced from the NBA Stats API via swar/nba_api. CR is calculated seasonally and updated nightly during the active season. Historical CR values are available from the 2017–18 season onward. Metrics marked as Tracking Data require NBA.com's player tracking endpoints, which have been publicly available since the 2013–14 season.