KPM v1 Methodology
Why I Adjusted the KPM Build
KPM v1 was rebuilt to focus on two things:
- Player standalone value
- n+1 season predictiveness
Why Rebuild KPM?
KPM v0 answered a specific question:
Did this player's team win the possession battle while they were on the floor?
But it was firmly team-success oriented:
- An average player on a good team looked good.
- An average player on a bad team looked bad.
- In some cases, a genuinely good player could still look bad.
The team residual adjustment sometimes over-corrected for team performance. It was even possible - though not necessarily plausible - that a +3.0 player on a -5.0 net-rating team could see their KPM fall to (not an exact case but potentially) +1.0 simply because their teammates bled points while they sat.
As a result, the model sometimes washed out real individual-player signal with team-level noise.
KPM v1 Design Goals
KPM v1 was rebuilt around three primary goals.
Predictive Capacity
Train against luck-adjusted RAPM instead of raw, actual RAPM. Luck adjustment removes some of the noise created by hot-shooting variance, opponent shooting variance, favorable lineup combinations, and short-term on/off noise. The goal is to retain the signal most likely to project forward.
Reduce Team Over-Correction
The two-stage architecture separates player contribution from team context: box score model, then lineup-context model. Because individual contribution is isolated before broader team context enters the model, the team adjustment has less to "fix."
Role Sensitivity
PIPM-style lineup-context features make the model aware of who shares the floor with each player. These features include on-court ratings, on/off ratings, and interaction terms. A domestic guard playing next to an MVP-level import is evaluated differently from a domestic guard running the second unit.
KPM v0 vs. KPM v1
| Dimension | KPM v0 | KPM v1 |
|---|---|---|
| Training Target | Both Raw RAPM & Luck-adjusted RAPM in different stages - noisy and includes shooting and lineup luck | Only Luck-adjusted RAPM - reduces shooting variance and favorable-lineup noise |
| Team Adjustment | Aggressive team residual allocation was baked into KPM. Players on bad teams could be penalized to best approximate team net rating value, even if the player individually was quite strong. | Team residuals are diagnostic-only. KPM is the player-level model output; though it uses lineup outcome context, the minutes-weighted team reconciliation does not overwrite individual values. |
| Public Scaling | None | Scaling for BPM / EPM style all-NBA/all-star bands, selected through a scale-bakeoff sweep |
| Shrinkage | Uniform shrinkage loosely applied across game types | Playoff & cup shrinkage to reduce noise |
| Validation | Basic correlation checks against team net rating | Leave-one-season-out holdout, season-level review, and team net-rating validation |
How the Two-Stage Architecture Works
Stage 1: Box Model (M1)
This establishes the player's baseline contribution:
What would we expect from this player based only on counting stats, efficiency, position, and import status?
Defensive impact is calculated as:
Defensive Impact = Total Impact - Offensive ImpactStage 1 Outputs
o_box_kpm_v1
d_box_kpm_v1These represent the player's estimated impact using only box-score information.
Stage 2: Lineup Context
The Stage 1 box predictions are passed into a second Ridge regression alongside lineup-context features.
This is where the model adjusts for who the player shares the floor with and who the player plays against.
The interaction terms help the model distinguish between:
- A driver of success
- A passenger on a good unit
For example, a domestic guard posting strong on/off numbers next to an MVP import center should not be interpreted the same way as a domestic guard producing similar numbers while leading a bench unit.
Stage 2 Outputs
o_kpm_v1_model
d_kpm_v1_model
kpm_v1_modelPublic Scale Bands
| KPM v1 | Interpretation |
|---|---|
| +8.0 or higher | All-time peak |
| +6.0 to +8.0 | MVP-caliber |
| +4.0 to +6.0 | All-KBL level |
| +2.0 to +4.0 | Strong starter |
| 0.0 to +2.0 | Positive rotation player |
| < 0.0 | Below average |
| -2.0 | Replacement Level |
What KPM v1 Means for KBL Player Evaluation
Import Evaluation Becomes Sharper
A +5.0 KPM v1 import on a lottery team can now be valued more appropriately than a +3.5 import on a contender.
Under KPM v0, the lottery-team import could be dragged down by team residuals.
Under KPM v1, lineup-context features help isolate whether the player was producing under unfavorable conditions, including weak supporting lineups, poor bench performance, and negative team context. This is especially useful for multi-year import-retention decisions.
Domestic Player Contracts: Finding Undervalued Players
The KBL free-agent market often prices players according to reputation, points per game, and team success. KPM v1 can surface players whose impact exceeds their box-score profile, including defensive anchors, low-usage players who improve lineup efficiency, and players whose value is suppressed by weak team context. It may also identify noisy scorers whose efficiency collapses without strong import creation beside them.
Role Context: Same Number, Different Player
Two players can both have a +2.0 KPM while providing completely different value.
Example A
Offense: +2.5
Defense: -0.5
Total: +2.0Example B
Offense: +1.0
Defense: +1.0
Total: +2.0These are different player archetypes.
KPM v1's offensive and defensive decomposition, combined with role-sensitive lineup context, helps answer who is good, what they are good at, in what context they are good, how dependent they are on teammates, and how transferable their impact is. This also helps explain KPM changes after a player moves teams. For example, a movement shooter who loses a paint-collapsing import center may see their value decline because their new offensive environment no longer creates the same advantages.
How We Know It Works
Team-Level Validation
Minutes-weighted KPM explains a large portion of team net-rating variance:
Pearson correlation: 0.937
R²: 0.879In other words, the minutes-weighted player values explain approximately 87.9% of the variation in team net rating.
Feature Exclusions
Player tracking related role labels were excluded as bakeoff testing suggested that they:
- Added little stable predictive signal
- Increased overfitting risk
- Reduced model simplicity
- Made coefficient behavior harder to interpret
What KPM v1 Still Does Not Explain
KPM v1 improves player evaluation, but it does not fully capture every aspect of basketball impact.
- Playoff Tactical Adjustments
- Matchup Quality Effects
- Coaching-Specific Usage Patterns
- Defensive Assignment Difficulty
- Mid-Season Import Replacement Context