The site has changed a lot since early April. Some of it you've probably noticed (the homepage looks completely different), but some of it happened under the hood. This post is the tour. As always, if you have any questions or comments, feel free to reach out to me on social media. I'm most active on Reddit.
Quality of life
- Filters and CSV export on every data table. Every table has a filter modal and a one click export of exactly what you've filtered.
- The glossary got rebuilt with category sections.
- The nav got cleaned up. Challenges, Missed Opportunities, and Out of Challenges now live under a single Data dropdown.
- Season series results, umpire game lines, and scorecard links on every game page.
ROE and WOE: what did your challenge decisions actually earn?
CDQ measures whether players make the right challenge decisions, weighted by how obvious each decision was. What it undersells a bit is the stakes.
That's what ROE (Runs Over Expected) and WOE (Wins Over Expected) are for. Same four decision cases as CDQ, same eligibility rules, but every decision is now weighted by what it was actually worth:
-
Win a challenge: you bank the overturn value, discounted by how expected the challenge was
-
Pass on a bad call: you eat the value you left on the table, scaled by how obvious the challenge was
-
Lose a challenge: you pay the opportunity cost of the burned challenge
-
Correctly pass on a good call: you get a small credit for not wasting one
Sum it all up and you get a number in runs (ROE) or win probability (WOE) that answers "how much value did this player's challenge decisions generate compared to an average decision maker seeing the same pitches?"
CDQ and ROE can disagree. The White Sox catchers currently have the worst cCDQ in baseball in large part from their league leading 68 bad challenges from behind the plate, but have a top 10 catcher ROE. Winning a challenge gains you about 0.22 runs on average and losing one costs about 0.03 runs of average future value. When the payoff is that lopsided, an aggressive challenger with a mediocre hit rate still prints run value.
ROE and WOE are live on the players and teams tables, player career splits, team profiles, and as per pitch values on the challenges and missed opportunities tables. Definitions are in the glossary.
Out of Challenges: the best challenges never made
The site has always tracked challenges (what teams did) and missed opportunities (what they chose not to do). There was a third bucket hiding in the data: blown calls that teams couldn't challenge because they were already out of challenges. That bucket is now a first class dataset at /out-of-challenges.
Through early July there are 900+ of these pitches in the 2026 regular season, worth about 131 runs of stranded overturn value league wide.
The obvious question about an unchallengeable pitch is "well, would they even have challenged it?" The challenge probability model normally can't answer that, because it only scores pitches where a challenge is possible. So now, for every out of challenges pitch, the model runs what the expected challenge% be if this team had a challenge in its pocket. The answer is displayed on every row. The current leader is a Tim Herrin pitch to Austin Hedges that clipped the zone by nearly an inch and got called a ball, walking in a run to tie the game against the Red Sox on May 31st with a 97% challenge probability. Cleveland just had to sit there and take it, immediately noted by play by play on the call.
Out of challenges pitches also show up in the homepage Recent Activity feed now, on game pages, and as clickable dots on umpire miss maps.
Player pages
Player pages are cleaned up and have new charts towards the bottom of the page. Most interestingly:
- The challenge rate and challenge success rate can be broken down by leverage. Each player can easily be evaluated by how good they are at identifying and winning challenges when the game has nothing on the line or when has a lot on the line.
- Catchers can now be evaluated by the batter height they're up against. Jose Altuve has a zone that is 14.5% smaller in area than Yordan Alvarez (the guy that typically bats right after him), and you can now check to see how catchers are performing when up against each of those archetypes.
Game pages
Game pages used to show challenges and nothing else. Now each game shows all three pitch datasets (challenges, missed opportunities, out of challenges) in one log with a toggle that also drives the strike zone graphic. On top of that:
- The season series between the two clubs, with the running record and each game's home plate umpire and accuracy
- The umpire's full game line: pitches, accuracy, called ball and called strike accuracy splits, misses, and challenges faced
Umpire pages
Umpire profiles got the same treatment: an ABS era career splits table (including new called ball and called strike accuracy splits), a per game log, and a miss map that plots every incorrect call an umpire has made, color coded by which direction the miss went. Every dot links to the pitch's detail page. I'll be adding umpire ABS zone accuracy by batter height groups here as well.
The models got a checkup
Two model updates worth knowing about if you use xChall%, xStr%, xAcc%, or AOE:
-
Position players pitching are now excluded from both models. Umpires give courtesy strikes on 50 mph eephus lobs and nobody ever challenges them because they can't per ABS rules. Those pitches were poisoning the far edge of the challenge model and quietly dinging umpires' expected accuracy. They're out of the training data, out of the scoring, and out of the metrics.
-
The called strike model now trains on 2026 data from this site's own pipeline instead of 2025 data, so umpire knowledge of batter height and the ABS strikezone is helping that prediction become more accurate.
One more thing
There's now a Support button in the nav. TapToChallenge is free and will stay free, but the pipeline, hosting, and database costs are real over a 162 game season. If the site has been useful to you, a contribution of any size helps keep it running.
Thanks for reading, Nate Originally posted at 11:36AM ET on 7/5/2026

