O'Hearn, Ryan
Veteran bat leaning on contact and approach
Season percentile report
The headline weighs outcome stats (xwOBA, barrels); each bar averages its full strip group below. 100 = best in MLB.
percentile
Preseason / current pace / Bayesian update
Rolling bands shrink current-season signal toward the preseason prior until the sample earns more weight.
| xwOBA preseason | 0.345 |
| xwOBA current pace | 0.333 |
| xwOBA rolling p50 | 0.338 |
| Observed weight | 62% |
Actual percentile with projection tick
100th = best in MLB.
SEAGER+ and decision components
SEAGER+ is the promoted plate-discipline index; component rows marked rebadged research are visible diagnostic context, not standalone promoted metrics.
xwOBA snapshot line
Live snapshot series; true 50/100 PA windows require PA-level logs
Field-coordinate spray profile
164 Statcast batted-ball coordinates from the pitch-event feed (2026). Direction profile remains as the v1 context layer when coordinate density is limited.
Swing path, attack angle, bat speed
Aggregate Savant bat-tracking metrics; not per-swing motion capture. The full swing, with the recommended path overlaid, lives in the 3D Swing Simulator.
Aggregate zone heatmap
Aggregate zone metrics from seasonal Statcast leaderboards.
Current-season signal
| xwOBA Δ | -0.008 |
| wOBA Δ | +0.035 |
| Sample | 359 PA |
negative regression
Point projection and range
| Metric | Point | Range | Half-width |
|---|---|---|---|
| Plate Appearances | 539 | -- | -- |
| Home Runs | 17 | -- | -- |
| Stolen Bases | 0 | -- | -- |
| xwOBA | 0.341 | 0.311 to 0.381 | +/- 0.035 |
| ISO | 0.164 | 0.123 to 0.245 | +/- 0.061 |
| Barrel% | 5.0% | 3.3% to 6.8% | +/- 1.8% |
| Hard-Hit% | 42.4% | 38.2% to 49.3% | +/- 5.5% |
| K% | 20.2% | 16.0% to 24.2% | +/- 4.1% |
| BB% | 8.8% | 7.4% to 11.6% | +/- 2.1% |
| BABIP | 0.307 | 0.275 to 0.354 | +/- 0.039 |
377 career PA
| xwOBA | 0.248 |
| K% | 18.9% |
| BB% | 6.4% |
| Barrel | 3.5% |
2252 career PA
| xwOBA | 0.290 |
| K% | 15.4% |
| BB% | 7.7% |
| Barrel | 4.7% |