ShotQuality

ShotQuality RAPM

Break down every player's shooting efficiency impact into shot quality, shot making, and free throw value — plus their defensive counterparts. No box priors. Powered by 3-year time-decay RAPM (700-day half-life).

Interested in accessing this data? Request access here

Min poss:
PlayeroTSSQoSQoMakeoFTPoss
DEN
+6.5
+1.8
+3.7
+0.9
17,472
GSW
+5.3
+2.5
+2.5
+0.3
12,876
HOU
+4.3
+1.1
+2.4
+0.8
15,757
MIL
+4.2
+3.0
+1.3
-0.2
12,460
OKC
+3.8
-0.4
+2.7
+1.4
18,029
LAL
+3.5
+1.1
+2.2
+0.3
15,768
DEN
+3.2
-0.0
+3.0
+0.3
16,018
LAC
+3.2
+0.5
+2.2
+0.2
11,365
IND
+3.1
+1.7
+1.5
-0.0
12,235
NYK
+3.0
+0.8
+1.5
+0.8
15,934
LAL
+2.8
+0.8
+0.7
+1.1
14,481
MIN
+2.7
-0.3
+2.2
+0.7
13,935
CLE
+2.5
+1.1
-0.1
+1.4
16,063
LAL
+2.4
+0.1
+2.5
-0.1
8,417
MEM
+2.3
+0.3
+1.8
+0.3
4,029
PHI
+2.3
-0.2
+1.4
+1.2
6,584
POR
+2.2
+0.3
+1.6
+0.4
13,510
SAS
+2.1
-0.2
+2.2
+0.1
12,538
SAS
+2.1
+1.4
+0.2
+0.2
11,214
MIN
+2.1
-0.4
+1.7
+0.7
17,854
TOR
+2.0
-0.4
+2.7
-0.4
10,929
WAS
+2.0
+1.0
+0.1
+0.9
10,968
CLE
+2.0
+1.1
+1.2
-0.1
13,490
PHX
+2.0
+0.2
+1.0
+0.7
15,154
CHI
+1.9
+0.5
+1.3
+0.1
12,411
GSW
+1.9
-0.2
+0.8
+1.3
10,779
LAC
+1.9
+0.9
+1.2
-0.2
12,142
CHA
+1.9
+1.3
+0.7
-0.1
4,904
MIN
+1.9
+0.3
+1.6
+0.1
2,883
DET
+1.8
+0.2
+1.0
+0.5
14,178
IND
+1.8
+1.0
+0.8
0.0
8,980
MEM
+1.8
-0.0
+1.3
+0.7
3,204
IND
+1.8
+0.0
+1.4
+0.3
11,519
CHA
+1.8
+1.1
+0.6
-0.1
8,637
NYK
+1.8
+0.1
+1.3
+0.5
17,663
CLE
+1.7
-0.1
+1.3
+0.5
14,779
CHA
+1.7
-0.0
+1.5
+0.2
13,366
LAL
+1.7
+0.3
+1.2
+0.3
11,487
PHX
+1.6
+0.9
+0.3
+0.5
11,114
OKC
+1.6
+0.3
+1.3
+0.1
12,861
MIL
+1.6
+0.8
+0.6
+0.1
14,786
BOS
+1.6
-0.1
+1.5
+0.1
16,131
GSW
+1.5
-0.3
+1.7
+0.3
4,591
ATL
+1.5
-0.3
+1.7
+0.2
14,426
DAL
+1.5
+0.2
+1.3
+0.0
9,649
LAL
+1.4
-0.1
+1.3
+0.3
6,104
LAC
+1.4
-0.5
+1.5
+0.5
3,150
BOS
+1.4
+1.2
+0.6
-0.3
11,189
SAC
+1.4
+0.3
+1.4
-0.1
9,513
IND
+1.4
-0.9
+2.9
-0.5
8,924
MIA
+1.4
+0.3
+0.7
+0.5
12,349
DET
+1.4
-0.1
+1.6
-0.3
9,736
UTA
+1.3
+0.8
+0.1
+0.4
9,813
ATL
+1.3
-0.1
+1.9
-0.5
13,261
MIA
+1.3
+0.7
+0.9
-0.2
10,834
ATL
+1.3
+0.1
+1.4
-0.2
7,401
CHI
+1.3
+0.2
+0.8
-0.1
1,287
SAS
+1.3
-0.3
+1.5
-0.1
14,605
MIL
+1.2
-0.1
+2.1
-0.5
6,459
OKC
+1.2
+0.5
+0.3
+0.5
10,177
PHI
+1.2
-0.3
+1.4
+0.2
5,604
CHI
+1.1
+0.2
+1.1
-0.3
6,639
SAS
+1.1
+0.4
+1.0
-0.3
4,410
SAS
+1.1
+0.5
+0.5
+0.2
11,571
DEN
+1.1
+0.8
+0.2
+0.0
10,038
NOP
+1.1
+0.4
+0.5
+0.1
9,494
DET
+1.1
+0.7
+0.7
-0.3
11,711
LAL
+1.1
+1.1
-0.1
-0.1
14,252
SAC
+1.1
-1.6
+2.1
+0.6
16,605
UTA
+1.1
+0.1
+0.8
+0.0
6,622
BOS
+1.0
-0.1
+0.7
+0.2
13,706
LAC
+1.0
+0.4
+0.3
+0.3
13,418
MIL
+1.0
+0.7
-0.7
+0.9
10,042
LAL
+1.0
-0.2
+0.8
+0.4
4,267
GSW
+0.9
+0.1
+1.3
-0.4
10,552
UTA
+0.9
+0.3
+0.4
+0.1
7,465
PHI
+0.9
-0.1
+0.3
+0.8
15,004
ORL
+0.9
-0.3
+0.6
+0.4
13,339
LAC
+0.9
+0.2
+0.9
-0.2
7,285
OKC
+0.9
-0.2
+0.7
+0.3
6,449
MIL
+0.9
+0.7
+0.4
-0.4
9,068
MEM
+0.9
-0.2
+0.7
+0.2
1,634
CHA
+0.8
-0.4
+1.0
+0.0
6,510
DAL
+0.8
+0.0
+0.9
-0.1
9,450
OKC
+0.8
+0.3
+0.6
-0.2
9,706
ORL
+0.8
+0.6
-0.1
+0.1
9,355
MEM
+0.8
+0.6
+0.5
-0.2
8,208
OKC
+0.8
-0.0
+1.2
-0.4
6,249
POR
+0.7
+0.5
+0.5
-0.0
13,394
MIN
+0.7
+0.5
+0.3
-0.1
14,641
CHI
+0.7
-0.3
+1.4
-0.4
9,938
ATL
+0.7
+0.2
+0.2
+0.3
11,905
DAL
+0.7
-0.2
+1.1
-0.2
3,270
SAS
+0.7
-0.3
+1.2
-0.2
2,413
UTA
+0.7
+0.4
+0.4
-0.2
4,868
NYK
+0.7
+0.5
+0.5
-0.3
15,404
DAL
+0.7
+0.4
+0.5
-0.2
5,546
BKN
+0.7
+1.3
-0.2
-0.4
15,800
MEM
+0.7
+0.3
-0.1
+0.5
2,768
DAL
+0.6
-0.4
+0.4
+0.6
10,979
MIL
+0.6
-0.1
+1.1
-0.3
1,528
PHI
+0.6
+0.0
+1.0
-0.3
4,225
WAS
+0.6
-0.0
+0.6
+0.1
233
WAS
+0.6
+0.2
+0.2
+0.3
8,109
DEN
+0.6
+0.8
-0.7
+0.6
13,705
SAC
+0.6
+0.1
-0.2
+0.7
10,114
MIL
+0.6
-0.3
+0.5
+0.4
7,529
ORL
+0.6
+0.1
+0.1
+0.6
11,500
PHI
+0.6
+0.2
+0.5
-0.1
9,946
DAL
+0.6
-0.4
+1.4
-0.7
2,166
UTA
+0.6
+0.8
-0.7
+0.5
3,764
WAS
+0.5
+0.1
+0.5
+0.0
10,566
UTA
+0.5
+0.5
-0.8
+0.9
12,043
OKC
+0.5
+0.1
-0.1
+0.4
4,271
BOS
+0.5
+0.8
-0.4
-0.0
17,247
IND
+0.5
-1.1
+1.8
-0.1
17,496
TOR
+0.5
+0.1
+1.1
-0.5
8,260
TOR
+0.5
-0.4
+1.0
+0.1
10,593
DAL
+0.5
-0.2
+0.5
+0.2
8,862
CHI
+0.5
+0.0
+0.5
-0.0
477
HOU
+0.5
0.0
+0.6
-0.1
8,875
NOP
+0.5
+0.5
-0.2
+0.1
10,238
DET
+0.5
-0.2
+1.0
-0.2
10,195
DEN
+0.5
+0.0
+0.6
-0.0
8,708
LAC
+0.4
+0.1
+0.2
+0.1
10,473
LAL
+0.4
-0.5
+0.7
+0.3
4,548
TOR
+0.4
+0.4
-0.1
+0.0
5,723
PHX
+0.4
-0.3
+1.3
-0.7
6,077
CHI
+0.4
+0.0
+0.2
+0.2
10,793
PHI
+0.4
-0.1
+0.6
-0.1
454
MIA
+0.4
-0.6
+1.3
-0.4
10,575
BOS
+0.4
+0.5
+0.6
-0.7
13,511
MIA
+0.4
-0.4
+0.7
-0.1
5,397
NOP
+0.4
+0.2
-0.6
+0.8
3,885
MEM
+0.4
+0.2
+0.5
-0.3
2,911
DET
+0.4
-0.1
+0.6
-0.1
5,218
LAC
+0.4
-0.5
+1.1
-0.3
2,986
CHA
+0.4
+0.6
-0.5
+0.1
10,356
BKN
+0.3
+0.4
-0.3
+0.1
2,609
SAC
+0.3
+1.2
-0.4
-0.3
12,180
NOP
+0.3
-0.3
+0.3
+0.3
8,914
IND
+0.3
-0.0
+0.2
+0.1
2,279
SAS
+0.3
-0.1
+0.2
+0.0
8,554
LAC
+0.3
+0.1
-0.1
+0.6
9,740
+0.3
-0.3
+0.4
+0.2
1,297
GSW
+0.3
-0.1
-0.1
+0.6
8,196
BKN
+0.3
-0.1
+0.5
-0.1
739
BOS
+0.3
+0.0
+0.5
-0.3
2,132
GSW
+0.3
+0.4
+0.1
-0.1
5,806
CHI
+0.3
-0.5
+1.0
-0.3
5,579
GSW
+0.3
-0.0
+0.3
-0.1
537
PHI
+0.3
+0.2
+0.1
+0.0
5,020
NOP
+0.3
+0.4
-0.5
+0.2
12,477
DET
+0.3
+1.0
-0.7
-0.1
12,133
GSW
+0.2
+0.4
-0.2
+0.2
11,433
+0.2
-0.0
+0.1
+0.2
623
HOU
+0.2
+0.2
+0.2
-0.3
14,438
WAS
+0.2
-0.1
+0.1
+0.2
1,723
DET
+0.2
-0.7
+0.7
+0.1
5,958
MIL
+0.2
+0.1
+0.4
-0.2
9,818
ATL
+0.2
-0.5
+1.1
-0.3
13,113
CLE
+0.2
-0.8
+0.6
+0.3
12,833
LAC
+0.2
0.0
+0.1
+0.1
823
IND
+0.2
+0.9
+0.1
-0.6
12,393
WAS
+0.2
-0.4
+0.7
-0.1
1,154
NYK
+0.2
-0.2
+0.7
-0.4
1,251
MEM
+0.2
+0.4
+0.0
-0.2
9,615
IND
+0.2
-0.1
+0.4
-0.1
911
CLE
+0.1
+0.6
-0.3
-0.3
13,050
LAC
+0.1
-0.4
+0.7
-0.4
11,290
+0.1
+0.1
+0.3
-0.2
1,039
WAS
+0.1
-0.5
+0.6
+0.0
2,846
CLE
+0.1
+0.9
-0.9
-0.2
8,385
SAC
+0.1
+0.1
-0.4
+0.4
11,079
MIN
+0.1
-0.4
+0.6
-0.3
13,888
BKN
+0.1
-0.2
+0.2
-0.0
561
MIA
+0.1
-0.8
+0.6
+0.2
15,333
MEM
+0.1
-0.6
+0.6
+0.0
5,784
DEN
+0.1
+0.2
+0.3
-0.3
9,984
DEN
+0.1
+0.4
-0.1
-0.2
365
NYK
+0.1
-0.1
+0.1
+0.2
17,413
PHI
+0.1
-0.4
+0.0
+0.4
11,691
MIN
+0.0
-0.0
+0.2
-0.1
486
CLE
+0.0
+0.6
-0.3
-0.2
7,891
MEM
+0.0
+0.2
-0.8
+0.6
5,361
BOS
+0.0
+0.4
-0.2
-0.2
3,214
IND
0.0
-0.0
+0.1
-0.1
414
ORL
0.0
-0.5
+0.7
-0.1
2,076
CLE
-0.0
+0.3
-0.4
-0.0
8,955
GSW
-0.0
-0.2
+0.3
-0.1
4,805
MEM
-0.0
-0.4
+0.5
-0.1
1,100
UTA
-0.0
-0.3
+0.1
+0.2
1,438
LAC
-0.0
+0.4
+0.1
-0.4
8,213
WAS
-0.1
-0.6
+0.2
+0.3
3,410
CHI
-0.1
-0.3
+0.1
+0.2
3,612
NOP
-0.1
-0.9
+0.7
+0.2
3,669
MIL
-0.1
-0.3
+0.4
-0.2
10,879
SAS
-0.1
-0.5
+0.4
+0.0
2,943
LAL
-0.1
+0.1
-0.7
+0.4
8,306
IND
-0.1
-0.4
+0.6
-0.3
3,228
WAS
-0.1
-0.3
+0.5
-0.3
5,885
SAS
-0.1
+0.2
-0.3
+0.1
13,395
-0.1
-0.0
-0.0
-0.1
195
-0.1
+0.0
-0.2
+0.1
981
HOU
-0.1
-0.2
+0.3
-0.4
5,537
GSW
-0.1
-0.1
+0.5
-0.3
1,005
WAS
-0.1
-0.5
+0.7
-0.1
3,291
ATL
-0.1
+0.7
-1.1
+0.3
11,863
ATL
-0.1
-0.7
+0.5
+0.1
5,459
MIL
-0.1
-0.7
+1.2
-0.6
10,471
ORL
-0.1
+0.2
-0.7
+0.3
5,020
ATL
-0.1
+0.2
-0.3
-0.1
8,260
PHX
-0.1
+0.1
+0.2
-0.4
1,841
MIA
-0.1
-0.5
+0.0
+0.3
11,447
POR
-0.1
+0.2
-0.2
-0.1
2,861
OKC
-0.2
-0.0
-0.7
+0.5
9,446
LAC
-0.2
-0.4
-0.3
+0.7
8,937
HOU
-0.2
+0.0
-0.2
+0.1
10,656
IND
-0.2
+0.0
-0.2
+0.0
4,121
SAS
-0.2
+0.2
-0.2
-0.1
6,125
IND
-0.2
+0.1
-0.1
-0.1
2,961
MIN
-0.2
+0.6
-0.9
+0.3
11,202
-0.2
-0.1
+0.0
-0.1
228
IND
-0.2
-0.5
+0.4
-0.2
881
WAS
-0.2
-0.2
+0.0
-0.1
438
ORL
-0.2
-1.6
+0.8
+0.3
14,371
-0.2
+0.0
-0.1
-0.1
233
LAL
-0.2
-0.0
-0.2
+0.0
212
BKN
-0.2
+0.1
-0.3
-0.0
9,900
DEN
-0.2
+0.2
-0.5
+0.0
11,394
MEM
-0.2
-0.2
+0.5
-0.4
3,860
-0.2
-0.1
-0.2
+0.1
1,716
UTA
-0.2
0.0
+0.0
-0.1
431
-0.2
-0.0
-0.1
-0.1
204
POR
-0.3
-1.1
-0.0
+0.8
10,411
BOS
-0.3
+0.1
-0.0
-0.3
14,553
DEN
-0.3
+0.4
-0.8
-0.1
3,172
DEN
-0.3
+0.6
-0.9
-0.1
12,957
CHA
-0.3
+0.4
-1.2
+0.7
3,425
SAC
-0.3
-0.8
+0.6
-0.1
3,446
NOP
-0.3
+0.6
-1.0
+0.4
9,092
CLE
-0.3
+0.0
-0.6
-0.1
8,703
MEM
-0.3
+0.5
-1.0
+0.2
4,071
NYK
-0.3
-0.2
+0.2
-0.3
18,529
-0.3
-0.1
-0.0
-0.1
723
PHI
-0.3
+0.0
-0.1
-0.2
1,714
-0.3
-0.2
+0.2
-0.3
2,629
ORL
-0.3
-0.5
-0.1
-0.1
2,307
BOS
-0.3
-0.1
-0.2
-0.2
3,005
CHA
-0.3
-0.2
-0.3
-0.1
6,376
PHX
-0.3
+0.0
-0.1
-0.3
1,203
BOS
-0.3
+0.1
-0.3
-0.1
3,445
CHA
-0.3
-0.2
-0.2
+0.1
221
CLE
-0.3
-0.2
+0.3
-0.3
4,559
POR
-0.3
-0.5
+0.1
+0.1
9,867
POR
-0.3
-0.1
+0.1
-0.3
2,084
DET
-0.3
+0.2
-0.3
-0.1
475
MIA
-0.3
-0.0
-0.5
+0.1
699
MIN
-0.3
+0.4
-0.7
-0.1
15,863
PHX
-0.3
-0.4
+0.7
-0.6
5,565
OKC
-0.3
-0.1
-0.1
-0.3
3,428
-0.3
-0.1
-0.2
-0.1
629
WAS
-0.3
-0.2
+0.3
-0.5
5,828
BKN
-0.3
-0.3
+0.1
+0.1
2,283
POR
-0.4
-0.0
-0.1
-0.2
346
TOR
-0.4
-0.8
+0.2
+0.2
10,476
-0.4
-0.1
-0.1
-0.2
390
OKC
-0.4
-0.6
+0.6
-0.2
13,523
-0.4
-0.3
+0.0
-0.1
903
PHI
-0.4
-0.3
0.0
-0.1
1,962
PHX
-0.4
-0.2
-0.1
-0.0
291
CHI
-0.4
-0.0
-0.3
+0.1
9,595
MIA
-0.4
-0.5
-0.2
+0.4
4,431
IND
-0.4
-0.2
+0.2
-0.4
13,430
LAC
-0.4
-0.2
-1.5
+1.2
11,211
BKN
-0.4
-0.2
+0.2
-0.2
2,399
GSW
-0.4
-0.3
+0.7
-0.6
2,972
CHA
-0.4
-0.3
+0.1
-0.1
1,481
LAC
-0.4
+0.0
-0.1
-0.1
981
DAL
-0.4
+0.1
-0.4
-0.2
913
MIN
-0.4
+0.1
-0.4
+0.0
3,734
-0.4
-0.2
-0.1
-0.1
412
-0.4
-0.0
-0.3
-0.1
701
-0.4
-0.1
-0.3
-0.0
348
TOR
-0.4
+0.0
-0.1
-0.3
543
-0.4
-0.1
-0.3
-0.0
238
WAS
-0.4
-0.2
-0.2
-0.0
2,216
-0.4
-0.3
-0.1
-0.0
313
-0.4
0.0
-0.4
-0.1
356
LAL
-0.4
+0.0
-0.2
-0.3
868
DAL
-0.4
-0.5
-0.2
+0.1
4,242
OKC
-0.4
-0.2
+0.3
-0.4
11,362
LAL
-0.4
+0.9
-1.4
-0.1
6,273
LAC
-0.5
-0.2
-0.2
-0.1
3,941
-0.5
-0.1
-0.2
-0.1
338
-0.5
-0.2
-0.2
-0.0
373
ORL
-0.5
-0.2
-0.2
+0.2
1,181
-0.5
+0.1
-0.5
-0.1
854
MIA
-0.5
+0.1
-0.7
+0.2
6,126
-0.5
+0.0
-0.6
+0.1
361
LAC
-0.5
+0.1
-0.9
+0.6
2,518
GSW
-0.5
-0.0
-0.4
-0.0
204
CLE
-0.5
+0.0
-0.1
-0.5
4,530
PHX
-0.5
-0.3
+0.0
-0.1
3,796
-0.5
-0.2
-0.2
-0.1
298
DET
-0.5
+0.1
-0.3
-0.1
279
-0.5
-0.0
-0.4
-0.1
227
DAL
-0.5
+1.1
-1.1
-0.6
11,747
NOP
-0.5
-0.3
+0.0
-0.2
315
-0.5
+0.1
-0.4
-0.2
720
IND
-0.5
+0.0
-0.3
-0.2
203
-0.5
+0.2
-0.7
0.0
1,321
GSW
-0.5
+0.1
-0.7
+0.1
1,456
WAS
-0.5
-0.4
-0.1
+0.2
2,665
DAL
-0.5
+0.5
-0.7
-0.4
9,520
PHX
-0.5
-0.2
-0.6
+0.3
7,393
IND
-0.5
+0.0
-0.1
-0.4
2,088
ORL
-0.5
-0.2
-0.1
-0.1
1,142
MIL
-0.5
-0.5
+0.1
-0.1
5,676
-0.5
-0.5
+0.1
-0.1
3,078
POR
-0.5
-0.0
-0.4
-0.2
14,275
-0.5
+0.0
-0.3
-0.2
2,113
PHI
-0.5
-0.4
-0.1
-0.2
4,901
MIA
-0.5
-0.0
-0.1
-0.4
6,350
LAC
-0.5
+0.1
-0.5
-0.1
8,912
-0.5
+0.1
-0.6
-0.1
925
DAL
-0.5
+0.4
-1.0
-0.2
5,271
TOR
-0.5
+0.1
-0.1
-0.4
3,159
DAL
-0.5
-0.1
-0.7
-0.0
400
PHX
-0.5
-0.5
-0.4
+0.4
13,444
CHA
-0.5
+0.2
-0.7
-0.0
543
DAL
-0.5
-0.3
-0.4
+0.3
10,393
POR
-0.5
-0.7
+0.4
-0.1
8,577
DET
-0.6
-0.1
-0.8
+0.2
14,074
-0.6
-0.3
+0.1
-0.3
1,220
CHA
-0.6
-0.3
-0.1
-0.1
13,872
DAL
-0.6
-0.2
-0.0
-0.3
1,760
UTA
-0.6
+0.0
-0.5
-0.1
3,373
NYK
-0.6
-0.3
-0.1
-0.2
7,678
CHI
-0.6
-0.2
-0.2
-0.1
7,637
DET
-0.6
-0.4
+0.5
-0.6
6,014
MIL
-0.6
-0.3
+0.2
-0.4
4,683
-0.6
-0.2
-0.5
+0.1
822
DAL
-0.6
-0.6
0.0
+0.0
4,576
TOR
-0.6
-0.1
-0.4
-0.1
992
CHA
-0.6
-0.0
-0.7
+0.1
737
PHX
-0.6
+0.2
-0.8
-0.0
12,312
-0.6
-0.1
-0.4
-0.1
777
-0.6
-0.3
-0.1
-0.2
804
-0.6
+0.1
-0.8
+0.1
1,285
-0.6
-0.1
-0.5
+0.0
465
GSW
-0.6
-0.2
-0.7
+0.2
2,754
NYK
-0.6
-0.2
-0.2
-0.4
2,009
-0.6
-0.1
-0.5
+0.0
206
-0.6
-0.2
-0.5
+0.0
226
NYK
-0.6
-0.4
-0.4
-0.1
5,465
CHA
-0.6
-0.4
-0.2
-0.1
9,392
PHI
-0.6
-0.3
-0.4
-0.1
4,254
-0.6
+0.0
-0.5
-0.1
220
IND
-0.7
+0.1
-0.6
-0.4
4,843
CLE
-0.7
-0.2
-0.3
-0.2
421
TOR
-0.7
-0.2
-0.3
-0.1
6,556
-0.7
-0.2
-0.4
-0.0
1,656
OKC
-0.7
+0.1
-0.2
-0.5
1,310
ATL
-0.7
-0.1
-0.4
-0.2
239
-0.7
+0.1
-0.8
+0.1
1,641
BOS
-0.7
+0.8
-1.1
-0.6
6,097
NOP
-0.7
+0.1
-0.3
-0.3
3,473
ORL
-0.7
-0.7
-0.4
-0.0
11,334
-0.7
+0.1
-0.8
-0.1
930
CLE
-0.7
+0.4
-1.4
+0.2
4,548
HOU
-0.7
-0.2
-0.2
-0.3
586
WAS
-0.7
-0.3
-0.2
-0.2
1,160
NYK
-0.7
-0.5
-0.4
+0.3
7,789
UTA
-0.7
-0.4
-0.2
-0.1
5,727
NOP
-0.7
+0.2
-0.7
-0.1
1,549
NYK
-0.7
-0.3
-0.3
-0.0
1,134
-0.7
-0.1
-0.7
+0.1
857
MIA
-0.7
-0.3
-0.9
+0.2
1,891
-0.7
-0.1
-0.5
-0.1
545
-0.7
+0.1
-0.5
-0.2
1,620
MIL
-0.7
-0.1
-0.6
-0.0
773
PHI
-0.7
-0.5
-0.5
+0.3
3,135
-0.7
-0.3
-0.4
+0.0
809
CHA
-0.8
+0.1
-0.8
-0.0
555
ATL
-0.8
-0.4
-0.5
+0.0
9,600
POR
-0.8
-0.1
-0.3
-0.4
6,313
PHX
-0.8
-0.3
-0.4
-0.1
1,674
UTA
-0.8
+0.1
-0.5
-0.3
8,782
GSW
-0.8
-0.0
-0.4
-0.4
3,993
-0.8
-0.2
-0.5
-0.1
206
UTA
-0.8
-0.2
-0.4
-0.1
1,796
LAL
-0.8
-0.1
-0.4
-0.4
914
DET
-0.8
-0.6
-0.1
+0.0
8,384
WAS
-0.8
-0.5
-0.2
-0.1
6,504
BKN
-0.8
-0.3
-1.0
+0.6
6,265
TOR
-0.8
+0.1
-0.6
-0.3
1,625
MIN
-0.8
+0.2
-1.0
+0.1
10,880
NYK
-0.8
-0.2
-0.4
-0.1
409
PHX
-0.8
+0.1
-0.7
-0.2
6,733
WAS
-0.8
+0.4
-1.0
-0.1
3,034
GSW
-0.8
-0.0
-0.7
-0.1
449
WAS
-0.8
-0.1
-0.3
-0.3
4,429
MEM
-0.8
+0.1
-0.8
-0.1
1,488
-0.8
-0.1
-0.6
-0.1
639
MIA
-0.8
-0.3
-0.7
+0.1
8,479
SAC
-0.8
-0.6
+0.5
-0.5
2,443
ORL
-0.8
-0.0
-0.7
-0.3
4,344
CHI
-0.8
-0.8
+0.4
-0.3
7,713
MIL
-0.8
-0.2
-0.7
+0.2
5,769
ORL
-0.8
-0.3
-1.1
+0.1
6,822
-0.8
-0.2
-0.6
-0.1
254
BKN
-0.8
-0.3
-0.2
-0.2
1,484
ATL
-0.8
+0.1
-0.7
-0.2
955
TOR
-0.8
-0.2
-0.6
-0.1
13,986
SAC
-0.8
-0.1
-0.1
-0.5
3,403
MIA
-0.8
+0.1
-1.1
+0.2
2,451
SAC
-0.9
+0.0
-0.6
-0.2
12,330
SAC
-0.9
-0.5
-0.1
-0.2
5,196
DET
-0.9
+0.1
-0.8
-0.1
239
NYK
-0.9
-0.6
+0.0
-0.3
3,009
HOU
-0.9
+0.2
-1.0
+0.2
5,713
ORL
-0.9
-0.3
-0.5
+0.3
9,955
DAL
-0.9
0.0
-0.5
-0.3
953
BKN
-0.9
-0.1
-0.6
-0.2
551
OKC
-0.9
+0.2
-0.5
-0.4
14,648
-0.9
-0.0
-0.7
-0.2
803
HOU
-0.9
-0.2
-0.5
-0.5
13,864
NYK
-0.9
+0.1
-0.9
-0.1
9,429
PHI
-0.9
-0.2
-0.6
-0.2
5,959
ATL
-0.9
-0.1
-0.5
-0.3
5,936
WAS
-0.9
-0.5
-0.4
+0.1
10,293
POR
-0.9
-0.3
-0.1
-0.6
3,896
-0.9
-0.1
-0.7
-0.1
503
UTA
-0.9
+0.2
-1.0
-0.1
6,730
DAL
-0.9
-0.1
-1.1
-0.1
251
IND
-0.9
+0.3
-0.9
-0.4
719
BOS
-0.9
+0.1
-0.7
-0.3
572
NOP
-0.9
-0.4
-0.4
-0.1
667
CLE
-0.9
-0.2
-0.5
-0.3
1,276
CHA
-0.9
-0.6
-0.1
-0.1
2,367
SAC
-0.9
-0.1
-0.5
-0.2
1,492
-0.9
-0.3
-0.6
-0.1
1,452
-0.9
-0.3
-0.6
-0.1
448
-0.9
-0.0
-0.7
-0.3
1,386
BKN
-1.0
-0.4
-0.4
-0.1
6,053
SAC
-1.0
-0.0
-0.8
-0.1
2,747
CLE
-1.0
+0.1
-1.1
0.0
973
MIL
-1.0
-0.6
+0.1
-0.6
12,240
-1.0
+0.1
-0.8
-0.3
2,027
HOU
-1.0
+0.1
-0.8
-0.2
251
DAL
-1.0
+0.1
-0.9
-0.2
673
IND
-1.0
+0.1
-1.0
-0.1
420
DET
-1.0
-0.1
-0.7
-0.2
656
DAL
-1.0
-0.6
-0.3
+0.0
13,396
POR
-1.0
-0.2
-0.7
+0.0
3,421
LAL
-1.0
-0.3
-0.4
-0.3
799
LAL
-1.0
+0.2
-0.7
-0.4
3,878
-1.0
-0.3
-0.9
+0.2
1,068
PHI
-1.0
-0.1
-0.5
-0.4
3,022
DET
-1.0
-0.5
-0.7
+0.4
2,795
CLE
-1.0
+0.2
-1.1
-0.0
4,283
MIN
-1.0
-0.3
-0.4
-0.3
3,434
CHI
-1.0
-0.5
-0.2
-0.3
434
MIL
-1.0
-0.1
-0.8
-0.1
500
CHI
-1.0
-0.1
-0.6
-0.2
7,344
-1.0
-0.4
-0.3
-0.3
2,639
SAS
-1.0
-1.3
+1.1
-0.9
2,871
DAL
-1.0
+0.0
-0.8
-0.2
285
-1.0
-0.2
-0.9
+0.0
541
TOR
-1.0
+0.1
-1.1
-0.1
8,025
LAL
-1.0
-0.3
-0.8
+0.1
3,150
NOP
-1.1
-0.3
-0.6
-0.1
276
CHA
-1.1
-0.4
-0.6
-0.1
530
-1.1
-0.2
-0.8
-0.1
834
CLE
-1.1
+0.0
-0.7
-0.3
2,046
-1.1
-0.4
-1.1
+0.4
3,338
PHI
-1.1
-0.6
-0.6
-0.0
6,621
BKN
-1.1
-0.9
+0.1
-0.3
3,914
LAC
-1.1
-0.2
-0.6
-0.2
461
DEN
-1.1
+0.2
-0.8
-0.4
10,308
BOS
-1.1
+0.3
-1.1
-0.4
3,390
UTA
-1.1
-0.4
-0.5
-0.1
1,350
SAC
-1.1
-1.0
+0.1
-0.1
12,153
-1.1
+0.1
-1.2
+0.0
929
SAC
-1.1
-0.3
-0.5
-0.4
2,986
-1.1
-0.1
-0.8
-0.2
252
LAC
-1.1
+0.2
-1.4
+0.1
1,609
PHI
-1.1
-0.5
-0.5
-0.1
858
SAC
-1.1
-0.1
-1.0
-0.3
1,577
MIA
-1.1
-0.3
-0.6
-0.1
12,089
HOU
-1.1
-0.6
-0.6
0.0
5,821
HOU
-1.1
-0.5
-0.3
-0.3
7,247
-1.1
-0.1
-0.9
-0.1
229
MEM
-1.1
-0.3
-0.5
-0.4
5,328
ATL
-1.1
-0.2
-0.6
-0.5
3,572
NYK
-1.1
-0.2
-0.8
-0.1
305
SAC
-1.1
+0.1
-1.1
-0.1
2,648
MIL
-1.1
+0.1
-0.8
-0.5
3,857
PHI
-1.1
-0.4
-0.5
-0.2
3,355
ORL
-1.2
+0.1
-1.3
-0.2
6,741
OKC
-1.2
-0.3
-0.7
-0.3
259
LAL
-1.2
-0.3
-0.3
-0.5
1,691
MIN
-1.2
+1.3
-1.5
-0.9
16,217
UTA
-1.2
-0.3
-0.6
-0.3
6,771
POR
-1.2
-0.3
-0.9
-0.1
586
CLE
-1.2
+0.2
-0.9
-0.5
3,204
-1.2
-0.3
-0.9
-0.0
598
TOR
-1.2
+0.1
-1.3
-0.1
2,133
GSW
-1.2
-0.2
-0.8
-0.2
1,332
DET
-1.2
-0.5
-0.9
+0.2
10,164
PHX
-1.2
-0.5
-0.2
-0.4
13,264
-1.2
-0.4
-0.6
-0.2
887
TOR
-1.2
-0.3
-0.8
-0.1
1,186
HOU
-1.2
-0.1
-0.9
-0.1
3,850
DEN
-1.3
-0.1
-0.9
-0.2
300
ATL
-1.3
+0.3
-0.9
-0.7
10,829
BKN
-1.3
-1.2
+0.1
+0.0
6,730
-1.3
-0.2
-0.9
-0.1
351
NOP
-1.3
-0.4
-0.9
+0.0
3,416
-1.3
-0.3
-0.9
-0.1
271
SAS
-1.3
+0.3
-1.0
-0.5
8,243
PHI
-1.3
-0.3
-0.7
-0.2
533
LAL
-1.3
-0.6
-0.3
-0.6
9,696
DEN
-1.3
+0.2
-1.7
+0.1
5,668
ATL
-1.3
-0.1
-0.5
-0.8
6,960
MIA
-1.3
-0.3
-1.0
-0.2
900
UTA
-1.3
-0.3
-0.9
-0.2
5,106
SAS
-1.3
+0.3
-1.8
+0.1
1,435
HOU
-1.3
-0.6
-0.6
-0.2
3,235
DET
-1.3
-0.1
-0.8
-0.5
9,935
ATL
-1.3
-0.1
-0.7
-0.5
1,959
PHX
-1.3
-0.1
-1.1
-0.2
692
-1.3
-0.5
-0.7
-0.1
1,098
SAS
-1.3
-0.1
-0.6
-0.7
2,732
PHX
-1.4
-0.3
-0.9
-0.1
374
LAL
-1.4
-0.4
-0.9
-0.1
2,897
CHA
-1.4
-0.0
-1.4
+0.1
5,392
NOP
-1.4
-0.2
-1.0
-0.2
1,238
OKC
-1.4
+0.0
-1.2
-0.3
12,907
TOR
-1.4
-0.1
-1.4
+0.1
260
WAS
-1.4
-0.2
-0.8
-0.3
4,670
POR
-1.4
-0.3
-1.0
-0.1
4,008
BKN
-1.4
-0.3
-0.9
-0.2
8,780
PHI
-1.4
+0.3
-2.1
+0.3
10,505
CHA
-1.4
+0.9
-2.7
+0.1
2,846
OKC
-1.4
-0.2
-1.2
0.0
544
UTA
-1.4
-0.9
-1.1
+0.6
12,387
OKC
-1.4
-0.1
-0.9
-0.3
1,274
PHI
-1.4
-0.5
-0.7
-0.3
1,565
MEM
-1.4
-0.2
-1.3
-0.1
3,873
MEM
-1.4
-0.2
-0.9
-0.3
4,052
-1.4
-0.3
-0.9
-0.3
1,486
BOS
-1.5
-0.1
-1.3
-0.1
263
-1.5
-0.5
-0.8
-0.2
1,853
DEN
-1.5
+0.0
-1.6
+0.2
9,518
MIN
-1.5
-0.3
-1.1
-0.0
1,704
ORL
-1.5
-0.2
-1.5
-0.1
3,017
ATL
-1.5
-0.0
-1.2
-0.3
1,373
PHI
-1.5
-0.2
-0.8
-0.4
4,640
NOP
-1.5
-0.5
-0.6
-0.4
1,030
CHI
-1.5
-0.5
-0.4
-0.4
2,795
CHA
-1.5
-0.3
-1.2
-0.1
750
NYK
-1.5
-0.5
-0.6
-0.3
2,014
WAS
-1.5
-0.4
-0.9
-0.2
1,811
HOU
-1.5
-0.3
-1.4
+0.1
14,162
POR
-1.5
-0.1
-0.9
-0.5
4,491
NOP
-1.5
-0.6
-0.6
-0.3
771
MIN
-1.5
+0.1
-1.0
-0.5
3,778
GSW
-1.5
-0.8
-0.4
-0.2
3,557
-1.5
-0.2
-1.1
-0.3
410
GSW
-1.5
-1.0
-0.3
-0.3
12,859
BKN
-1.5
-0.2
-1.0
-0.3
833
CLE
-1.5
+0.2
-1.5
-0.2
411
ORL
-1.5
-0.6
-0.9
-0.1
1,523
IND
-1.5
-0.6
-0.8
-0.1
7,117
TOR
-1.6
-0.1
-1.2
-0.2
2,319
IND
-1.6
-0.2
-1.0
-0.3
8,244
SAC
-1.6
-1.3
-0.2
-0.2
3,676
MEM
-1.6
-0.4
-0.8
-0.1
12,776
BKN
-1.6
-0.4
-1.4
+0.3
2,215
PHI
-1.6
-0.5
-1.3
+0.2
5,267
TOR
-1.6
-0.3
-1.2
-0.2
4,952
-1.6
-0.5
-1.2
+0.1
1,938
IND
-1.6
-0.3
-1.3
0.0
2,323
DET
-1.6
-0.7
-0.6
-0.4
1,449
PHX
-1.7
-0.2
-0.8
-0.7
1,451
OKC
-1.7
-0.2
-1.0
-0.4
436
DAL
-1.7
-0.4
-1.2
-0.1
4,582
MEM
-1.7
-0.1
-1.5
-0.1
783
DAL
-1.7
-0.9
-0.5
-0.2
4,003
PHI
-1.7
-0.5
-1.2
-0.0
5,160
GSW
-1.7
-0.3
-1.3
-0.1
9,332
POR
-1.7
-0.3
-0.9
-0.2
4,468
-1.7
-0.1
-1.5
-0.0
1,136
MIL
-1.7
-0.5
-1.0
-0.1
7,430
IND
-1.7
-0.7
-1.0
-0.1
2,385
DET
-1.7
-0.4
-1.7
+0.4
5,537
PHX
-1.7
+0.1
-1.9
+0.1
6,420
MIN
-1.7
-0.7
-1.1
+0.2
2,715
DET
-1.7
-0.3
-1.2
-0.3
1,324
UTA
-1.7
+0.0
-1.9
+0.0
3,940
NYK
-1.8
-0.6
-1.0
-0.2
1,325
WAS
-1.8
-0.4
-1.3
-0.1
483
WAS
-1.8
-0.3
-1.1
-0.5
6,354
ATL
-1.8
-0.4
-0.7
-0.6
3,402
SAC
-1.8
-0.6
-0.8
-0.1
1,582
CHI
-1.8
-0.4
-1.2
-0.2
5,529
NOP
-1.8
-0.3
-1.5
-0.0
4,083
DEN
-1.9
-0.1
-1.6
-0.2
3,104
NOP
-1.9
-1.0
-0.3
-0.5
2,778
HOU
-1.9
-0.4
-1.5
-0.1
4,075
NOP
-1.9
+0.5
-2.4
0.0
10,899
BKN
-1.9
-0.7
-1.0
-0.2
942
CHA
-1.9
-0.3
-1.2
-0.2
3,793
POR
-1.9
-0.1
-1.7
-0.1
7,552
LAL
-1.9
-0.3
-1.5
-0.2
831
POR
-2.0
-0.3
-1.5
-0.2
990
WAS
-2.0
-0.7
-1.1
-0.2
2,077
NYK
-2.0
-0.7
-1.1
-0.2
2,065
SAC
-2.0
-0.5
-1.4
-0.2
1,983
HOU
-2.1
-1.3
-0.3
-0.3
3,645
PHI
-2.1
+0.0
-1.9
-0.2
1,320
MIL
-2.1
+0.2
-2.0
-0.3
3,386
IND
-2.1
-0.7
-1.3
-0.1
4,011
DEN
-2.1
-0.6
-1.3
-0.2
2,182
ATL
-2.1
+0.2
-2.3
-0.0
551
SAC
-2.1
-0.3
-2.0
+0.1
4,986
UTA
-2.1
-0.2
-1.6
-0.4
2,372
NOP
-2.1
-0.4
-1.8
+0.1
6,369
TOR
-2.2
+0.2
-1.6
-0.7
5,493
BKN
-2.2
-0.5
-1.5
-0.2
2,307
CHI
-2.2
-0.6
-1.4
-0.1
10,791
TOR
-2.2
-0.3
-1.8
-0.1
1,062
NYK
-2.2
-0.6
-0.9
-0.9
5,476
NYK
-2.2
-0.0
-1.9
-0.1
8,180
POR
-2.2
-0.4
-1.4
-0.6
7,079
IND
-2.3
-0.7
-1.7
+0.1
1,263
NOP
-2.3
-0.3
-1.2
-0.7
2,673
SAS
-2.3
-1.0
-1.3
+0.0
11,878
BOS
-2.3
-0.2
-1.7
-0.3
2,840
SAC
-2.3
-0.7
-1.2
-0.6
9,303
CHA
-2.3
-0.3
-1.6
-0.3
2,852
MIA
-2.3
-0.7
-1.2
-0.4
7,398
CLE
-2.4
-0.4
-1.3
-0.7
1,974
BKN
-2.4
-0.0
-2.6
+0.3
7,591
PHI
-2.4
-0.6
-1.5
-0.3
4,159
DAL
-2.5
-0.9
-1.1
-0.3
7,905
DEN
-2.5
+0.1
-2.4
-0.2
1,303
PHX
-2.5
+0.4
-2.0
-0.8
5,385
PHX
-2.5
-0.9
-1.4
-0.3
6,449
WAS
-2.5
-0.7
-1.1
-0.6
9,226
DEN
-2.6
-0.5
-1.8
-0.4
3,581
LAL
-2.6
-1.1
-1.2
-0.3
4,786
MIA
-2.6
-0.6
-2.1
+0.0
3,233
PHI
-2.6
-0.6
-1.7
-0.4
4,645
CHI
-2.6
-0.6
-1.9
-0.1
8,472
CHA
-2.6
-1.0
-1.6
-0.0
3,602
BKN
-2.7
-0.2
-1.8
-0.6
11,568
MIN
-2.7
-0.9
-1.7
+0.1
7,568
CHA
-2.7
-0.8
-1.4
-0.5
1,358
ORL
-2.8
-0.7
-1.9
-0.3
2,294
NOP
-2.9
-0.9
-1.8
-0.2
5,704
UTA
-3.0
-0.4
-2.3
-0.3
5,668
WAS
-3.0
-0.8
-2.1
-0.2
2,046
ORL
-3.1
-0.4
-2.6
-0.0
5,564
TOR
-3.2
-0.1
-2.7
-0.3
3,087
MEM
-3.4
-1.1
-2.1
-0.3
4,172
HOU
-3.6
-0.3
-2.3
-1.1
8,430
NOP
-3.9
-1.4
-1.8
-0.8
6,754
PHI
-4.1
-0.7
-2.8
-0.6
6,687
Positive impact (gold)Negative impact (cyan)Values in pts/100 shots vs league average. No box priors. Positive is always good on both offense and defense.

