The Framework Stack
Core public methodology. Updated to June 2, 2026 canon.
This is the public-facing methodology hub for the core DataDunkNBA framework stack: what each framework measures, the formula in computable form, what's been backtested, and which claims carry caveats after the June 2 mass-substantiation pass. If a team page references "WEV" or "SLS" or "GPI" and you want to know what's actually under the hood, this is the page that shows it.
I built this stack across 2024–2026 as the analytical engine of DataDunkNBA. June 2 canon corrections are now applied here: WEV v3 is 0.30/0.60/0.10, OEV is a modern floor not a separator, PDR rejects two-way wing playoff elevation, CIS is era-readiness context rather than a standalone title engine, and Hybrid_WEV is a companion metric.
1. WEV — Winning Expected Value Validated
The headline composite. A 0–25 scale of a roster's championship signal.
WEV is the canonical team composite. It rolls offensive expected value, defensive expected value, and clutch expected value into a single 0–25 score that maps onto historical title contention. June 2 canon keeps WEV v3 as core, but no longer describes it as the single king metric: RQS owns the strongest Top-1 hit rate, and Hybrid_WEV is a companion layer.
Threshold bands
Backtest — June 2026 validation
June 2 validation places WEV v3 at 7/24 Top-1 (29%), 15/24 Top-3 (62%), and 20/24 Top-5 (83%) across the modern champion test. It remains the canonical team composite, but its strength is best read with AQI, RQS, Interior Anchor, PDR, and Efficiency Tax.
OEV correction: Post-2017 OEV ≥ 13 remains a modern floor, with 2018 Golden State at 13.1 as the observed minimum. No enforceable pre-2017 OEV floor exists because 2004 Detroit won with OEV = 0.93.
2. CPV — Complete Possession Value Directional
A multiplicative cross-check on WEV. Penalizes one-side rosters.
CPV is WEV's stricter cousin. Where WEV averages offense and defense, CPV multiplies them — so a team with elite offense and a 22nd-ranked defense gets penalized harder than the additive version would suggest. It's the metric that catches the "great offense, can't stop anyone in the playoffs" trap.
Use CPV when you want to ask: "is this roster two-way enough to survive a 7-game series against another top-10 team?" The 2017 GSW (KD-era) had the highest CPV in the dataset. The 2018 HOU and 2024 BOS are the two highest non-GSW marks across the past decade. Every championship roster since 2014 has cleared a CPV floor of roughly 6.5 (rough cut — sensitivity analysis is on the to-do list below).
3. SLS — Shelf Life Score Validated
How well does this player project to age? The backbone of every extension call.
SLS asks: across the next 3–4 years of a contract, what's the probability the player still produces at this level? It composites archetype (skill-driven games age, athleticism-driven don't), age, current efficiency, and career mileage.
Threshold bands
Backtest — 14 supermax/max deals, 2017–2025
I ran SLS retroactively on every supermax extension and every $200M+ max deal signed 2017–2025. The results were the cleanest signal in the entire framework stack:
| Player | Year signed | SLS at signing | Outcome |
|---|---|---|---|
| Stephen Curry | 2017 | 0.800 | 2 titles, MVP, validated |
| Nikola Jokić | 2022 | 0.898 | 1 title, 3 MVPs, validated |
| Shai Gilgeous-Alexander | 2024 | 0.853 | 2025 title + MVP, validated |
| Giannis Antetokounmpo | 2020 | 0.792 | 2021 title — borderline pass |
| Damian Lillard | 2019 | 0.738 | POR never advanced; trade required |
| Bradley Beal | 2022 | 0.621 | WAS rebuild, traded at loss |
| John Wall | 2017 | 0.541 | Total cap albatross |
| Russell Westbrook | 2017 | 0.576 | Traded 3x, bought out |
Result: every supermax with SLS ≥ 0.80 won a title. Every supermax with SLS < 0.70 became a cap problem. The 0.80 threshold separates "extend at max" from "do not extend" cleanly across the 14-deal sample. The 0.70–0.79 band is the genuine judgment-call zone.
4. GPI — Ghost Points Index Validated
How much of this player's scoring is empty calories?
GPI flags the high-volume scorer whose box-score line doesn't translate to wins. It's a multiplicative composite — a player only registers ghost points if they have both high volume and a penalty trigger (poor efficiency, losing team, sub-replacement PER). An efficient star on a winning team scores GPI = 0 regardless of how many points they put up.
2025-26 top of the ghost cohort
| Rank | Player | Team | USG / PPG / TS% | GPI |
|---|---|---|---|---|
| 1 | Dillon Brooks | PHO | 28.6 / 20.2 / .540 | 0.651 |
| 2 | Pascal Siakam | IND | 30.1 / 24.0 / .562 | 0.545 |
| 4 | Cooper Flagg | DAL | 26.9 / 21.0 / .548 | 0.423 |
| 5 | Michael Porter Jr. | BRK | 30.5 / 24.2 / .595 | 0.405 |
| 7 | Keyonte George | UTA | 27.9 / 23.6 / .609 | 0.327 |
| 11 | LaMelo Ball | CHO | 32.0 / 20.1 / .546 | 0.233 |
| 13 | DeMar DeRozan | SAC | 22.8 / 18.4 / .594 | 0.223 |
2025-26 bottom — ghost-free elite
Jokić, SGA, Luka, Wembanyama, Edwards, Booker, Mitchell, Towns, Harden — every one of them lands at GPI = 0 despite top-of-league volume, because efficiency × winning team neutralizes the ghost component. The metric correctly distinguishes high-volume production from high-volume empty calories.
Multi-season validation (10 seasons, 2016–2025)
The single-season cross-section is now validated against a 582 player-season historical sample. Players appearing in top-quartile GPI ≥3 seasons across the decade:
- Russell Westbrook — 4 top-quartile seasons (2019 OKC, 2020 HOU, 2021 WAS, 2022 LAL). Exact framework prediction of post-MVP regression on bad teams.
- Andrew Wiggins — 5 top-quartile seasons (every MIN year pre-trade). Drops out 2021+ on GSW. The cleanest "ghost arc" in the dataset.
- Kyle Kuzma — 4 top-quartile seasons. LAL bench + WAS rebuild.
- Carmelo Anthony — 3 top-quartile seasons in late-career decline (2016-2018).
Sophisticated framework finding: Some popular "anti-math" players don't actually qualify under the strict formula — Lillard, DeRozan, John Wall all had decent enough TS% that high volume on bad teams didn't trigger ghost. The framework correctly distinguishes "real volume on a fragile team" (Lillard) from "empty volume on a fragile team" (Westbrook post-OKC).
5. PDR — Playoff Decay Rate Validated (with reformulation)
Which archetypes regress against playoff defense, and which don't?
PDR measures the change in TS% and PER from regular season to playoffs, binned by player archetype. June 2 canon rejects the old binary "improvers vs. decayers" model. Every archetype tends to regress; the useful question is which archetypes regress least, and which get punished hardest when playoff defenses remove easy options.
2026 R1 sample (n = 124, ≥ 50 playoff minutes)
| Archetype | n | Avg ΔTS% (pts) | Avg ΔPER | Framework prediction |
|---|---|---|---|---|
| 3PT-heavy creator | 10 | −2.88 | −2.96 | −3% to −6% (validates floor) |
| Foul-drawer | 20 | −1.65 | −1.16 | −4% to −8% (direction right, magnitude lighter) |
| Catch-and-shoot | 16 | +0.39 | −0.41 | −5% to −8% (direction wrong this sample) |
| Two-way wing | 12 | −7.67 | −1.79 | +2% to +5% (prior — contradicted, see reformulation) |
| Playmaking big | 4 | 0.00 | +0.85 | +3% to +5% (prior — mixed, see reformulation) |
| Rim finisher | 13 | −4.61 | −0.38 | neutral (drop larger than expected) |
Specific case-level validations: Jalen Duren (foul-drawer, DET) collapsed from .688 TS to .517 — a textbook framework prediction. Jalen Suggs (3PT-heavy creator, ORL) PER dropped 9.1 points. Brandon Ingram (mid-range) dropped 8.4 PER, contradicting the "mid-range stable" claim.
Multi-season validation (10 seasons, 2016–2025)
Ran the full backtest against 1,392 RS→PO player-pairs over 10 years. The result forced a framework reformulation:
| Archetype | n | Avg ΔTS% | Avg ΔPER | Predicted | Verdict |
|---|---|---|---|---|---|
| 3PT-heavy creator | 95 | −3.52 | −3.26 | −3% to −6% | ✓ Validates floor |
| Catch-and-shoot | 209 | −3.36 | −1.86 | −5% to −8% | △ Direction right, lighter magnitude |
| Foul-drawer | 99 | −1.49 | −1.90 | −4% to −8% | △ Direction right, lighter magnitude |
| Two-way wing | 182 | −2.39 | −1.81 | −2% to −3% (regressor) | ✓ Confirmed (reformulated) |
| Playmaking big | 66 | −2.62 | −2.53 | −2.5% to −3% (regressor) | ✓ Confirmed (reformulated) |
| Mid-range scorer | 26 | −2.42 | −1.17 | −1% to 0% | △ More negative than predicted |
| Rim finisher | 140 | −1.53 | −1.81 | neutral | △ Slight regression vs neutral |
The honest reformulation: the framework's binary "improvers vs. decayers" claim is invalidated by the 1,392-pair sample. The accurate story is every archetype regresses in playoffs — the question is which regress least. Two-way wings do not elevate: the June 2 two-way wing sample is 182 seasons with mean ΔPER = −1.81, worsening from −1.35 (2016–2020) to −2.41 (2021–2025). The framework still differentiates archetypes, but the asymmetric improver/decayer model is gone.
6. SSR — Sunrise / Sunset Ratio Validated (with reformulation)
Which archetypes age gracefully? Which fall off a cliff?
SSR is the aging-curve framework. The claim: skill-driven archetypes (shooting, IQ, playmaking, footwork) age well; athleticism-driven archetypes (rim-running, transition speed, vertical pop) collapse hard at 30. The metric is the ratio of average production at age 22–26 to average production at age 30–34, binned by archetype.
2025-26 cross-section
| Age band | n | Avg PER | Avg BPM | Avg WS/48 |
|---|---|---|---|---|
| 22–26 (ascending) | 132 | 15.16 | +0.40 | 0.110 |
| 27–29 (peak) | 62 | 15.68 | +0.78 | 0.121 |
| 30–34 (declining) | 47 | 16.12 | +1.39 | 0.124 |
| 35+ (tail) | 16 | 17.18 | +1.44 | 0.102 |
Counter-intuitive finding: Older bands have higher mean PER. That's survivorship bias — only the players who remain elite past 30 are still earning rotation minutes. Young players include lots of marginal rotation guys; older players are filtered down to the ones who kept their jobs. This is a methodology caveat, not a framework refutation.
The list of names tells the right story
Graceful agers (35+, PER ≥ 16): Jimmy Butler (36, 23.5), Curry (37, 22.6), Harden (36, 21.7), Durant (37, 21.1), LeBron (41, 20.8), DeRozan (36, 17.8), Paul George (35, 16.7). All skill-driven. LeBron is the singular athleticism-driven outlier — and he's been documented as such for a decade.
Declining-warning cohort (30–34, PER < 16): Khris Middleton (34, 10.9), Tobias Harris (33, 15.0), Jordan Clarkson (33, 11.6), Schröder (32, 12.9), Caldwell-Pope (32, 11.0), Marcus Smart (31, 9.9). Each is a contract-decision flag for their current team.
Longitudinal validation (10 seasons, 2016–2025)
The cross-section is now backed by a true longitudinal: 86 players appearing in BOTH age 22–26 AND age 30–34 windows in the dataset.
- 76% of players (65 of 86) declined — SSR > 1.0. The framework's foundational aging claim is empirically real.
- 24% aged well or improved — SSR < 1.0. The "graceful agers" cohort is roughly the size the framework predicted.
- Max observed SSR = 1.77 (Avery Bradley). Validates the framework's 1.8 ceiling claim — it's the actual top of the empirical distribution.
- Median SSR = 1.086. Reframes the magnitude story: the typical declining player is only mildly down, not at 1.8.
Archetype-aging claim — empirically supported
Of the 21 players who aged well (SSR < 1.0), 15 are skill/IQ-driven — shooters, playmakers, defensive specialists (Caruso, Butler, Brogdon, Derrick White, Royce O'Neale, Marcus Morris). Of the 14 heavy decliners (SSR ≥ 1.30), 9 are athleticism-dependent guards/wings (Bradley, Bullock, Bledsoe, Bazemore, Wall, Hayward, Rozier).
Skill-driven players age into the SSR < 1 cohort at a 4:1 ratio over the heavy-decline cohort. That's the framework's archetype claim, validated quantitatively.
7. CSG — Cap Space Ghost Directional
What you're paying for the games a player didn't play.
CSG is the simplest framework in the stack. It quantifies the dollar cost of every game a high-priced player missed during the season — the literal cap dollars allocated to a roster spot that produced zero on-court value.
2025-26 worst CSG figures (rotation tier)
| Player | Team | Salary | Games missed | CSG |
|---|---|---|---|---|
| Trae Young | WAS | $46.0M | 77 | $43.2M |
| Anthony Davis | WAS | $54.1M | 62 | $40.9M |
| Joel Embiid | PHI | $55.2M | 44 | $29.6M |
| Paul George | PHI | $51.6M | 45 | $28.3M |
CSG pairs naturally with SLS — the question isn't just "is this player good" but "is this player available?" The 2025-26 Wizards illustrate the framework cleanly: AD and Trae's combined CSG was approximately $84M, on a team whose total cap was $185M. ~45% of the team's salary produced zero on-court value across the season.
8. CIS — Championship Identity Shift Era Context
How modern is your team's offensive identity?
CIS measures the gap between a team's 3-point attempt rate and the league-average 3-point attempt rate that season. It is useful as era-readiness context, not as a standalone champion predictor.
26-season backtest (2000–2025)
- Era trend r = 0.9660 — league 3PA share rose from 17% (2000) to 39% (2025) in a near-perfect linear progression.
- Direct champion-prediction correlation r = 0.039 — CIS describes era alignment more than title odds by itself.
- Interpretation: teams must be era-compliant, but shot quality, possession sovereignty, defense, anchor quality, and playoff decay decide survival.
9. Clutch Paradox Pending
Why shot-quality models systematically underrate ISO creators in the final two minutes.
The Clutch Paradox claim: shot-quality models (xPPP, EPV, Second Spectrum's open-shot models) all converge on "ISO is a bad play call" because ISO's PPP across all situations averages 0.886 — well below the 1.088 league-average possession value. But in the final two minutes of a close game, the alternative isn't a clean spot-up corner three — it's a broken-play turnover or a shot-clock violation. Stable closers (SGA, Brunson, Lillard, Curry) outperform model expectation precisely because they execute ISO when models say they shouldn't.
The framework's prediction: a player's gap between clutch FG% and regulation FG% is a stable, repeatable trait — not random noise. Plus-gap players are real "closers"; minus-gap players are not.
Why this one is tagged Pending
Clutch Paradox needs per-player clutch-time performance data (final 2 minutes, within 5 points). That's not in the basketball-reference scrape and isn't publicly available without hitting NBA.com Stats's leagueclutchplayerstats endpoint, which requires header-spoofing (User-Agent, Origin, Referer, x-nba-stats-token) — well-documented but not yet verified from this environment.
Methodology is documented and ready to run as soon as the data layer comes online: pull clutch player stats for 2015-16 through 2025-26, compute Δ FG% (clutch − regulation) for every player with ≥100 clutch FGA, run year-over-year repeatability test (framework predicts r > 0.3), then test against shot-quality model predictions. Estimated time once unblocked: 3–4 hours.
10. Efficiency Tax Validated
Top-3 payroll concentration vs. championship outcomes — the structural fragility filter.
Efficiency Tax measures roster fragility through the lens of payroll concentration. The hypothesis: there's a sweet-spot band of top-3 player concentration that historical champions have lived inside, and rosters above the band are structurally fragile.
Threshold bands
26-season backtest (2000–2025)
Using top-3 player Win Share share as a proxy for payroll concentration (because pre-2010 historical salary data is incomplete), the result was the cleanest validation in the framework:
- 23 of 26 champions (88%) landed in the 55–70% sweet spot.
- 1 champion above 70%: 2020 LAL (75.6%). This was the bubble title — neutral arenas, no travel, no crowds. The bubble context likely amplified the top-2 advantage in ways that don't replicate. The exception that proves the rule.
- 2 champions below 55%: 2019 TOR (53.9%) and 2024 BOS (55.0%). Both required exceptional depth — 4–5 starter-quality players carrying real Win Share load.
- Mean: 62.2%. Median: 61.2%. Range: 53.9% – 75.6%.
2025-26 RED zone (top-3 share ≥ 70%)
| Team | Top-3 share | Wins | NRtg | Top-3 players |
|---|---|---|---|---|
| PHI | 74.9% | 45 | −0.1 | Embiid + George + Maxey (all availability flagged) |
| BOS | 71.4% | 56 | +8.1 | Tatum + Brown + White (Tatum Achilles, framework in real time) |
| GSW | 70.6% | 37 | −0.6 | Curry + Butler + Porzingis (missed playoffs at $200M+) |
The 2025 OKC champion landed at 59.3% — right in the historical sweet spot. SGA at $38.3M (well below market value), Holmgren and Williams on rookie scale producing at All-Star level. This is the championship blueprint of 2025: concentration earned by performance, not assumed by salary.
How the stack composes
No single framework drives a recommendation. Every team-page call uses 3–4 of them in combination, organized around the kind of decision being made.
Contract / extension decision
SLS asks "will this player still be good in 3 years?" GPI asks "is the production real or empty?" CSG asks "are they actually on the floor?" A green-light extension passes all three. A walk-away fails any two.
Roster construction
Efficiency Tax sets the concentration ceiling. CIS sets the era-fit floor. WEV scores the resulting roster against historical contender bands. The 2025 OKC build hits all three perfectly.
Playoff projection
PDR identifies which archetypes will regress. Clutch Paradox identifies who actually closes vs. who fades in the final 2 minutes. CPV catches one-sided rosters that get exposed once defenses lock in over 7 games.
Aging / horizon
SSR is the cohort-level aging-curve read by archetype. SLS is the individual-player projection. Same underlying claim — skill ages, athleticism doesn't — viewed from cohort and player angles.
When a team page says "the framework call on this player is X," what's actually happening is 3–4 of the metrics above being applied in sequence and converging on a single read. If they don't converge, the page says so — and explains which framework is pulling which way.
Honest gaps in the stack
I'd rather you know the holes up front than discover them later. Three buckets:
Still blocked
- Clutch Paradox — NBA.com Stats endpoint is firewalled at the analysis-environment level (verified 2026-04-30). Methodology fully documented; the unblock requires running the scrape from a residential connection or sourcing from a third-party clutch aggregator. Estimated 3–4 hours once unblocked.
Sensitivity work (refinement, not gap)
- The four-input weights for SLS (0.30 / 0.25 / 0.30 / 0.15) are first-pass. Initial gut check: rankings stable, magnitudes could shift ±0.05.
- The GPI penalty weights (×8 / ×1.5 / ÷8) are first-pass. Top-quartile rankings stable across the 10-year multi-season validation; mid-distribution is where weights matter most.
- The WEV v3 component weights are now 0.30 / 0.60 / 0.10. DEV carries the heavier load because defensive identity is the more consistent championship separator; OEV is retained as a modern floor metric, not a separator.
Methodology extensions (would tighten confidence further)
- GPI vs salary regression — joining GPI with multi-year salary data to flag overpaid empty-volume contracts. Most actionable extension queued.
- Pre-2015 historical extension — the multi-season scrape covers 2016–2025. Extending to 2010–2015 would catch earlier canon cases (Carmelo NYK pre-2014, Aldridge POR, Drummond DET).
- CSG v2 should weight long-term injury vs. load-management differently (current version is blunt).
- CIS should incorporate shot quality (eFG% on 3PA), not just volume share.
- The PDR archetype tagger uses a heuristic — a hand-validated archetype tag would catch borderline cases (Mikal Bridges currently mis-bucketed).
The 2026-04-30 multi-season scrape closed every multi-season backtest gap (GPI, PDR, SSR) and produced the most important framework finding in the methodology stack — the PDR reformulation that says all archetypes regress in playoffs, the question is which regress least. The remaining items on this page are sensitivity refinements and one off-sandbox unblock (Clutch Paradox), not foundational gaps.
DataDunkNBA Research
For teams, agencies, media desks, and decision-makers who need the framework applied to a real choice, DataDunkNBA Research offers one focused engagement: pre-draft, mid-season, or playoff framework reports for a single contracted team per cycle.
This is not a broad subscription product. Engagements are intentionally limited so the work can stay specific, useful, and conflict-aware. Read the consultancy page or email directly: bobby@datadunknba.com.
A note on what this is
This stack isn't proprietary genius. The component metrics (PER, BPM, WS/48, TS%, USG%, shot-share) all come from public data — basketball-reference, NBA.com, Cleaning the Glass. What I've built is the composition: which inputs go into which composite, what the threshold bands are, and what the historical signal looks like when you backtest the whole thing across 26 seasons of champions.
I do this because I love it. I'm a stay-at-home dad in San Diego with a Celtics season ticket habit, a Substack (DataDunkNBA), and roughly 1,000 hours of basketball-reference scraping behind me at this point. The framework stack is the artifact of that work. If it's useful to a front office, that would be the highest possible return on the time. If it's just a fun read for another GM nerd, that's enough too.
Either way — thanks for reading this far.
— Bobby Morong, June 2026