Current snapshot
| Age | 24 |
| Height | 6' 0" |
| Weight | 219 lb |
| Debut | 2026-06-26 |
C · Bats/Throws L/R · 6' 0", 219 lb · Age 24
| PA | R | H | HR | SB | AVG | OBP | SLG | OPS | |
|---|---|---|---|---|---|---|---|---|---|
| 2026 | 166 | 9 | 33 | 1 | 1 | .229 | .315 | .292 | .607 |
| 1 Seasons | 166 | 9 | 33 | 1 | 1 | .229 | .315 | .292 | .607 |
The headline weighs outcome stats (xwOBA, barrels); each bar averages its full strip group below. 100 = best in MLB.
Rolling bands shrink current-season signal toward the preseason prior until the sample earns more weight.
Rolling player projection appears after current-season Statcast and projection joins refresh.
100th = best in MLB.
Our research metrics for how this hitter controls the strike zone and handles each pitch family.
Live snapshot series; true 50/100 PA windows require PA-level logs
61 Statcast batted-ball coordinates from the pitch-event feed (2026). Direction profile remains as the v1 context layer when coordinate density is limited.
Aggregate zone metrics from seasonal Statcast leaderboards.
| Age | 24 |
| Height | 6' 0" |
| Weight | 219 lb |
| Debut | 2026-06-26 |
| xwOBA Δ | -- |
| wOBA Δ | -- |
positive regression
Cavanaugh’s wOBA sits at 0.289, but the quality of contact underneath says it should be 0.296 — a gap of 0.007, 0.2 standard deviations from the MLB norm over 167 PA. The results have been worse than the process deserves; as the sample grows, expect the numbers to climb back toward the underlying level.
| Module | Cards | Latest | Signal |
|---|---|---|---|
| Hitting | 1 | 2026-08-25 | Impact contact was the main driver |
| Fielding | 8 | 2026-09-22 | 1 chances | 0 difficult plays | Run Exp -0.478 |
| 2026-08-15 vs COL0 HR | 0 RBI / 11 Ch | 0 E | 0-3 | BB, R |