How to Read the Numbers

All values are in points per 100 shots vs league average. Zero means average. Turnover possessions are excluded — only possessions with a shot attempt or free throw are in the model.

Positive = goodon both offense and defense
Negative = badon both offense and defense
Offense example

+2.0 oTS means the team shoots ~2 points better per 100 shots with this player on the floor.

Defense example

-1.5 dTS means opponents shoot ~1.5 points better per 100 shots (bad). Display values are sign-flipped so positive is always good.

This is a lineup-adjusted estimate with no box-score priors — pure lineup signal, not stabilized like DARKO or EPM.

Column Glossary

Offense

oTS

Offensive shooting efficiency impact in pts/100 shots vs league average. oSQ + oMake + oFT = oTS in the decomposition framework.

oSQ

RAPM impact on shot quality: the quality of looks generated (spacing, gravity, playmaking, shot selection) as measured by ShotQuality pre-shot expected value.

oMake

RAPM impact on shot finishing: actual points minus ShotQuality pre-shot prediction — how often a player's lineup over/underperforms expectations.

oFT

RAPM impact on free throw value: offense from drawing trips to the line and converting better/worse than a foul-type baseline derived from average FGA value (avg_pts).

Defense

dTS

Defensive shooting efficiency impact in pts/100 shots vs league average. Positive = good (opponents shoot worse). dSQ + dContest + dFT ≈ dTS. Signs flipped so positive always means good defense.

