TapToChallenge

Measuring ABS Decision Quality

Evaluating each pitch based on its likelihood to be challenged gives us insight into who is tapping at the right time

Nate Burke · April 4, 2026

ABSCDQExpected Challenges

Challenge Decision Quality Metrics

Every batter and catcher in baseball (and very occasionally pitchers, but we're going to ignore them here) are now making dozens of decisions per game that didn't exist before. The lion's share of the decision making process is based on where the ball crossed the plate. If a catcher closes his fist on a pitch middle-middle and doesn't hear the ump call a strike, he's more likely to tap. But some of it is based on the state of the game - what inning is it, is this a good opportunity to score, and am I possibly going to overturn a strikeout or walk with this challenge? We can look back on this Ronald Acuña Jr. challenge and see that none of these apply the way that they do on this much scrutinized challenge by Matt Wallner.

A week into the season we can see that some players are good at this and some are terrible. Until now the measurements used on this website haven't had a way to measure aggregate challenge value that go beyond win rate, run creation, and WPA. Win rate tells you the outcome, which could be muddied by many relatively easy challenge calls. A pitch 6 inches off the plate called a strike is much easier to identify as a challengeable pitch than one that just barely missed the edge by a smidge. Run creation tells you about value creation, but accruing it is reliant on the player having had the opportunity to challenge in high potential run expectancy situations. WPA tells you about impact to a team's probability of winning a game, but again its accrual is reliant on the player or team being put in high leverage situations. These metrics don't tell you about the decisions the players didn't make, which pitches they correctly let go, or how difficult each decision actually was, and that's what CDQ is for.

What are we measuring?

bCDQ (Batter Challenge Decision Quality) evaluates every called strike a batter sees when their team has at least 1 challenge remaining.

cCDQ (Catcher Challenge Decision Quality) does the same thing for catchers on called balls.

For each of these pitches, we already have a model predicted probability that the pitch gets challenged. A borderline pitch right on the edge of the zone might have a 15% xChall%. A pitch 6 inches off the plate has an expected challenge rate that approaches zero. The models are trained on how often batters and catchers challenge pitches in similar situations based on proximity, count, leverage, challenges remaining, and some other factors.

bCDQ and cCDQ use the expected challenge probability as a "difficulty" weight. Before I explain the formula, let me show you the model accuracy because seeing it is the foundation for trusting and understanding CDQ.

The two models

There are two separate logistic regression models. The offense model (oxChall%) predicts how likely a batter is to challenge a given called strike. The defense model (dxChall%) predicts how likely a pitcher or catcher is to challenge a given called ball. For cCDQ, we multiply dxChall% by 0.96 to get the catcher's share specifically, since catchers initiate about 96% of defensive challenges (I think at the time of me posting this it's around 95% but I'm gonna take a healthy bet that pitcher rates shrink down below the 4.4% rate from Spring Training and leave this hardcoded for now).

Are the models accurate? Here's the calibration chart for both models against 2026 regular season data 1 week into the season. The x axis is what the model predicted, the y axis is what actually happened.

Expected Challenge % Model

How often do players actually challenge vs. how often the model predicts?

This calibration chart compares the model's predicted challenge probabilities against the actual challenge rate. A perfectly calibrated model would follow the diagonal line.

Only bins with at least 100 samples are shown.

Both models track the perfect calibration line closely. When the model says a pitch has a 5% chance of being challenged, about 5% actually are. When it says 10%, about 10% are. The one data point that falls off a bit at the end for defensive challenges is likely due to the lean sample sizes we're working with at the start of the season and I fully expect it to tighten up as more data comes in.

The CDQ formula

Now that you understand what xChall% represents, here's how CDQ uses it. Every eligible pitch falls into one of four buckets:

Ump was wrong, player challenged: reward = (1 - xChall%)

You correctly identified a blown call and acted on it. The reward is bigger when the challenge was less likely to happen. If 25% of players would challenge that pitch, you get +0.75. If 50% would, you get +0.50. This metric values spotting what others miss more than spotting what everyone sees, but is balanced by heavily detracting from the aggregate if you miss a risky challenge:

Ump was right, player challenged: penalty = -(1 - xChall%)

You wasted a challenge on a correct call. The penalty is bigger when the challenge was less likely to happen. If only 2% of players would challenge that pitch, you get -0.98 for a terrible read.

Ump was wrong, player didn't challenge: penalty = -xChall%

You missed a real opportunity. The penalty is bigger when it was more obvious. If 60% of players would have challenged, you eat -0.60 for letting that slide. If only 3% would have, the penalty is just -0.03 because it was some combination of genuinely hard to spot or not worth the challenge given the game state.

Ump was right, player didn't challenge: reward = +xChall%

You showed restraint on a pitch where challenging was tempting. If the model predicts that 10% of players would challenge, you get +0.10 for holding back. If you're the catcher and the pitch is spiked in the dirt 2 feet from the plate, the model may reward you with nothing for not challenging.

CDQ Output

If you challenge at exactly the rate the model predicts, your expected CDQ is zero. Positive CDQ means better decisions than average. Negative means worse.

The average bad challenge costs about -0.89 CDQ points because most challenged pitches have a low xChall%. A correct challenge rewards about +0.78 on average. The ~96% of pitches that aren't challenged contribute small amounts (+0.01 to +0.15 each, most on the much, much lower end).

Who's at the top?

CS = called strikes seen, CB = called balls seen, CC = correct challenges, BC = bad challenges, MO = missed opportunities.

bCDQ Leaderboard

#PlayerTeambCDQbCDQ/PCSCCBCMO
1Manny MachadoSD2.040.081425202
2Josh BellMIN1.950.139314201
3Pete AlonsoBAL1.900.065429201
4Mike TroutLAA1.870.064629314
5Austin MartinMIN1.840.115216201
6Trent GrishamNYY1.810.075624201
7Will BensonCIN1.780.22238202
8Kyle SchwarberPHI1.770.061129313
9Iván HerreraSTL1.720.066026202
10Otto LopezMIA1.610.067024101

cCDQ Leaderboard

#PlayerTeamcCDQcCDQ/PCBCCBCMO
1Austin WellsNYY5.090.0207246405
2Will SmithLAD3.580.0117307628
3Dillon DinglerDET3.490.0161217308
4Salvador PerezKC2.740.0105260524
5William ContrerasMIL2.700.01032625111
6Nick FortesTB2.700.0107251527
7Adley RutschmanBAL2.400.0085283207
8J.T. RealmutoPHI2.140.00673193011
9Patrick BaileySF2.070.0073282324
10Victor CaratiniMIN1.910.023382412

Edgar Quero

In my opinion the most interesting output of this analysis is that Edgar Quero is dead last for catchers at -3.47 cCDQ while being 5th in Catcher Net Runs at +0.99. He's won enough high run value overturns to look good in run value terms, but cCDQ sees the full picture: 7 bad challenges and 9 missed opportunities alongside those 5 wins. Here's a full look at every called ball Quero's seen at the time of me writing this:

Edgar Quero's cCDQ Pitch Log

#TypecCDQcxChall%
1Correct Non-challenge+0.00030.0%
2Correct Non-challenge0.00000.0%
3Correct Challenge+0.490950.9%
4Correct Non-challenge+0.00010.0%
5Correct Non-challenge0.00000.0%
6Correct Non-challenge+0.00010.0%
7Correct Non-challenge+0.05255.3%
8Correct Non-challenge+0.00050.1%
9Correct Non-challenge0.00000.0%
10Correct Non-challenge+0.01451.4%
11Correct Non-challenge+0.00750.8%
12Correct Non-challenge+0.08358.3%
13Correct Non-challenge0.00000.0%
14Correct Non-challenge0.00000.0%
15Correct Non-challenge0.00000.0%
16Correct Challenge+0.800919.9%
17Correct Non-challenge+0.00300.3%
18Correct Non-challenge0.00000.0%
19Correct Challenge+0.807119.3%
20Correct Non-challenge0.00000.0%
21Correct Non-challenge+0.00010.0%
22Correct Non-challenge+0.01501.5%
23Correct Non-challenge+0.00370.4%
24Correct Non-challenge0.00000.0%
25Missed Opportunity-0.256725.7%
26Correct Non-challenge0.00000.0%
27Correct Non-challenge+0.00020.0%
28Correct Non-challenge0.00000.0%
29Correct Non-challenge+0.00010.0%
30Correct Non-challenge0.00000.0%
31Correct Non-challenge0.00000.0%
32Correct Non-challenge0.00000.0%
33Correct Non-challenge+0.01691.7%
34Correct Non-challenge+0.00430.4%
35Correct Non-challenge+0.03673.7%
36Correct Non-challenge+0.00050.1%
37Correct Non-challenge0.00000.0%
38Correct Non-challenge0.00000.0%
39Missed Opportunity-0.139413.9%
40Correct Non-challenge+0.06786.8%
41Correct Non-challenge0.00000.0%
42Correct Non-challenge0.00000.0%
43Correct Non-challenge+0.00860.9%
44Correct Non-challenge+0.00070.1%
45Bad Challenge-0.96303.7%
46Correct Non-challenge+0.00010.0%
47Correct Non-challenge0.00000.0%
48Correct Non-challenge+0.09739.7%
49Correct Non-challenge+0.04194.2%
50Correct Non-challenge+0.00090.1%
51Correct Non-challenge+0.00520.5%
52Correct Non-challenge+0.00010.0%
53Correct Non-challenge0.00000.0%
54Correct Non-challenge+0.04724.7%
55Correct Non-challenge+0.00070.1%
56Correct Non-challenge+0.00280.3%
57Correct Non-challenge+0.00260.3%
58Correct Non-challenge+0.04714.7%
59Correct Non-challenge+0.00190.2%
60Correct Non-challenge+0.00040.0%
61Correct Non-challenge+0.00010.0%
62Correct Non-challenge0.00000.0%
63Correct Non-challenge+0.00290.3%
64Correct Non-challenge+0.00200.2%
65Correct Non-challenge+0.00370.4%
66Correct Non-challenge+0.00320.3%
67Correct Non-challenge0.00000.0%
68Correct Non-challenge+0.00050.1%
69Correct Non-challenge+0.00320.3%
70Correct Non-challenge+0.01982.0%
71Correct Non-challenge+0.00140.1%
72Correct Non-challenge0.00000.0%
73Correct Non-challenge+0.00040.0%
74Correct Non-challenge0.00000.0%
75Correct Non-challenge0.00000.0%
76Correct Non-challenge0.00000.0%
77Correct Non-challenge+0.07717.7%
78Correct Non-challenge+0.00010.0%
79Correct Non-challenge+0.00140.1%
80Missed Opportunity-0.228122.8%
81Correct Non-challenge+0.00030.0%
82Correct Non-challenge+0.00010.0%
83Correct Non-challenge+0.05365.4%
84Bad Challenge-0.95144.9%
85Correct Non-challenge+0.00050.1%
86Correct Non-challenge0.00000.0%
87Correct Non-challenge+0.03353.4%
88Correct Non-challenge+0.00020.0%
89Correct Non-challenge0.00000.0%
90Correct Non-challenge0.00000.0%
91Correct Non-challenge0.00000.0%
92Correct Non-challenge0.00000.0%
93Correct Non-challenge0.00000.0%
94Correct Non-challenge0.00000.0%
95Correct Non-challenge+0.00010.0%
96Correct Non-challenge0.00000.0%
97Correct Non-challenge+0.00270.3%
98Correct Non-challenge+0.00290.3%
99Correct Non-challenge0.00000.0%
100Correct Non-challenge+0.00020.0%
101Correct Non-challenge+0.00600.6%
102Correct Non-challenge+0.00020.0%
103Correct Non-challenge+0.00680.7%
104Correct Non-challenge0.00000.0%
105Correct Non-challenge0.00000.0%
106Correct Challenge+0.765623.4%
107Bad Challenge-0.95874.1%
108Correct Non-challenge+0.00060.1%
109Correct Non-challenge0.00000.0%
110Correct Non-challenge0.00000.0%
111Correct Non-challenge0.00000.0%
112Correct Non-challenge+0.09549.5%
113Correct Non-challenge+0.00090.1%
114Correct Non-challenge0.00000.0%
115Correct Non-challenge+0.00010.0%
116Correct Non-challenge+0.00360.4%
117Correct Non-challenge0.00000.0%
118Correct Non-challenge0.00000.0%
119Correct Non-challenge0.00000.0%
120Correct Non-challenge+0.00140.1%
121Missed Opportunity-0.198619.9%
122Correct Non-challenge+0.00030.0%
123Missed Opportunity-0.386038.6%
124Correct Non-challenge+0.04554.5%
125Correct Non-challenge0.00000.0%
126Correct Non-challenge+0.00010.0%
127Correct Non-challenge0.00000.0%
128Correct Non-challenge+0.00060.1%
129Missed Opportunity-0.259325.9%
130Correct Non-challenge+0.00320.3%
131Correct Non-challenge+0.01051.1%
132Correct Non-challenge+0.00170.2%
133Correct Non-challenge0.00000.0%
134Correct Non-challenge+0.00100.1%
135Correct Non-challenge0.00000.0%
136Correct Non-challenge+0.00020.0%
137Correct Non-challenge+0.00620.6%
138Correct Non-challenge+0.00090.1%
139Correct Non-challenge0.00000.0%
140Missed Opportunity-0.139614.0%
141Correct Non-challenge+0.00030.0%
142Correct Non-challenge+0.01501.5%
143Correct Non-challenge+0.00010.0%
144Correct Non-challenge+0.00310.3%
145Correct Non-challenge+0.00380.4%
146Correct Non-challenge+0.02322.3%
147Correct Non-challenge+0.00860.9%
148Correct Non-challenge0.00000.0%
149Correct Non-challenge+0.00030.0%
150Correct Non-challenge+0.01381.4%
151Correct Non-challenge+0.00010.0%
152Correct Non-challenge0.00000.0%
153Bad Challenge-0.96163.8%
154Correct Non-challenge+0.01301.3%
155Bad Challenge-0.99021.0%
156Correct Non-challenge0.00000.0%
157Correct Non-challenge+0.01931.9%
158Correct Non-challenge+0.00010.0%
159Correct Non-challenge0.00000.0%
160Correct Non-challenge0.00000.0%
161Correct Non-challenge+0.00200.2%
162Correct Non-challenge0.00000.0%
163Correct Non-challenge0.00000.0%
164Correct Non-challenge0.00000.0%
165Correct Non-challenge0.00000.0%
166Correct Non-challenge+0.00610.6%
167Correct Non-challenge+0.09839.8%
168Correct Non-challenge+0.00240.2%
169Correct Non-challenge0.00000.0%
170Correct Non-challenge0.00000.0%
171Correct Non-challenge+0.00010.0%
172Correct Non-challenge+0.00040.0%
173Correct Non-challenge0.00000.0%
174Correct Non-challenge+0.00010.0%
175Correct Non-challenge+0.00150.1%
176Correct Non-challenge0.00000.0%
177Correct Non-challenge+0.00020.0%
178Correct Non-challenge0.00000.0%
179Correct Non-challenge0.00000.0%
180Correct Non-challenge0.00000.0%
181Missed Opportunity-0.283328.3%
182Correct Non-challenge+0.00380.4%
183Correct Non-challenge+0.00010.0%
184Correct Non-challenge+0.00030.0%
185Correct Non-challenge0.00000.0%
186Bad Challenge-0.99470.5%
187Correct Non-challenge0.00000.0%
188Correct Non-challenge+0.00630.6%
189Correct Non-challenge+0.00430.4%
190Correct Non-challenge0.00000.0%
191Correct Non-challenge+0.00250.3%
192Correct Non-challenge0.00000.0%
193Correct Non-challenge+0.00010.0%
194Correct Non-challenge+0.00050.1%
195Correct Non-challenge+0.00100.1%
196Correct Non-challenge+0.00030.0%
197Correct Non-challenge+0.00350.3%
198Correct Non-challenge0.00000.0%
199Correct Non-challenge+0.00060.1%
200Correct Non-challenge+0.06306.3%
201Correct Non-challenge0.00000.0%
202Correct Non-challenge+0.03023.0%
203Correct Non-challenge+0.00090.1%
204Correct Non-challenge0.00000.0%
205Correct Non-challenge+0.00020.0%
206Correct Non-challenge0.00000.0%
207Correct Non-challenge0.00000.0%
208Correct Non-challenge0.00000.0%
209Correct Non-challenge+0.01091.1%
210Correct Non-challenge0.00000.0%
211Correct Challenge+0.702829.7%
212Correct Non-challenge0.00000.0%
213Correct Non-challenge0.00000.0%
214Correct Non-challenge+0.00110.1%
215Correct Non-challenge0.00000.0%
216Correct Non-challenge+0.00010.0%
217Correct Non-challenge+0.01681.7%
218Correct Non-challenge0.00000.0%
219Correct Non-challenge0.00000.0%
220Correct Non-challenge+0.00830.8%
221Correct Non-challenge0.00000.0%
222Correct Non-challenge+0.114211.4%
223Correct Non-challenge0.00000.0%
224Correct Non-challenge+0.07207.2%
225Correct Non-challenge0.00000.0%
226Correct Non-challenge0.00000.0%
227Correct Non-challenge+0.03243.2%
228Bad Challenge-0.91878.1%
229Missed Opportunity-0.227022.7%
230Correct Non-challenge0.00000.0%
231Correct Non-challenge+0.09029.0%
232Correct Non-challenge+0.00030.0%
233Correct Non-challenge+0.08668.7%
234Correct Non-challenge+0.00070.1%
235Correct Non-challenge0.00000.0%
236Correct Non-challenge0.00000.0%
237Correct Non-challenge0.00000.0%
238Correct Non-challenge+0.00030.0%
239Correct Non-challenge+0.07377.4%
240Correct Non-challenge+0.00060.1%
241Correct Non-challenge+0.00370.4%
242Correct Non-challenge+0.01771.8%

If you're curious what some of these correct non-challenges with no value being given to Quero look like, here are some examples: 1 2 3 4 5

bCDQ and cCDQ are live on the Players and Teams pages.

Thanks for reading,

Nate

Originally posted at 8:55AM ET on 4/4/2026