Kwan, Steven
Everyday offensive profile with usable floor
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.320 |
| xwOBA current pace | 0.309 |
| xwOBA rolling p50 | 0.313 |
| Observed weight | 63% |
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
207 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.015 |
| wOBA Δ | -0.001 |
| Sample | 377 PA |
negative regression
Point projection and range
| Metric | Point | Range | Half-width |
|---|---|---|---|
| Plate Appearances | 628 | -- | -- |
| Home Runs | 11 | -- | -- |
| Stolen Bases | 0 | -- | -- |
| xwOBA | 0.323 | 0.296 to 0.363 | +/- 0.034 |
| ISO | 0.117 | 0.080 to 0.207 | +/- 0.063 |
| Barrel% | 1.6% | 0.7% to 3.8% | +/- 1.5% |
| Hard-Hit% | 21.9% | 18.6% to 29.5% | +/- 5.5% |
| K% | 8.6% | 7.0% to 15.6% | +/- 4.3% |
| BB% | 8.2% | 5.9% to 11.4% | +/- 2.8% |
| BABIP | 0.289 | 0.264 to 0.343 | +/- 0.039 |
832 career PA
| xwOBA | 0.268 |
| K% | 9.1% |
| BB% | 6.8% |
| Barrel | 1.1% |
1989 career PA
| xwOBA | 0.288 |
| K% | 7.9% |
| BB% | 8.1% |
| Barrel | 1.6% |