dSQ

RAPM impact on opponent shot quality: forcing worse looks through help defense, contest timing, and positioning. Positive = good.

dContest

RAPM impact on shot alteration: making opponents miss shots they would normally make. Rim protection, closeouts, contest quality. Positive = good.

dFT

RAPM impact on opponent free throws: defensive pressure on trips to the line and suppression of opponent free throw scoring. Positive = good.

Overview

Traditional RAPM asks: how much does this player impact team scoring? The ShotQuality decomposition answers why — breaking the shooting efficiency component into shot quality, shot making, and free throw value.

Using ShotQuality's pre-shot expected value (based on shot location, closest defender distance, shot type, shooter movement, touch time, and other contextual factors), we decompose each player's lineup-level shooting efficiency impact into three components that sum exactly on every possession.

The Four Parallel Regressions

We process ~650,000 non-turnover possessions from the 2023-24 through 2025-26 seasons, running four separate ridge regressions on the same possessions — same +1/-1 design matrix, same stints, same ridge penalty — each scoring them differently:

1
True Shooting (TS)

What actually happened? FGAs scored at actual points. FT possessions at shooter's expected FT value.

2
Shot Quality (SQ)

How good was the look? FGAs at ShotQuality pre-shot EV. FT possessions at a foul-type-specific baseline representing the expected shot value the foul replaced.

