Batter vs Pitch Arsenal
A batter's own numbers by pitch type and location — add a pitcher to see their actual arsenal overlaid on top, and how this batter has done against pitches shaped like it.
Luis Campusano RHB SDN vs Dustin May RHP MIL
P = platoon edge (batter faces the opposite hand)
Batters grouped by swing shape — bat speed and swing length for power, attack angle and path tilt for loft — from Statcast bat tracking.
The number beside each metric is the gap to league average across the 610 batters with enough tracked swings to measure.
A description, not a prediction. The model does not use it.
Bat speed, barrel rate, exit velocity and chase rate over the last 30 games against this player's own last 100, so it reads as “is he himself right now” rather than “is he good”.
Flagged only when it has moved further than three quarters of hitters do. Movement in either direction counts.
Descriptive — the model does not use it.
whole-game, not filtered to this arsenal — see the per-pitch sections belowPitchers' arsenals are grouped by pitch shape — velocity, break and spin — and weighted by how often this pitcher throws each, so the number describes the arsenal he will face tonight.
Compared against this batter's own mark across every shape he has faced, so “done well” means well for him.
Descriptive — the model does not read it.
Overall vs RHP
One row per pitch this pitcher throws, ordered by usage. The bar is how this batter has performed against it; the dotted line is his own average from that hand.
Deeper red is better than his usual, deeper blue worse.
Faded rows have too little contact to trust — the count on the right is the sample behind the number.
vs RHP · ordered by usageNo tracked contact against this pitcher's pitches for this batter yet
Left: what the pitcher throws. Right: how this batter has done against that same pitch.
The right-hand columns count only pitches carrying the same label — a slider against a slider — thrown by pitchers with the same handedness.
That is precise but can leave a small sample. The table below groups by how a pitch actually moves instead.
| Pitch | Usage% | Velo | Vert Brk | Horz Brk | Spin | Allowed HR% | Allowed Hard-Hit% | Allowed xwOBA/con | Luis Campusano: BA | Luis Campusano: HR% | Luis Campusano: Hard-Hit% | Luis Campusano: Exit Velo | Luis Campusano: xwOBA/con |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SI | 41% | 95.6 | 6.2" | -18.0" | 2389 | 1.6% | 52% | 0.381 | 0.257 | 2.9% | 35% | 84.7 | 0.392 |
| ST | 30% | 85.6 | -2.9" | 16.5" | 3169 | 3.4% | 41% | 0.420 | 0.125 | 0.0% | 20% | 76.0 | 0.196 |
| FF | 15% | 96.7 | 14.5" | -10.1" | 2336 | 1.4% | 40% | 0.270 | 0.224 | 4.1% | 47% | 93.0 | 0.343 |
| FC | 12% | 92.8 | 8.6" | 1.1" | 2462 | 4.5% | 30% | 0.364 | 0.111 | 0.0% | 22% | 84.9 | 0.312 |
| CU | 1% | 84.2 | -15.9" | 8.8" | 3091 | 0.231 | 0.0% | ||||||
| CH | 0% | 94.1 | 9.8" | -17.3" | 2474 | 0.625 | 0.0% | ||||||
| PO | 0% | 95.7 | 12.4" | -12.4" | 2113 |
The table above, grouped by how the pitch moves rather than what it is called.
Two pitchers can both say “slider” and throw very different pitches. Grouping by speed, break and spin pools everyone throwing something physically similar, so the sample is bigger and steadier.
| Shape (mostly) | Usage% | Velo | Vert Brk | Horz Brk | Allowed xwOBA/con | Luis Campusano: BA | Luis Campusano: HR% | Luis Campusano: Hard-Hit% | Luis Campusano: xwOBA/con |
|---|---|---|---|---|---|---|---|---|---|
| SI/FF/CH | 42% | 95.7 | 6.3" | -17.9" | 0.375 | 0.273 | 3.0% | 41% | 0.426 |
| CH/FS/FO | 42% | 95.7 | 6.3" | -17.9" | 0.375 | ||||
| ST/SL/CU | 30% | 85.6 | -2.9" | 16.5" | 0.420 | 0.154 | 0.0% | 12% | 0.221 |
| FF/SI/FC | 13% | 96.7 | 14.6" | -9.4" | 0.328 | 0.242 | 6.1% | 42% | 0.362 |
| SL/ST/CU | 13% | 96.7 | 14.7" | -9.5" | 0.328 | 0.286 | 0.0% | 27% | 0.255 |
| FC/SL/FF | 10% | 92.6 | 8.1" | 1.6" | 0.318 | 0.185 | 7.4% | 41% | 0.433 |
| FF/SI/FC | 3% | 95.4 | 13.2" | -8.4" | 0.300 | 0.200 | 0.0% | 41% | 0.235 |
| EP/FA/SL | 3% | 95.5 | 13.2" | -8.7" | 0.300 | ||||
| CU/KC/ST | 1% | 84.2 | -15.7" | 9.0" | 0.364 | 0.0% | |||
| CH/SI/FS | 1% | 84.2 | -15.9" | 8.8" | 0.556 | 11.1% |
One row per plate appearance, newest first. Strikeouts and walks included.
Expected stats say what a batted ball was worth given how hard and at what angle it was hit, whether or not it found a glove.
xBA is blank on strikeouts and walks — there is no batted ball to judge. xwOBA counts them.
93 PA · 30 games · 2026-08-17 to 2026-10-07| Date | Result | Count | Pitch | Velo | Exit Velo | Angle | Dist | Location | xBA | xSLG | xwOBA | Pitcher |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-10-07 | Strikeout swinging | 3-2 | CH | 93.5 | — | — | — | — | — | — | 0.000 | Aaron Ashby |
| 2026-10-07 | Reached On Error ground ball | 1-2 | CH | 89.8 | 92.4 | 2° | 59 | Infield | 0.370 | 0.423 | 0.363 | Robert Gasser |
| 2026-10-07 | Strikeout looking | 1-2 | ST | 80.3 | — | — | — | — | — | — | 0.000 | Robert Gasser |
| 2026-10-04 | Single line drive | 1-2 | ST | 82.0 | 93.1 | 16° | 278 | LF | 0.797 | 0.943 | 0.751 | Logan Henderson |
| 2026-10-04 | Walk | 3-0 | FF | 93.7 | — | — | — | — | — | — | 0.698 | Logan Henderson |
| 2026-10-03 | Walk | 3-0 | SI | 95.8 | — | — | — | — | — | — | 0.698 | DL Hall |
| 2026-10-03 | Out fly ball | 1-1 | SI | 98.6 | 85.4 | 31° | 289 | RF | 0.037 | 0.076 | 0.047 | Aaron Ashby |
| 2026-10-03 | Grounded Into DP ground ball | 2-2 | FF | 100.8 | 97.0 | -6° | 20 | Infield | 0.224 | 0.251 | 0.209 | Jacob Misiorowski |
| 2026-10-03 | Single ground ball | 0-1 | FC | 95.2 | 96.7 | 1° | 63 | RF | 0.397 | 0.404 | 0.357 | Jacob Misiorowski |
| 2026-09-29 | Out ground ball | 0-2 | CU | 79.3 | 85.9 | -4° | 14 | Infield | 0.140 | 0.151 | 0.126 | Aaron Civale |
| 2026-09-29 | Single line drive | 0-2 | FF | 95.8 | 99.3 | 10° | 204 | RF gap | 0.777 | 0.907 | 0.736 | Javier Assad |
| 2026-09-29 | Out fly ball | 2-2 | CU | 73.2 | 81.3 | 46° | 250 | RF gap | 0.014 | 0.014 | 0.013 | Matthew Boyd |
| 2026-09-27 | Out ground ball | 1-2 | FF | 97.5 | 66.1 | -70° | 1 | Infield | 0.211 | 0.211 | 0.190 | Ryne Nelson |
| 2026-09-27 | Walk | 3-0 | FF | 102.5 | — | — | — | — | — | — | 0.698 | Justin Martinez |
| 2026-09-27 | Strikeout swinging | 1-2 | FF | 99.7 | — | — | — | — | — | — | 0.000 | Juan Morillo |
| 2026-09-25 | Single line drive | 0-0 | ST | 83.8 | 101.4 | 20° | 344 | LF | 0.429 | 0.905 | 0.555 | Brandon Pfaadt |
| 2026-09-25 | Grounded Into DP ground ball | 0-1 | ST | 83.6 | 75.2 | 9° | 121 | LF | 0.303 | 0.368 | 0.310 | Brandon Pfaadt |
| 2026-09-25 | Out ground ball | 1-2 | ST | 84.1 | 45.5 | -14° | 7 | Infield | 0.155 | 0.161 | 0.140 | Brandon Pfaadt |
| 2026-09-22 | Out ground ball | 0-1 | CU | 81.1 | 61.7 | -10° | 5 | Infield | 0.072 | 0.078 | 0.071 | Jack Dreyer |
| 2026-09-22 | Out ground ball | 1-2 | FF | 96.5 | 88.1 | -37° | 4 | Infield | 0.041 | 0.041 | 0.037 | Kyle Hurt |
| 2026-09-22 | Single line drive | 2-2 | FF | 99.2 | 84.5 | 18° | 234 | LF gap | 0.957 | 1.073 | 0.885 | Roki Sasaki |
| 2026-09-22 | Single ground ball | 2-2 | FF | 97.0 | 96.5 | -2° | 37 | CF | 0.309 | 0.342 | 0.281 | Justin Wrobleski |
| 2026-09-19 | Out line drive | 3-2 | FF | 99.3 | 92.6 | 28° | 339 | LF gap | 0.126 | 0.289 | 0.170 | Victor Vodnik |
| 2026-09-19 | Walk | 3-2 | FC | 94.2 | — | — | — | — | — | — | 0.698 | Calvin Faucher |
| 2026-09-19 | Out fly ball | 1-2 | CU | 80.3 | 76.4 | 37° | 258 | RF | 0.091 | 0.105 | 0.082 | Eury Pérez |
| 2026-09-19 | Strikeout swinging | 3-2 | FF | 99.1 | — | — | — | — | — | — | 0.000 | Eury Pérez |
| 2026-09-17 | Out popup | 0-2 | FF | 94.4 | 85.1 | 65° | 182 | RF corner | 0.009 | 0.015 | 0.012 | Zach Agnos |
| 2026-09-17 | Strikeout swinging | 2-2 | ST | 84.5 | — | — | — | — | — | — | 0.000 | Zach Agnos |
| 2026-09-17 | Out ground ball | 3-2 | FF | 91.4 | 96.6 | -8° | 20 | Infield | 0.211 | 0.238 | 0.202 | Tanner Gordon |
| 2026-09-17 | Strikeout swinging | 1-2 | CU | 79.6 | — | — | — | — | — | — | 0.000 | Tanner Gordon |
| 2026-09-15 | Out fly ball | 1-2 | FF | 95.6 | 94.1 | 44° | 314 | RF | 0.011 | 0.033 | 0.019 | Ryan Feltner |
| 2026-09-15 | Single line drive | 1-0 | SI | 94.7 | 79.3 | 23° | 274 | LF gap | 0.714 | 0.829 | 0.674 | Ryan Feltner |
| 2026-09-15 | Out ground ball | 0-1 | CH | 85.2 | 102.3 | -20° | 2 | Infield | 0.153 | 0.153 | 0.139 | Kyle Freeland |
| 2026-09-15 | Home Run fly ball | 0-0 | FC | 83.9 | 98.5 | 32° | 386 | LF corner | 0.389 | 1.422 | 0.743 | Kyle Freeland |
| 2026-09-14 | Out ground ball | 0-0 | FF | 95.3 | 103.9 | 5° | 113 | LF gap | 0.583 | 0.664 | 0.543 | Juan Mejia |
| 2026-09-14 | Strikeout swinging | 2-2 | SI | 94.5 | — | — | — | — | — | — | 0.000 | Blas Castaño |
| 2026-09-14 | Grounded Into DP ground ball | 0-1 | SI | 91.5 | 97.5 | -13° | 11 | Infield | 0.163 | 0.169 | 0.147 | Tomoyuki Sugano |
| 2026-09-14 | Out popup | 2-2 | FF | 93.7 | 78.8 | 65° | 152 | Infield | 0.009 | 0.009 | 0.008 | Tomoyuki Sugano |
| 2026-09-13 | Out popup | 1-1 | CH | 84.1 | 80.8 | 81° | 45 | RF corner | 0.009 | 0.009 | 0.008 | Matt Wilkinson |
| 2026-09-13 | Out ground ball | 1-2 | SI | 92.9 | 89.8 | -29° | 3 | Infield | 0.049 | 0.060 | 0.049 | Logan Webb |
| 2026-09-13 | Out fly ball | 0-0 | SI | 91.9 | 90.3 | 55° | 239 | RF corner | 0.011 | 0.018 | 0.013 | Logan Webb |
| 2026-09-13 | Out popup | 0-0 | SI | 92.1 | 79.2 | 73° | 95 | Infield | 0.001 | 0.001 | 0.000 | Logan Webb |
| 2026-09-12 | Out ground ball | 0-0 | ST | 87.2 | 43.7 | 12° | 54 | Infield | 0.147 | 0.158 | 0.132 | Dylan Smith |
| 2026-09-12 | Out ground ball | 3-1 | SI | 94.2 | 66.5 | 9° | 97 | LF corner | 0.171 | 0.200 | 0.154 | Joel Kuhnel |
| 2026-09-12 | Force Out ground ball | 0-0 | CH | 85.6 | 93.7 | -18° | 7 | Infield | 0.147 | 0.153 | 0.132 | Cesar Perdomo |
| 2026-09-12 | Strikeout looking | 3-2 | CH | 87.9 | — | — | — | — | — | — | 0.000 | Cesar Perdomo |
| 2026-09-12 | Single line drive | 0-1 | FF | 93.2 | 104.0 | 11° | 230 | RF | 0.929 | 1.174 | 0.911 | Cesar Perdomo |
| 2026-09-11 | Out ground ball | 0-1 | FF | 94.5 | 91.3 | -32° | 4 | Infield | 0.045 | 0.054 | 0.040 | Yunior Marte |
| 2026-09-11 | Walk | 3-0 | FF | 91.9 | — | — | — | — | — | — | 0.699 | Yunior Marte |
| 2026-09-11 | Strikeout swinging | 2-2 | FF | 97.8 | — | — | — | — | — | — | 0.000 | Anthony Molina |
| 2026-09-09 | Out ground ball | 1-1 | SI | 97.7 | 100.2 | 3° | 96 | Infield | 0.540 | 0.605 | 0.501 | Eddy Yean |
| 2026-09-09 | Walk | 3-2 | FF | 99.1 | — | — | — | — | — | — | 0.699 | Luis Perales |
| 2026-09-09 | Out popup | 3-1 | FF | 92.1 | 78.7 | 60° | 175 | CF | 0.020 | 0.025 | 0.019 | Brad Lord |
| 2026-09-09 | Single line drive | 2-2 | CH | 86.1 | 76.0 | 22° | 241 | LF | 0.974 | 1.045 | 0.890 | Jackson Kent |
| 2026-09-08 | Single fly ball | 1-0 | FF | 97.9 | 72.0 | 40° | 234 | RF gap | 0.343 | 0.385 | 0.309 | Erik Tolman |
| 2026-09-07 | Hit By Pitch | 0-0 | ST | 83.5 | — | — | — | — | — | — | 0.729 | Jack Sinclair |
| 2026-09-07 | Out fly ball | 2-2 | SI | 92.0 | 96.6 | 27° | 332 | RF | 0.323 | 0.871 | 0.494 | Jake Irvin |
| 2026-09-07 | Out popup | 3-2 | FC | 89.8 | 79.9 | 55° | 198 | LF | 0.031 | 0.031 | 0.028 | Jake Irvin |
| 2026-09-07 | Strikeout swinging | 1-2 | FF | 92.9 | — | — | — | — | — | — | 0.000 | Jake Irvin |
| 2026-09-06 | Home Run fly ball | 2-1 | FF | 95.4 | 108.1 | 32° | 433 | LF gap | 1.000 | 4.000 | 2.000 | Gerrit Cole |
| 2026-09-05 | Strikeout swinging | 0-2 | ST | 81.9 | — | — | — | — | — | — | 0.000 | John Schreiber |
| 2026-09-05 | Out fly ball | 0-0 | FC | 89.1 | 101.8 | 24° | 366 | RF gap | 0.623 | 1.850 | 1.020 | Michael Fulmer |
| 2026-09-05 | Out popup | 2-2 | CH | 84.6 | 70.9 | 81° | 8 | RF corner | 0.006 | 0.008 | 0.007 | Carlos Rodón |
| 2026-09-04 | Home Run fly ball | 0-0 | SI | 94.3 | 104.6 | 25° | 394 | LF | 0.894 | 3.335 | 1.739 | Paul Blackburn |
| 2026-09-04 | Out fly ball | 1-2 | SI | 93.9 | 71.3 | 40° | 221 | RF | 0.431 | 0.504 | 0.405 | Will Warren |
| 2026-09-04 | Out fly ball | 0-2 | FF | 94.2 | 92.8 | 32° | 356 | LF gap | 0.097 | 0.322 | 0.178 | Max Fried |
| 2026-09-04 | Single ground ball | 0-1 | CU | 74.0 | 74.8 | 11° | 113 | LF | 0.343 | 0.383 | 0.323 | Max Fried |
| 2026-09-02 | Out popup | 1-0 | FF | 95.1 | 80.8 | 77° | 45 | Infield | 0.006 | 0.006 | 0.005 | Emilio Pagán |
| 2026-09-02 | Out fly ball | 2-2 | CU | 87.4 | 81.1 | 41° | 281 | CF | 0.020 | 0.024 | 0.018 | Pierce Johnson |
| 2026-09-02 | Strikeout swinging | 3-2 | FC | 91.5 | — | — | — | — | — | — | 0.000 | Brandon Williamson |
| 2026-09-02 | Strikeout swinging | 3-2 | FC | 90.3 | — | — | — | — | — | — | 0.000 | Brandon Williamson |
| 2026-09-01 | Strikeout swinging | 0-2 | FF | 96.4 | — | — | — | — | — | — | 0.000 | Brock Burke |
| 2026-08-31 | Out fly ball | 3-2 | ST | 81.7 | 88.4 | 24° | 321 | LF | 0.163 | 0.245 | 0.173 | Julian Garcia |
| 2026-08-31 | Strikeout looking | 2-2 | SI | 91.5 | — | — | — | — | — | — | 0.000 | Brady Singer |
| 2026-08-29 | Walk | 3-0 | SI | 90.9 | — | — | — | — | — | — | 0.698 | Kevin Kelly |
| 2026-08-29 | Out ground ball | 1-1 | FC | 88.4 | 65.0 | 9° | 93 | Infield | 0.198 | 0.227 | 0.190 | Nick Martinez |
| 2026-08-29 | Out ground ball | 2-2 | FC | 90.5 | 77.2 | -35° | 3 | Infield | 0.043 | 0.043 | 0.039 | Nick Martinez |
| 2026-08-29 | Strikeout looking | 1-2 | CH | 77.5 | — | — | — | — | — | — | 0.000 | Nick Martinez |
| 2026-08-25 | Out popup | 0-2 | FC | 99.7 | 88.1 | 77° | 47 | Infield | 0.009 | 0.012 | 0.009 | Camilo Doval |
| 2026-08-25 | Strikeout swinging | 3-2 | SI | 98.6 | — | — | — | — | — | — | 0.000 | Paul Skenes |
| 2026-08-24 | Strikeout swinging | 2-2 | ST | 85.4 | — | — | — | — | — | — | 0.000 | Yohan Ramírez |
| 2026-08-24 | Grounded Into DP ground ball | 1-2 | SI | 99.5 | 104.9 | -2° | 40 | Infield | 0.437 | 0.470 | 0.403 | Mason Montgomery |
| 2026-08-23 | Walk | 3-2 | FC | 94.0 | — | — | — | — | — | — | 0.698 | Kody Funderburk |
| 2026-08-22 | Single ground ball | 1-2 | CU | 83.5 | 94.7 | -13° | 11 | Infield | 0.171 | 0.182 | 0.154 | Tommy Nance |
| 2026-08-22 | Out ground ball | 1-0 | CH | 87.3 | 79.8 | 10° | 120 | LF | 0.366 | 0.389 | 0.329 | A.J. Minter |
| 2026-08-19 | Walk | 3-2 | FF | 95.5 | — | — | — | — | — | — | 0.698 | Kodai Senga |
| 2026-08-19 | Out ground ball | 0-1 | FF | 92.9 | 66.6 | -44° | 3 | Infield | 0.163 | 0.163 | 0.147 | Nate Lavender |
| 2026-08-19 | Strikeout swinging | 0-2 | FF | 95.7 | — | — | — | — | — | — | 0.000 | Robert Stock |
| 2026-08-19 | Walk | 3-2 | FF | 94.1 | — | — | — | — | — | — | 0.698 | Robert Stock |
| 2026-08-17 | Out popup | 0-0 | FF | 92.4 | 89.3 | 67° | 129 | Infield | 0.006 | 0.006 | 0.005 | Nate Lavender |
| 2026-08-17 | Out popup | 3-2 | SI | 94.7 | 61.6 | 56° | 142 | Infield | 0.009 | 0.009 | 0.008 | Nolan McLean |
| 2026-08-17 | Out line drive | 1-1 | SI | 94.4 | 86.3 | 27° | 329 | LF | 0.069 | 0.127 | 0.079 | Nolan McLean |
| 2026-08-17 | Walk | 3-2 | FC | 93.5 | — | — | — | — | — | — | 0.698 | Nolan McLean |