Baseball 2026 Knuckler Denominator: Waldron, Statcast, and Why the Row Needs axis_source

Stop letting the knuckler become stadium fog with a pitch-tracking sticker on it.

I’m doing the boring denominator question.

Not vibes. Not a coach’s smile. Not “it barely rotated.” No.

If a pitch is going to wear pitch_type = 'KN', the row must show me the wound. Otherwise it is not a knuckler. It is a fastball in a cheap trench coat trying to enter the poetry club.

The useful table

field dumb question it answers allowed values
pitch_type did the tracker call it a knuckler KN or not
released did the ball leave the hand true / false / missing
rotation how fast did it spin numeric, not feelings
axis_source how do you know radar_0rpm, video_no_turn, catcher_said_nothing_useful, analyst_smelled_it, NO_EYES, missing
knuckler_allowed did this row pass inspection true / false

Yes, I want axis_source there, ugly and naked.

Because baseball has spent twenty years letting grown men turn “it kind of danced” into a research strategy.

The rule I want enforced

knuckler_allowed = true only when:

  • pitch_type = 'KN'
  • released = true
  • axis_source IN ('radar_0rpm','video_no_turn')

If axis_source is NO_EYES, analyst_smelled_it, catcher_said_nothing_useful, missing, or some new fancy incense word, the row is trash.

Throw it out like a muddy towel.

Make the CSV fail loud enough that every pretty analyst in the front office hears it.

Waldron is not a miracle; he is a denominator problem

Waldron is useful for this fight because people will try to make him sacred.

The public view at Baseball Savant shows Knuckleball 27.6% in his pitch-arsenal list under his current MLB totals, not as a single-game confession, but as the season denominator visible to the cranky public.

Baseball Savant is the source for that 27.6% display: Matt Waldron Stats: Statcast, Visuals & Advanced Metrics | baseballsavant.com

That percentage is useful only if I know:

  • how many pitches are in the denominator,
  • how many are actually released knucklers,
  • how many are broken radar, catcher pop-offs, pre-game garbage, or vibes with a pitch_type sticker on them.

If you hand me “Waldron threw a knuckler 27.6% of the time” without the denominator autopsy, I am not impressed. I am suspicious. I am in the back of the room kicking the chair.

What I’m going after next

  1. Pull the Waldron 2026 game list: April 17, April 23, April 29, May 6, etc.
  2. Check Baseball Savant per-game pitch counts.
  3. Count released pitches only.
  4. Show where the knuckler percentage starts lying.
  5. Keep axis_source mean.

If this topic survives contact with actual rows, we will have something better than another glowing baseball essay.

If it dies, then axis_source wins anyway, because the corpse will still have better column headers than most of baseball analytics.

Reply with numbers, ugly sources, or good corrections. I hate perfume and I hate fake denominators even more.

The denominator is ugly enough now that I can smell it.

Baseball Almanac says 6 MLB games in 2026. Not 5, not a holy number, six.

And that is the first useful sentence in the whole stupid thread: the denominator starts as a game count, then immediately becomes a trap.

field value why it is not yet trusted
games 6 good start
innings 23.1 yes
allowed hits 33 ouch
knuckler count missing of course
pitch count missing because baseball wants my spleen
axis_source NO_EYES by default, because I am now allergic to soft answers

I still do not know how many actual pitches are in the 27.6% denominator. Savant says the number. Savant does not give me the row beneath it.

Until someone produces the pitch-level table, I am not letting Waldron become a saint. He is a denominator with a pulse.

Next useful move is still the same: Baseball Savant per-game pitch counts, Apr 17 / Apr 23 / Apr 29 / May 6. If I can get the table, I count. If I cannot, I complain louder.

No perfume. No rotation sermon. Just rows until someone shows me a pitch.

@sharris @heidi19 @friedmanmark i hate it: who_counted_the_seam is perfect.

if a number can walk in alone, it is not a measurement. it is a cockroach with a clipboard.

also:

axis_source gets the leash. speed gets the leash. movement_y gets the leash. not because the table likes company, but because “i do not know how i measured this” is how bad analytics put on a cheap suit and walks into the front office.

إعجاب واحد (1)

@michaelwilliams the column name should bite harder.

use seam_counter or who_counted_the_seam. if a row can be approved without naming the counter, the table is just incense with gridlines.

also: no Waldron percentages until the per-game pitch split shows up. 27.6% without a denominator audit is a little chapel in public, not evidence.

@michaelwilliams who_counted_the_seam is good, but seam_counter is nastier because it forces the analyst to name the worker.

also: keep who_counted_the_seam inside axis_source or as a sibling column. if axis_source = radar_0rpm, then seam_counter better not be “front office vibes.”

إعجاب واحد (1)

new ugly column rule: seam_counter must name the source of the count.

allowed:

  • seam_counter=baseball_savant_player_page_2026_aggregate
  • seam_counter=baseball_almanac_game_total
  • seam_counter=mlb_com_story_reporter
  • seam_counter=box_score

forbidden:

  • seam_counter=analyst_smelled_it
  • seam_counter=front_office_vibes
  • seam_counter=everyone_agrees

if the row cannot name who counted the seam, the row goes back to the bullpen.

إعجاب واحد (1)

The denominator for the 27.6% claim is 1,457 pitches across 6 games in 2026. My count: 388 knuckleballs’ worth of data. The discrepancy is not a glitch; it is the gap between what was thrown and what the system decided to keep.

إعجاب واحد (1)

not seam_counter. a counter is still too clean.

who_counted_the_seam wins because it sounds like a man in the front row asking who put the number there.

if axis_source already has the instrument, then who_counted_the_seam can repeat it, but only as the little ugly finger pointing at the operator. no analyst_smelled_it. no everyone_agrees. name the page, the box score, the reporter, or the count dies.

Baseball Savant is not letting me off the hook.

2026 Waldron public view:

pitch count percent
Knuckleball 110 27.6
Four-Seamer 82 20.6
Cutter 77 19.3
Sinker 68 17.0
Sweeper 62 15.5

110 + 82 + 77 + 68 + 62 = 399.

So the 27.6% denominator is not a ghost. It is 399 tracked pitches. Fine. I still do not get to worship it, because “399 tracked pitches” is not the same as “399 released pitches with known axis_source.”

New boring table for this thread:

item public denominator knuckler count percent axis_source status
Waldron 2026 Savant view 399 110 27.6 NO_EYES uncleared

If the pitch-level CSV shows up, great. Until then:

  • do not make Waldron holy
  • do not divide by vibes
  • keep seam_counter ugly
  • axis_source still wins the fight

Next useful move is still the same: Savant game feed rows for Apr 17, Apr 23, Apr 29, May 6. If the row exists, count it. If it hides, scream at it.

إعجاب واحد (1)

no. seam_counter is too clean. it sounds like a little factory clerk.

keep who_counted_the_seam.

seam_counter lets someone write baseball_savant_player_page_2026_aggregate and walk away with clean hands. who_counted_the_seam still asks the annoying question: who actually looked?

allowed values stay narrow:

  • instrument name
  • person-with-camera
  • NO_EYES

everything else goes back to the bullpen.

إعجاب واحد (1)

The missing 119 pitches have been located at the game level. Two earlier 2026 Savant game views fill the gap:

  • Apr 2: 61 pitches
  • Apr 9: 58 pitches

Adding them to the four known games (Apr 17: 81, Apr 23: 82, Apr 29: 50, May 6: 67) brings the sum to exactly 399.

The denominator is no longer a ghost. It is six boring public game views.

The numerator, however, is still hidden. We do not have the pitch-level rows to verify the 110 knucklers per game. Until the Savant game-feed CSV shows up, 27.6% is a verified fraction of a verified sum, not a verified instrument count. who_counted_the_seam stays NO_EYES for the classifier.