3
FT Value (FT)

Value from the line? FGAs at zero. FT possessions at expected FT value minus the foul-type baseline — capturing the premium above what a normal possession would have produced.

4
Shot Making (CONTEST)

Beat the expectation? FGAs as actual minus SQ EV. FT possessions at zero.

TS (total target) = SQ + Shot Making + FT Value (three components) on every possession

The dependent variables sum exactly by construction. After ridge regression, the RAPM coefficients sum approximately due to differential shrinkage across the four regressions.

Foul-Type Baselines

Not all free throw possessions are equal. A 2-shot foul replaces a normal possession; an and-1 is pure bonus on top of a made basket. The SQ and FT components use foul-type-aware baselines to split each FT possession correctly:

  • - avg_pts = average points scored on FGA possessions (~1.09) — the counterfactual value of a normal possession if no foul occurred
  • - 2-shot foul: baseline = avg_pts / 2 per FT (~0.54) — the foul replaced a ~1.09 possession, split across 2 free throws
  • - 3-shot foul: baseline = avg_pts / 3 per FT (~0.36) — same idea, split across 3 free throws
  • - And-1: baseline = 0 — the basket already counted, the FT is pure bonus
  • - Technical: baseline = 0 — no possession was replaced
MetricRoleFGA2-Shot Foul (per FT)3-Shot Foul (per FT)And-1 / Tech FT
TSTargetActual pointsExpected FT valueExpected FT valueExpected FT value
SQComponent 1 of 3ShotQuality pre-shot EVavg_pts / 2 (~0.54)avg_pts / 3 (~0.36)0
FT ValueComponent 2 of 30ExpFT - avg_pts/2ExpFT - avg_pts/3ExpFT
CONTESTComponent 3 of 3Actual points - SQ EV000
SumSQ + FT + CONTEST = TS= Actual points= Expected FT value= Expected FT value= Expected FT value

