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.3
+1.8
+3.5
+0.9
16,585
GSW
+5.1
+2.5
+2.3
+0.3
12,904
HOU
+4.5
+1.1
+2.6
+0.8
14,745
MIL
+4.2
+3.0
+1.3
-0.2
12,219
OKC
+3.6
-0.4
+2.6
+1.4
17,253
DEN
+3.4
-0.0
+3.1
+0.3
15,118
IND
+3.4
+1.7
+1.7
-0.0
12,235
LAL
+3.1
+1.1
+1.9
+0.3
14,970
NYK
+2.9
+0.8
+1.4
+0.8
15,177
LAC
+2.9
+0.5
+2.2
+0.2
10,626
LAL
+2.8
+0.1
+2.8
-0.1
7,853
GSW
+2.5
-0.3
+2.6
+0.3
4,091
SAS
+2.4
+1.4
+0.8
+0.2
10,348
POR
+2.4
+0.3
+1.8
+0.4
12,698
MIN
+2.4
-0.3
+1.9
+0.7
13,247
PHI
+2.4
-0.2
+1.3
+1.2
6,402
CLE
+2.3
+1.1
+1.4
-0.1
13,348
CLE
+2.3
+1.1
-0.3
+1.4
15,068
PHX
+2.2
+0.2
+1.2
+0.7
14,109
LAL
+2.2
+0.8
+0.3
+1.1
13,591
MEM
+2.1
+0.3
+1.5
+0.3
3,722
WAS
+2.1
+1.0
+0.3
+0.9
10,816
GSW
+2.0
-0.2
+0.9
+1.3
10,881
MIL
+2.0
+0.8
+1.0
+0.1
14,338
NYK
+1.9
+0.1
+1.4
+0.5
16,914
CHA
+1.9
-0.0
+1.7
+0.2
12,875
DET
+1.8
+0.2
+1.1
+0.5
13,883
CHA
+1.8
+1.1
+0.8
-0.1
7,850
LAL
+1.8
+0.3
+1.2
+0.3
11,076
CHA
+1.7
+1.3
+0.6
-0.1
4,103
PHX
+1.7
+0.9
+0.4
+0.5
10,764
CHI
+1.7
+0.5
+1.1
+0.1
11,500
DAL
+1.6
+0.2
+1.4
+0.0
9,649
SAS
+1.6
-0.2
+1.8
+0.1
12,008
LAL
+1.6
-0.1
+1.4
+0.3
5,773
TOR
+1.6
-0.4
+2.4
-0.4
10,103
CLE
+1.6
-0.1
+1.2
+0.5
13,914
MIA
+1.6
+0.3
+0.8
+0.5
11,967
SAC
+1.6
+0.3
+1.4
-0.1
9,483
OKC
+1.5
+0.3
+1.1
+0.1
12,391
BOS
+1.5
-0.1
+1.5
+0.1
15,328
MIN
+1.5
+0.3
+1.1
+0.1
2,816
SAS
+1.5
+0.5
+0.8
+0.2
10,871
MIN
+1.5
-0.4
+1.2
+0.7
17,655
UTA
+1.4
+0.8
+0.3
+0.4
9,869
LAL
+1.4
+1.1
+0.4
-0.1
13,438
IND
+1.4
+1.0
+0.4
0.0
8,622
MEM
+1.4
+0.3
+0.7
+0.5
2,207
BOS
+1.4
+1.2
+0.6
-0.3
10,504
IND
+1.3
-0.9
+2.7
-0.5
8,551
IND
+1.3
+0.0
+0.9
+0.3
10,989
MEM
+1.3
+0.6
+0.9
-0.2
7,833
MEM
+1.2
-0.0
+0.6
+0.7
2,747
DET
+1.2
-0.1
+1.6
-0.3
9,016
ATL
+1.2
+0.1
+1.3
-0.2
7,401
TOR
+1.2
-0.4
+1.4
+0.1
9,939
MIN
+1.2
+0.5
+0.8
-0.1
13,929
MIL
+1.1
+0.7
+0.8
-0.4
8,366
PHI
+1.1
-0.3
+1.3
+0.2
5,604
GSW
+1.1
+0.1
+1.4
-0.4
10,413
OKC
+1.1
+0.5
+0.1
+0.5
9,754
OKC
+1.1
-0.0
+1.5
-0.4
6,091
CHA
+1.1
+0.4
+1.0
-0.3
4,359
LAL
+1.1
-0.2
+0.8
+0.4
4,233
BOS
+1.1
-0.1
+0.9
+0.2
12,976
DEN
+1.1
+0.8
+0.2
+0.0
9,340
MIL
+1.0
+0.7
-0.6
+0.9
10,042
BKN
+1.0
+1.3
+0.1
-0.4
15,822
MIL
+1.0
-0.1
+1.6
-0.5
5,689
LAC
+1.0
+0.9
+0.3
-0.2
11,426
CHI
+0.9
+0.2
+0.8
-0.1
609
UTA
+0.9
+0.5
-0.4
+0.9
11,915
ATL
+0.9
-0.3
+1.1
+0.2
13,481
CHI
+0.9
+0.2
+1.0
-0.3
6,310
PHI
+0.9
-0.1
+0.2
+0.8
14,935
NYK
+0.9
+0.5
+0.7
-0.3
14,289
CHA
+0.9
-0.4
+1.3
+0.0
6,055
LAC
+0.9
+0.2
+0.9
-0.2
7,292
MIN
+0.9
+0.4
+0.5
-0.1
15,391
OKC
+0.9
+0.3
+0.7
-0.2
9,352
DAL
+0.9
+0.4
+0.7
-0.2
5,566
LAC
+0.8
+0.4
+0.1
+0.3
12,670
MEM
+0.8
-0.2
+0.8
+0.2
1,062
SAS
+0.8
-0.3
+1.3
-0.1
14,029
BOS
+0.8
+0.8
-0.0
-0.0
16,487
SAC
+0.8
+0.1
-0.0
+0.7
10,161
MIA
+0.8
+0.7
+0.3
-0.2
10,120
IND
+0.8
-0.1
+1.0
-0.1
690
CHI
+0.8
-0.3
+1.4
-0.4
9,602
DAL
+0.8
+0.0
+0.8
-0.1
9,531
ORL
+0.8
+0.1
+0.1
+0.6
11,443
DET
+0.8
+0.7
+0.4
-0.3
11,053
MIL
+0.8
-0.3
+0.6
+0.4
7,467
NOP
+0.7
+0.4
+0.2
+0.1
8,949
ORL
+0.7
-0.3
+0.6
+0.4
12,289
DAL
+0.7
-0.2
+1.1
-0.2
3,270
UTA
+0.7
+0.8
-0.6
+0.5
3,647
LAC
+0.7
-0.5
+0.7
+0.5
2,524
WAS
+0.7
-0.0
+0.6
+0.1
233
UTA
+0.7
+0.3
+0.2
+0.1
6,807
ORL
+0.7
+0.6
-0.1
+0.1
8,540
SAC
+0.7
-1.6
+1.7
+0.6
15,915
DEN
+0.7
+0.0
+0.7
-0.0
8,604
LAC
+0.6
+0.9
+0.3
-0.6
12,169
ORL
+0.6
+0.2
+0.2
+0.3
4,702
CHI
+0.6
-0.5
+1.4
-0.3
5,079
NOP
+0.6
+0.2
-0.3
+0.8
3,593
HOU
+0.6
0.0
+0.7
-0.1
8,616
DET
+0.6
-0.2
+1.1
-0.2
10,195
UTA
+0.6
+0.4
+0.4
-0.2
4,883
DAL
+0.6
+0.2
+0.1
+0.3
7,593
DEN
+0.6
+0.8
-0.7
+0.5
13,126
ATL
+0.6
-0.1
+1.2
-0.5
12,515
TOR
+0.6
+0.1
+0.9
-0.5
7,671
SAS
+0.6
+0.2
+0.3
+0.1
12,993
GSW
+0.6
+0.4
+0.0
+0.2
10,741
POR
+0.6
+0.5
+0.0
-0.0
12,539
DAL
+0.6
-0.2
+0.5
+0.2
8,862
CLE
+0.6
+0.6
+0.2
-0.3
12,146
CHA
+0.5
+0.6
-0.1
+0.1
9,448
GSW
+0.5
-0.1
-0.0
+0.6
7,694
SAC
+0.5
+1.2
-0.3
-0.3
12,255
LAC
+0.5
+0.1
+0.3
+0.1
9,752
BOS
+0.5
+0.0
+0.7
-0.3
1,855
WAS
+0.5
+0.1
+0.4
+0.0
10,630
LAC
+0.5
+0.1
-0.1
+0.5
9,297
CHI
+0.5
+0.0
+0.3
+0.2
10,281
ATL
+0.5
+0.2
-0.0
+0.3
11,150
OKC
+0.5
-0.2
+0.3
+0.3
5,982
LAC
+0.4
0.0
+0.3
+0.1
823
MEM
+0.4
+0.4
+0.2
-0.2
9,698
PHI
+0.4
-0.1
+0.6
-0.1
454
IND
+0.4
-1.1
+1.7
-0.1
17,155
LAC
+0.4
-0.5
+1.1
-0.3
2,986
BKN
+0.4
-0.3
+0.9
-0.2
960
SAS
+0.4
-0.3
+0.9
-0.2
2,276
SAC
+0.4
+0.1
-0.1
+0.4
10,591
NYK
+0.4
-0.2
+1.0
-0.4
831
DAL
+0.4
-0.4
+0.2
+0.6
10,434
MIL
+0.3
-0.1
+0.7
-0.3
912
GSW
+0.3
+0.4
+0.1
-0.1
5,248
DAL
+0.3
-0.5
+0.8
+0.1
3,886
PHX
+0.3
-0.3
+1.3
-0.7
5,060
BOS
+0.3
+0.5
+0.5
-0.7
13,428
WAS
+0.3
+0.4
+0.0
-0.1
2,418
MEM
+0.3
+0.2
+0.4
-0.3
2,911
PHI
+0.3
+0.2
+0.1
-0.1
9,788
+0.3
-0.0
+0.1
+0.2
623
+0.3
-0.3
+0.3
+0.2
1,297
NOP
+0.3
+0.5
-0.3
+0.1
9,650
PHX
+0.2
-0.5
+0.4
+0.4
13,279
CLE
+0.2
+0.6
-0.2
-0.2
7,497
OKC
+0.2
-0.0
-0.2
+0.5
9,146
MEM
+0.2
+0.2
-0.6
+0.6
5,424
ATL
+0.2
-0.5
+1.1
-0.3
12,166
WAS
+0.2
-0.1
+0.1
+0.2
1,209
DEN
+0.2
+0.2
+0.3
-0.3
9,881
MIN
+0.2
-0.4
+0.9
-0.3
13,274
BKN
+0.2
+0.4
-0.4
+0.1
2,720
SAS
+0.2
-0.5
+0.6
+0.0
2,388
ATL
+0.2
-0.7
+0.7
+0.1
5,072
OKC
+0.1
+0.1
-0.3
+0.4
3,799
+0.1
+0.1
+0.3
-0.2
1,039
MIA
+0.1
-0.6
+1.2
-0.4
9,828
LAC
+0.1
+0.0
+0.2
-0.1
872
DAL
+0.1
-0.6
+0.7
+0.0
4,346
CHI
+0.1
+0.0
+0.1
-0.0
369
ORL
+0.1
-0.5
+0.8
-0.1
2,076
LAC
+0.1
+0.4
+0.1
-0.4
8,220
UTA
+0.1
+0.1
0.0
+0.0
5,958
UTA
+0.1
-0.3
+0.1
+0.2
705
MIA
+0.1
-0.4
+0.6
-0.1
4,552
NOP
+0.1
-0.9
+0.8
+0.2
3,741
TOR
+0.1
-0.8
+0.6
+0.2
10,026
MIA
+0.1
-0.8
+0.7
+0.2
14,459
DET
+0.1
+1.0
-0.8
-0.1
11,243
DAL
+0.1
-0.3
+0.0
+0.3
9,775
MIL
+0.1
+0.1
+0.2
-0.2
9,376
DEN
+0.0
+0.4
-0.1
-0.2
359
PHI
+0.0
+0.2
-0.1
+0.0
4,317
LAL
+0.0
-0.5
+0.2
+0.3
4,419
MIL
-0.0
-0.7
+1.3
-0.6
10,173
DET
-0.0
+0.2
-0.1
-0.1
399
PHI
-0.0
-0.4
+0.0
+0.4
11,384
MEM
-0.0
-0.4
+0.5
-0.1
573
WAS
-0.0
-0.6
+0.2
+0.3
3,410
HOU
-0.0
+0.2
+0.1
-0.3
13,742
CHI
-0.0
-0.3
+0.1
+0.2
3,612
DEN
-0.0
+0.4
-0.4
-0.1
2,652
POR
-0.1
+0.2
-0.2
-0.1
2,492
ATL
-0.1
+0.7
-1.0
+0.3
11,002
BKN
-0.1
+0.1
-0.2
-0.0
9,751
MEM
-0.1
-0.6
+0.5
+0.0
5,142
CLE
-0.1
+0.9
-0.8
-0.2
7,791
ATL
-0.1
+0.2
-0.2
-0.1
7,932
CLE
-0.1
-0.2
+0.4
-0.3
4,441
LAL
-0.1
+0.1
-0.6
+0.4
7,798
IND
-0.1
+0.0
-0.1
+0.0
4,121
WAS
-0.1
-0.4
+0.4
-0.1
661
PHX
-0.1
+0.1
+0.2
-0.4
1,841
MIN
-0.1
-0.0
+0.0
-0.1
434
-0.1
+0.0
-0.2
+0.1
981
NYK
-0.1
-0.1
-0.2
+0.2
16,809
TOR
-0.1
+0.4
-0.5
+0.0
5,156
MIA
-0.1
-0.5
+0.1
+0.3
10,873
NOP
-0.1
+0.4
-0.8
+0.2
12,103
LAL
-0.1
-0.0
-0.2
+0.0
203
BOS
-0.1
+0.4
-0.4
-0.2
2,999
LAC
-0.2
-0.4
+0.6
-0.4
10,465
CHI
-0.2
-0.0
-0.2
+0.1
8,793
GSW
-0.2
-0.1
+0.3
-0.3
721
-0.2
-0.1
-0.2
+0.1
1,716
HOU
-0.2
+0.0
-0.3
+0.1
10,656
-0.2
-0.1
+0.0
-0.1
228
-0.2
+0.0
-0.1
-0.1
233
ATL
-0.2
-0.4
+0.2
+0.0
9,279
IND
-0.2
+0.0
+0.2
-0.4
2,116
CLE
-0.2
-0.8
+0.3
+0.3
12,377
OKC
-0.2
-0.1
+0.2
-0.3
3,080
-0.2
-0.0
-0.1
-0.1
204
WAS
-0.2
-0.5
+0.4
-0.1
2,603
DAL
-0.2
+0.5
-0.4
-0.4
9,227
MEM
-0.2
+0.5
-0.9
+0.2
3,550
PHI
-0.2
+0.0
+0.1
-0.3
3,756
LAL
-0.2
+0.0
-0.1
-0.3
843
CHA
-0.2
-0.4
+0.2
-0.1
9,003
SAS
-0.3
-0.1
-0.2
+0.0
7,765
CHA
-0.3
-0.2
-0.0
-0.1
5,569
NOP
-0.3
+0.6
-1.3
+0.4
8,593
MIA
-0.3
-0.5
-0.1
+0.4
4,431
HOU
-0.3
-0.5
+0.5
-0.3
6,601
OKC
-0.3
+0.2
-0.1
-0.4
14,176
LAC
-0.3
+0.1
-0.3
-0.1
8,838
NOP
-0.3
-0.3
+0.2
-0.2
338
MIL
-0.3
-0.1
-0.1
-0.0
240
POR
-0.3
-0.1
+0.2
-0.3
2,112
-0.3
-0.2
+0.2
-0.3
2,629
-0.3
-0.1
-0.0
-0.1
723
PHI
-0.3
+0.0
-0.1
-0.2
1,714
LAC
-0.3
-0.4
-0.5
+0.7
8,663
MIL
-0.3
-0.3
+0.2
-0.2
10,585
LAC
-0.3
-0.2
-1.3
+1.2
10,605
NOP
-0.3
+0.1
-0.1
-0.3
3,112
-0.3
-0.1
-0.2
-0.1
629
CHA
-0.3
-0.2
-0.2
+0.1
221
DAL
-0.3
+0.1
-0.3
-0.2
913
-0.3
-0.3
+0.1
-0.1
903
DEN
-0.3
+0.2
-0.6
+0.0
10,872
NYK
-0.3
-0.2
+0.2
-0.3
17,678
NYK
-0.3
-0.4
+0.1
-0.1
5,022
BKN
-0.3
-0.2
-0.1
-0.0
270
MEM
-0.3
-0.2
+0.3
-0.4
3,860
CHA
-0.3
+0.4
-1.4
+0.6
2,965
DET
-0.3
-0.7
+0.3
+0.1
5,505
IND
-0.3
-0.4
+0.3
-0.3
2,893
PHX
-0.3
-0.2
-0.1
-0.0
291
BOS
-0.3
+0.1
-0.4
-0.1
3,452
-0.3
-0.1
-0.1
-0.2
390
ORL
-0.3
-1.6
+0.9
+0.3
13,290
BOS
-0.3
+0.1
-0.1
-0.3
13,764
ORL
-0.3
-0.2
-0.4
+0.2
1,054
CHA
-0.3
-0.3
+0.1
-0.1
1,479
CLE
-0.4
+0.3
-0.6
-0.0
8,549
MIN
-0.4
+0.6
-1.2
+0.3
11,046
LAL
-0.4
-0.1
+0.2
-0.4
803
ORL
-0.4
-0.0
-0.1
-0.3
3,708
TOR
-0.4
+0.0
-0.1
-0.3
543
LAC
-0.4
+0.1
-1.0
+0.6
2,122
POR
-0.4
-1.1
+0.0
+0.7
9,961
MIA
-0.4
-0.3
-0.3
+0.2
1,408
-0.4
-0.1
-0.3
-0.0
348
BKN
-0.4
-0.2
+0.1
-0.2
1,987
HOU
-0.4
-0.2
+0.1
-0.3
603
-0.4
-0.0
-0.3
-0.1
701
DET
-0.4
+0.1
-0.4
-0.1
224
MIL
-0.4
-0.5
+0.1
-0.1
5,656
-0.4
0.0
-0.3
-0.1
356
DET
-0.4
-0.6
+0.2
+0.0
8,232
POR
-0.4
-0.0
-0.3
-0.2
13,494
-0.4
-0.1
-0.3
-0.0
238
-0.4
-0.2
-0.2
-0.0
373
WAS
-0.4
-0.2
-0.2
-0.0
2,216
-0.4
-0.3
-0.1
-0.0
313
MIA
-0.4
+0.1
-0.8
+0.2
6,139
MIA
-0.4
-0.0
-0.0
-0.4
5,891
-0.4
-0.2
-0.1
-0.1
412
IND
-0.4
+0.3
-0.3
-0.4
584
POR
-0.4
-0.1
+0.1
-0.4
6,186
-0.4
-0.2
-0.2
-0.1
298
-0.4
-0.1
-0.2
-0.1
338
GSW
-0.4
-0.0
-0.4
-0.0
204
CLE
-0.4
+0.0
+0.1
-0.5
4,298
DET
-0.5
-0.5
-0.2
+0.2
9,650
MIN
-0.5
+0.1
-0.6
+0.0
3,697
POR
-0.5
-0.5
-0.1
+0.1
10,008
IND
-0.5
-0.2
+0.1
-0.4
12,950
GSW
-0.5
+0.1
-0.7
+0.1
1,456
SAC
-0.5
-0.1
+0.1
-0.5
2,955
ORL
-0.5
-0.2
-0.1
-0.1
1,142
CHI
-0.5
-0.8
+0.7
-0.3
7,689
-0.5
+0.0
-0.6
+0.1
361
NYK
-0.5
-0.2
-0.1
-0.1
369
OKC
-0.5
-0.2
+0.1
-0.4
11,082
OKC
-0.5
-0.6
+0.4
-0.2
13,265
IND
-0.5
+0.0
-0.3
-0.2
203
DET
-0.5
-0.1
-0.3
-0.1
4,765
-0.5
+0.2
-0.7
0.0
1,321
BKN
-0.5
-0.1
-0.3
-0.1
389
-0.5
+0.1
-0.4
-0.2
720
-0.5
-0.0
-0.4
-0.1
227
DAL
-0.5
-0.4
+0.6
-0.7
1,664
TOR
-0.5
-0.1
-0.3
-0.1
992
-0.5
+0.1
-0.5
-0.1
854
SAC
-0.5
-0.8
+0.3
-0.1
2,800
GSW
-0.5
-0.3
+0.4
-0.6
2,336
CHA
-0.5
+0.2
-0.7
-0.0
543
PHX
-0.5
-0.3
-0.0
-0.1
3,796
-0.5
+0.0
-0.3
-0.2
2,113
CHA
-0.5
-0.0
-0.6
+0.1
703
WAS
-0.5
-0.1
-0.1
-0.3
4,450
PHX
-0.5
-0.3
-0.2
-0.1
1,641
PHI
-0.5
-0.5
-0.3
+0.2
4,857
UTA
-0.5
+0.0
-0.5
-0.1
3,373
OKC
-0.5
+0.1
-0.1
-0.5
1,308
SAS
-0.5
+0.2
-0.5
-0.1
6,137
TOR
-0.6
+0.1
-0.6
-0.1
7,840
-0.6
-0.5
+0.1
-0.1
3,078
SAC
-0.6
-0.6
+0.5
-0.5
2,370
PHX
-0.6
-0.2
-0.6
+0.3
7,349
-0.6
-0.3
+0.0
-0.3
1,220
-0.6
+0.1
-0.6
-0.1
925
CLE
-0.6
+0.4
-1.1
+0.2
4,131
GSW
-0.6
-0.2
-0.3
-0.1
3,921
MIA
-0.6
+0.1
-0.5
-0.2
6,570
WAS
-0.6
-0.3
-0.0
-0.3
5,490
NOP
-0.6
-0.3
-0.6
+0.3
8,397
MIA
-0.6
-0.0
-0.6
+0.1
589
BKN
-0.6
-0.3
-0.4
+0.1
1,819
DAL
-0.6
-0.2
-0.1
-0.3
1,760
DAL
-0.6
+1.1
-1.1
-0.5
11,471
DET
-0.6
-0.4
+0.5
-0.6
5,636
-0.6
-0.1
-0.4
-0.1
777
ORL
-0.6
-0.3
-0.6
+0.3
9,951
-0.6
+0.1
-0.7
+0.1
1,641
POR
-0.6
-0.7
+0.2
-0.1
7,866
BOS
-0.6
+0.8
-0.9
-0.5
5,422
-0.6
-0.2
-0.6
+0.1
822
-0.6
-0.1
-0.5
+0.0
206
-0.6
-0.1
-0.5
+0.0
465
DET
-0.6
+0.1
-0.6
-0.1
229
HOU
-0.6
-0.1
-0.4
-0.1
3,773
NOP
-0.6
+0.2
-0.7
-0.1
1,571
DAL
-0.6
0.0
-0.3
-0.3
915
-0.6
-0.3
-0.1
-0.2
804
-0.6
-0.2
-0.5
+0.0
226
CLE
-0.6
-0.2
-0.3
-0.2
421
MIL
-0.6
-0.2
-0.6
+0.2
5,578
-0.6
-0.2
-0.4
-0.0
1,656
UTA
-0.6
-0.4
-0.1
-0.1
834
ATL
-0.6
-0.1
-0.4
-0.2
239
DAL
-0.6
+0.4
-0.9
-0.2
4,700
CLE
-0.6
+0.0
-0.6
-0.1
7,990
TOR
-0.6
-0.2
-0.3
-0.1
5,930
-0.6
+0.0
-0.5
-0.1
220
-0.7
+0.1
-0.9
+0.1
1,285
CHI
-0.7
-0.2
-0.3
-0.1
6,715
WAS
-0.7
-0.4
-0.4
+0.2
2,314
-0.7
+0.1
-0.8
-0.1
930
MIL
-0.7
-0.1
-0.4
-0.1
430
HOU
-0.7
+0.2
-1.0
+0.2
5,566
DEN
-0.7
+0.6
-1.3
-0.1
12,124
OKC
-0.7
-0.0
-0.5
-0.2
344
CHA
-0.7
-0.3
-0.3
-0.1
13,061
-0.7
-0.1
-0.7
+0.1
857
PHI
-0.7
-0.5
-0.5
+0.3
3,135
CHA
-0.7
+0.9
-1.8
+0.1
2,372
-0.7
-0.1
-0.5
-0.1
545
NYK
-0.7
-0.3
-0.4
-0.0
1,134
SAC
-0.7
+0.0
-0.6
-0.2
12,331
MIL
-0.7
-0.1
-0.6
-0.0
773
CHA
-0.7
+0.1
-0.8
-0.0
555
PHI
-0.7
-0.3
-0.3
-0.1
3,810
BKN
-0.7
-0.3
-1.0
+0.6
6,095
BKN
-0.7
-0.4
-0.6
+0.3
1,730
TOR
-0.7
+0.1
-0.4
-0.4
2,940
NYK
-0.7
-0.5
-0.5
+0.3
7,282
UTA
-0.7
-0.2
-0.4
-0.1
1,796
-0.7
-0.3
-0.4
+0.0
809
-0.8
+0.1
-0.6
-0.2
1,620
SAC
-0.8
-0.5
-0.1
-0.2
5,196
POR
-0.8
-0.3
+0.1
-0.6
3,781
TOR
-0.8
+0.1
-0.6
-0.3
1,625
LAL
-0.8
+0.9
-1.6
-0.1
5,854
PHI
-0.8
-0.2
-0.4
-0.2
5,413
DAL
-0.8
-0.4
-0.2
-0.1
3,740
-0.8
-0.2
-0.5
-0.1
206
UTA
-0.8
+0.2
-0.9
-0.1
6,744
UTA
-0.8
-0.4
-0.3
-0.1
5,727
-0.8
-0.1
-0.5
-0.1
639
UTA
-0.8
0.0
-0.7
-0.1
238
MEM
-0.8
+0.1
-0.8
-0.1
1,488
ORL
-0.8
-0.5
-0.2
-0.1
1,831
PHI
-0.8
-0.3
-0.5
-0.1
1,647
NYK
-0.8
-0.3
-0.3
-0.2
7,481
MIL
-0.8
-0.3
-0.1
-0.4
4,115
MIA
-0.8
+0.1
-1.1
+0.2
2,451
-0.8
-0.2
-0.6
-0.1
254
PHX
-0.8
-0.4
+0.2
-0.6
4,731
WAS
-0.9
-0.3
-0.5
-0.2
780
IND
-0.9
-0.0
-1.0
+0.1
2,020
ATL
-0.9
-0.1
-0.5
-0.3
5,528
LAC
-0.9
-0.2
-0.5
-0.2
433
UTA
-0.9
+0.1
-0.6
-0.3
8,817
BKN
-0.9
-0.1
-0.6
-0.2
551
BOS
-0.9
-0.1
-0.6
-0.2
2,537
PHX
-0.9
+0.0
-0.5
-0.3
646
HOU
-0.9
-0.2
-0.3
-0.4
4,766
-0.9
-0.0
-0.7
-0.2
803
HOU
-0.9
-0.6
-0.3
0.0
5,541
MIN
-0.9
-0.3
-0.3
-0.3
3,434
DET
-0.9
-0.1
-0.5
-0.2
641
CLE
-0.9
+0.0
-0.7
-0.3
1,840
-0.9
-0.3
-0.6
-0.1
448
-0.9
-0.1
-0.7
-0.1
503
MIL
-0.9
+0.1
-0.6
-0.5
3,602
GSW
-0.9
-0.2
-0.9
+0.2
2,186
NYK
-0.9
-0.2
-0.3
-0.4
1,900
NYK
-0.9
-0.6
-0.1
-0.3
3,009
-0.9
+0.1
-0.7
-0.3
2,027
-0.9
-0.3
-0.6
-0.1
1,452
GSW
-0.9
-0.0
-0.6
-0.4
3,831
WAS
-0.9
-0.5
-0.3
-0.1
6,525
PHX
-0.9
+0.2
-1.1
-0.0
11,615
CLE
-0.9
-0.2
-0.5
-0.3
1,276
IND
-0.9
+0.1
-0.9
-0.1
420
IND
-0.9
-0.5
-0.3
-0.2
727
NOP
-0.9
-0.4
-0.5
-0.1
667
SAC
-0.9
-1.0
+0.2
-0.1
11,842
LAL
-1.0
-0.3
-0.4
-0.3
799
DAL
-1.0
+0.1
-0.9
-0.2
673
MIL
-1.0
-0.6
+0.2
-0.6
11,875
DAL
-1.0
+0.0
-0.8
-0.2
284
-1.0
-0.3
-0.9
+0.2
1,068
SAC
-1.0
-0.0
-0.8
-0.1
2,747
ORL
-1.0
+0.1
-0.9
-0.2
6,225
PHI
-1.0
-0.1
-0.5
-0.4
3,022
-1.0
-0.1
-0.7
-0.1
324
NYK
-1.0
-0.2
-0.7
-0.1
295
WAS
-1.0
-0.5
-0.6
+0.1
9,684
LAC
-1.0
-0.2
-0.7
-0.1
3,557
MIA
-1.0
-0.3
-0.8
+0.1
8,183
CLE
-1.0
+0.1
-1.1
0.0
927
BOS
-1.0
+0.1
-0.8
-0.3
431
LAL
-1.0
-0.3
-0.9
+0.1
3,150
-1.0
-0.0
-0.8
-0.3
1,386
-1.0
-0.4
-0.3
-0.3
2,639
DET
-1.0
-0.1
-1.1
+0.2
13,309
SAS
-1.0
+0.3
-1.4
+0.1
1,060
-1.0
-0.2
-0.8
+0.0
541
SAC
-1.0
-0.3
-0.3
-0.4
2,531
NOP
-1.0
-0.3
-0.6
-0.1
276
CHA
-1.1
-0.6
-0.3
-0.1
2,240
MIA
-1.1
-0.3
-0.6
-0.1
11,810
LAC
-1.1
+0.2
-1.4
+0.1
1,609
CHA
-1.1
-0.0
-1.2
+0.1
5,325
PHI
-1.1
-0.4
-0.5
-0.2
4,373
CHA
-1.1
-0.4
-0.6
-0.1
530
SAC
-1.1
-0.1
-0.8
-0.2
1,405
ATL
-1.1
+0.1
-1.0
-0.2
954
MIA
-1.1
-0.3
-0.6
-0.2
671
PHI
-1.1
-0.4
-0.5
-0.2
3,355
TOR
-1.1
-0.3
-0.6
-0.1
1,126
-1.1
-0.2
-0.8
-0.1
834
-1.1
-0.1
-0.8
-0.2
252
NYK
-1.1
+0.1
-1.0
-0.1
9,300
UTA
-1.1
-0.3
-0.7
-0.2
4,170
UTA
-1.1
-0.3
-0.5
-0.3
6,566
NOP
-1.1
-0.4
-0.8
+0.0
3,416
ATL
-1.1
-0.2
-0.5
-0.5
3,238
LAL
-1.1
-0.3
-0.2
-0.5
1,691
SAS
-1.1
-1.3
+1.0
-0.9
2,829
PHI
-1.1
-0.5
-0.5
-0.1
858
ORL
-1.1
-0.2
-0.8
-0.1
2,519
-1.1
-0.4
-1.1
+0.4
3,338
ATL
-1.1
-0.0
-0.8
-0.3
1,338
MIN
-1.1
+1.3
-1.5
-0.9
15,513
-1.1
+0.1
-1.2
+0.0
929
TOR
-1.1
-0.1
-1.1
+0.1
205
-1.1
-0.1
-0.9
-0.1
229
MIN
-1.1
+0.2
-1.4
+0.1
10,276
CLE
-1.2
+0.2
-0.9
-0.5
3,204
BKN
-1.2
-0.9
+0.1
-0.3
3,914
OKC
-1.2
-0.3
-0.6
-0.3
259
BOS
-1.2
+0.3
-1.2
-0.4
2,709
ATL
-1.2
-0.1
-0.6
-0.5
1,950
ATL
-1.2
-0.1
-0.3
-0.8
6,494
CHI
-1.2
-0.5
-0.4
-0.3
269
CLE
-1.2
+0.2
-1.3
-0.0
4,224
SAC
-1.2
+0.1
-1.1
-0.1
2,648
ORL
-1.2
-0.7
-0.6
-0.0
10,369
POR
-1.2
-0.3
-0.8
-0.1
538
WAS
-1.2
-0.2
-0.6
-0.5
5,322
SAS
-1.2
+0.3
-1.0
-0.5
7,957
TOR
-1.2
-0.2
-1.0
-0.1
13,137
-1.2
-0.3
-0.9
-0.0
598
-1.2
-0.4
-0.6
-0.2
887
PHI
-1.2
-0.6
-0.6
-0.0
6,494
WAS
-1.2
-0.2
-0.6
-0.3
4,670
LAL
-1.2
-0.6
-0.1
-0.6
9,074
POR
-1.2
-0.3
-0.8
-0.1
4,008
DEN
-1.2
+0.0
-1.4
+0.2
9,045
PHI
-1.3
-0.5
-0.8
-0.0
5,117
DEN
-1.3
-0.1
-0.9
-0.2
300
MIN
-1.3
+0.1
-0.8
-0.5
3,190
-1.3
-0.2
-0.9
-0.1
351
SAC
-1.3
-0.6
-0.7
-0.1
1,231
DAL
-1.3
-0.6
-0.8
+0.0
12,805
PHI
-1.3
-0.3
-0.7
-0.2
533
BOS
-1.3
-0.1
-1.1
-0.1
227
-1.3
-0.3
-0.9
-0.1
271
DEN
-1.3
+0.2
-1.7
+0.1
5,463
DEN
-1.3
+0.2
-1.1
-0.4
10,214
IND
-1.3
-0.6
-0.6
-0.1
6,540
HOU
-1.3
-0.4
-0.9
-0.1
3,984
ORL
-1.3
-0.6
-0.7
-0.1
1,168
PHX
-1.3
-0.1
-0.8
-0.2
331
LAL
-1.3
-0.4
-0.8
-0.1
2,897
PHI
-1.3
+0.3
-1.9
+0.3
9,827
CHI
-1.3
-0.5
-0.5
-0.4
2,235
MEM
-1.3
-0.3
-0.7
-0.4
5,281
NOP
-1.4
-0.2
-1.0
-0.2
1,238
PHX
-1.4
-0.3
-0.9
-0.1
375
WAS
-1.4
-0.5
-0.9
+0.0
1,964
-1.4
-0.5
-0.7
-0.1
1,098
CLE
-1.4
+0.2
-1.3
-0.2
424
LAL
-1.4
+0.2
-1.1
-0.4
3,945
IND
-1.4
-0.2
-0.9
-0.3
7,818
IND
-1.4
+0.1
-1.4
-0.1
2,438
CHI
-1.4
-0.1
-1.1
-0.2
6,930
DET
-1.4
-0.4
-1.4
+0.4
5,036
PHI
-1.4
-0.5
-0.6
-0.3
1,565
HOU
-1.4
-0.6
-0.6
-0.2
3,221
BKN
-1.4
-0.3
-0.9
-0.2
8,417
POR
-1.4
-0.1
-0.8
-0.5
4,491
BKN
-1.4
-0.5
-0.7
-0.2
1,935
NOP
-1.4
-0.3
-1.0
-0.0
3,783
DET
-1.4
-0.1
-0.9
-0.5
9,337
OKC
-1.4
+0.0
-1.2
-0.3
12,399
ATL
-1.4
+0.3
-1.0
-0.7
10,829
-1.4
-0.3
-0.8
-0.3
1,486
ORL
-1.4
-0.3
-1.2
+0.1
5,898
MEM
-1.4
-0.4
-0.9
-0.1
12,865
-1.4
-0.5
-0.8
-0.2
1,853
SAS
-1.4
-0.1
-0.6
-0.7
2,638
HOU
-1.4
-0.3
-1.3
+0.1
13,201
OKC
-1.4
-0.2
-1.2
0.0
484
BKN
-1.5
-0.4
-0.9
-0.1
6,092
GSW
-1.5
-0.8
-0.5
-0.2
3,484
HOU
-1.5
-1.3
+0.1
-0.3
3,596
PHI
-1.5
-0.2
-0.8
-0.4
4,640
NOP
-1.5
-0.4
-1.1
+0.1
6,339
POR
-1.5
-0.3
-1.1
-0.2
3,952
-1.5
-0.2
-1.1
-0.2
1,126
OKC
-1.5
-0.1
-1.0
-0.3
1,266
NOP
-1.5
-0.5
-0.6
-0.4
1,030
POR
-1.5
-0.2
-1.3
+0.0
3,125
DAL
-1.5
-0.9
-0.4
-0.2
4,017
NYK
-1.5
-0.5
-0.7
-0.3
2,014
-1.5
-0.2
-1.1
-0.3
410
CHA
-1.5
-0.3
-1.2
-0.1
750
NOP
-1.5
-0.6
-0.6
-0.3
771
DET
-1.5
-0.3
-0.9
-0.3
1,363
WAS
-1.5
-0.4
-0.9
-0.2
1,811
HOU
-1.6
-0.2
-0.9
-0.5
12,847
IND
-1.6
-0.3
-1.3
0.0
2,323
UTA
-1.6
-0.9
-1.3
+0.6
12,461
MIL
-1.6
+0.2
-1.5
-0.3
2,672
DET
-1.6
-0.7
-0.5
-0.4
1,449
BKN
-1.6
-0.2
-1.1
-0.3
833
PHX
-1.6
+0.4
-1.2
-0.8
5,071
-1.6
-0.5
-1.2
+0.1
1,938
SAC
-1.6
-0.1
-1.3
-0.3
833
DET
-1.6
-0.5
-1.5
+0.4
1,925
MEM
-1.6
-0.2
-1.1
-0.3
3,446
BKN
-1.6
-1.2
-0.5
+0.0
6,522
WAS
-1.6
-0.3
-0.9
-0.5
6,058
-1.7
-0.1
-1.5
-0.0
1,136
OKC
-1.7
-0.2
-1.0
-0.4
436
PHX
-1.7
+0.1
-1.8
+0.1
6,218
SAC
-1.7
-1.3
-0.1
-0.2
2,801
CHA
-1.7
-0.3
-1.2
-0.2
3,739
MIN
-1.7
-0.3
-1.3
-0.0
1,531
IND
-1.7
-0.7
-1.0
-0.1
2,385
NYK
-1.7
-0.6
-0.9
-0.2
1,233
PHX
-1.7
-0.2
-0.8
-0.7
1,334
IND
-1.7
+0.1
-1.5
-0.4
4,333
GSW
-1.7
-1.0
-0.5
-0.3
11,982
TOR
-1.7
-0.1
-1.4
-0.2
2,138
NOP
-1.8
-1.0
-0.3
-0.5
2,778
PHI
-1.8
+0.0
-1.6
-0.2
1,295
WAS
-1.8
-0.4
-1.3
-0.1
483
GSW
-1.8
-0.3
-1.4
-0.1
9,330
TOR
-1.8
+0.1
-1.8
-0.1
2,016
DEN
-1.8
-0.1
-1.6
-0.2
3,073
ATL
-1.8
-0.4
-0.8
-0.6
3,366
MIL
-1.9
-0.5
-1.3
-0.1
7,496
MIN
-1.9
-0.7
-1.4
+0.2
2,646
BKN
-1.9
-0.7
-1.0
-0.2
942
CHI
-1.9
-0.4
-1.3
-0.2
5,536
NOP
-1.9
+0.5
-2.4
0.0
10,843
TOR
-1.9
+0.2
-1.4
-0.7
5,429
LAL
-2.0
-0.3
-1.5
-0.2
823
POR
-2.0
-0.3
-1.4
-0.2
990
NYK
-2.0
-0.7
-1.0
-0.2
2,065
DEN
-2.0
-0.6
-1.2
-0.2
2,186
BKN
-2.0
-0.0
-2.3
+0.3
7,164
CHA
-2.0
-0.3
-1.4
-0.3
2,796
WAS
-2.0
-0.7
-1.1
-0.2
2,077
PHX
-2.0
-0.5
-1.2
-0.4
12,385
UTA
-2.0
+0.0
-2.1
+0.0
3,200
POR
-2.1
-0.4
-1.1
-0.6
6,390
MEM
-2.1
-0.2
-1.6
-0.1
3,184
IND
-2.1
-0.7
-1.4
-0.1
4,011
SAC
-2.1
-0.3
-1.9
+0.1
4,921
UTA
-2.1
-0.2
-1.5
-0.4
2,372
NYK
-2.1
-0.6
-0.6
-0.9
5,000
UTA
-2.2
-0.4
-1.5
-0.3
5,113
CHI
-2.2
-0.6
-1.4
-0.1
10,798
MIA
-2.2
-0.7
-1.1
-0.4
7,398
MIA
-2.2
-0.6
-1.7
+0.0
3,054
PHX
-2.2
-0.9
-1.1
-0.3
5,832
IND
-2.3
-0.7
-1.6
+0.1
1,278
BOS
-2.3
-0.2
-1.7
-0.3
2,840
CHA
-2.3
-0.8
-1.0
-0.5
1,216
CHI
-2.3
-0.6
-1.6
-0.1
7,848
BKN
-2.3
-0.2
-1.5
-0.6
11,252
SAC
-2.3
-0.5
-1.6
-0.2
1,618
NOP
-2.3
-0.3
-1.3
-0.7
2,529
SAC
-2.3
-0.7
-1.1
-0.6
8,525
TOR
-2.3
-0.3
-1.8
-0.2
4,309
CLE
-2.4
-0.4
-1.3
-0.7
1,974
NYK
-2.4
-0.0
-2.2
-0.1
8,235
ATL
-2.4
+0.2
-2.5
-0.0
569
TOR
-2.4
-0.3
-2.0
-0.1
1,043
MIN
-2.4
-0.9
-1.5
+0.1
7,101
NOP
-2.4
-0.9
-1.3
-0.2
5,767
DAL
-2.4
-0.9
-1.2
-0.3
7,819
DEN
-2.5
+0.1
-2.3
-0.2
1,303
WAS
-2.5
-0.7
-1.2
-0.6
8,425
CHA
-2.5
-1.0
-1.5
-0.0
3,616
PHI
-2.5
-0.6
-1.6
-0.3
4,220
LAL
-2.5
-1.1
-1.2
-0.3
4,782
SAS
-2.6
-1.0
-1.6
+0.0
11,334
ORL
-2.7
-0.7
-1.8
-0.3
2,294
TOR
-2.8
-0.1
-2.3
-0.3
2,961
DAL
-2.8
-0.8
-1.8
-0.2
1,903
POR
-2.8
-0.1
-2.6
-0.1
7,121
DEN
-2.8
-0.5
-1.9
-0.4
3,565
PHI
-2.8
-0.6
-1.9
-0.4
4,357
HOU
-2.9
-0.3
-1.6
-1.0
8,086
MEM
-3.0
-1.1
-1.6
-0.3
3,815
ORL
-3.1
-0.4
-2.7
-0.0
5,544
NOP
-3.6
-1.4
-1.4
-0.7
6,349
PHI
-4.2
-0.7
-2.9
-0.6
6,433
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.