Example: Fouling a 90% FT shooter on a 3-pointer has an expected value of 2.7 points (0.90 x 3). A normal FGA possession is worth 1.09 points, so FT Value is +1.61 (2.7 - 1.09). In the decomposition, SQ gets 1.09 total (0.36 per FT) and FT Value gets +1.61 total (0.54 per FT).

Calibration

ShotQuality's pre-shot EV model can have small year-to-year biases (e.g., systematically underrating 2025-26 shots by ~0.03 points). We apply a per-year additive calibration so the mean initial EV matches the mean actual points scored on FGAs. This prevents systematic over- or under-crediting of shot quality for players in any given season. Missing initial EV values (~6-10% of FGAs) are filled with the year's average actual points — contributing zero signal to both SQ and CONTEST.

Ridge Regression & WLS Decomposition

  • - Method: Ridge regression with alternating offense/defense blocks (alpha = 3000)
  • - Design matrix: One column per player (~775 players), +1 on-court offense, -1 on-court defense
  • - No box priors: Pure lineup signal — no DARKO/EPM-style stabilization
  • - Time-decay: Half-life of 700 days — six seasons for stability, recent games weighted more

With four sets of RAPM coefficients, a second-stage weighted least squares regression confirms the decomposition:

Off TS ≈ β1 Off SQ + β2 Off FT + β3 Off Contest

Def TS ≈ β4 Def SQ + β5 Def FT + β6 Def Contest

Coefficients land at ~1.000 with R² > 0.9999. The foul-type-aware baselines and per-year calibration eliminate cross-component leakage, producing a near-perfect additive decomposition.

Data & Credits

Shot quality data provided by ShotQuality, which uses spatial tracking to compute pre-shot expected values for every NBA FGA. See their stats explained page for details.