Mithrandir Metrics
Player Pittsburgh Pirates Refreshed Jul 18 06:00 AM ET
Player profile / Pittsburgh Pirates

Ryan O'Hearn

RF · Bats/Throws L/L · 6' 2", 220 lb · Age 32

Cards
4
Modules
1
Live Δ
yes
Club Pittsburgh Pirates Position RF Roster Active Status Healthy / active roster
Traditional line

Season by season

PARHHRSBAVGOBPSLGOPS
202449460117153.264.334.427.761
202554467133173.281.366.437.803
20263394988161.288.351.487.838
9 Seasons281632364810012.256.325.429.754
At a glance

Season percentile report

The headline weighs outcome stats (xwOBA, barrels); each bar averages its full strip group below. 100 = best in MLB.

2026-07-18
72
Offense
percentile
Offense9 metrics
63
Defense4 metrics
31
Speed2 metrics
17
Plate skills10 metrics
38
Rolling projection

Preseason / current pace / Bayesian update

Rolling bands shrink current-season signal toward the preseason prior until the sample earns more weight.

2026-07-18
xwOBA preseason0.345
xwOBA current pace0.333
xwOBA rolling p500.338
Observed weight62%
xwOBA
0.314 0.325 0.338 0.350 0.362
wOBA
0.343 0.358 0.375 0.393 0.408
ISO
0.156 0.170 0.185 0.200 0.213
K%
19.1% 20.2% 21.4% 22.6% 23.7%
Live percentile strip

Current traits vs projection tick

100th = best in MLB.

2026-07-18
Hitting · percentile strip
Barrel%6.1%
67 +19 vs proj
Exit velocity89.9
72
Hard-hit%44.9%
76
xBA0.346
76
xSLG0.567
69
xwOBA0.333
73
BB%7.8%
39
Bat speed69.0
40
K%21.7%
55
Defense · percentile strip
Arm Runs-1.1 · RF
18
Arm Strength84.8 · RF
3
Outs Above Avg1.0 · RF
80
Range Runs-2.3 · RF
25
Baserunning · percentile strip
Base Running Runs-3.1 · RF
2
Sprint Speed26.7 · RF
32
Mithrandir+

Plate skills: swing decisions and pitch-type resistance

Our research metrics for how this hitter controls the strike zone and handles each pitch family.

2026-07-18
Avoids Bad ChasesST 65.7% · rebadged research
51
Avoids Bad TakesHPT 29.2% · rebadged research
16
Correct Decisions63.5% · rebadged research
25
SEAGER+ Plate Discipline97
32
Resists Breaking - horizontalwOBA 0.297 · borderline
30
Resists Breaking - verticalwOBA 0.247 · insufficient sample
99
Resists ChangeupwOBA 0.278 · validated thin sample
57
Resists Cutters + splitterswOBA 0.328 · insufficient sample
60
Resists FastballwOBA 0.401 · validated
2
Resists SinkerwOBA 0.390 · validated
6
Rolling form chart

xwOBA snapshot line

Live snapshot series; true 50/100 PA windows require PA-level logs

12 snapshots
Mithrandir Metrics ROLLING XWOBA LINE Parameterized Mithrandir chart rendered as SVG for templates and exports. season=2026 Rolling xwOBA O'Hearn, Ryan · Live snapshot series; true 50/100 PA windows require PA-level logs LG AVG 0.308 0.333 2026-07-07: 0.3272026-07-08: 0.3252026-07-09: 0.3312026-07-10: 0.3302026-07-11: 0.3302026-07-12: 0.3302026-07-13: 0.3292026-07-14: 0.3332026-07-15: 0.3332026-07-16: 0.3332026-07-17: 0.3332026-07-18: 0.333 2026-07-07 2026-07-18 xwOBA MITHRANDIR · CHARTS
Spray profile

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.

Mithrandir Metrics SPRAY CHART Parameterized Mithrandir chart rendered as SVG for templates and exports. season=2026 Spray Chart O'Hearn, Ryan · Statcast batted-ball landing coordinates Left field third: 15% of plotted batted ballsPull 15%Center field third: 69% of plotted batted ballsCenter 69%Right field third: 16% of plotted batted ballsOppo 16% LF 325 CF 399 RF 320 2026-03-15 · field out · FF · ground_ball · EV 90.2 / LA 8.02026-03-17 · single · FF · line_drive · EV 104.3 / LA 9.02026-03-17 · field out · SL · line_drive · EV 88.4 / LA 25.02026-03-19 · field out · SI · ground_ball · EV 85.7 / LA -51.02026-03-19 · field out · SI · fly_ball · EV 105.9 / LA 25.02026-03-20 · field out · SI · ground_ball · EV 88.1 / LA -29.02026-03-20 · field out · SI · ground_ball · EV 101.4 / LA -12.02026-03-20 · field out · FF · fly_ball · EV 103.8 / LA 23.02026-03-22 · field out · FF · popup · EV 84.3 / LA 55.02026-03-22 · field out · FF · fly_ball · EV 87.5 / LA 56.02026-03-22 · field out · FF · fly_ball · EV 97.7 / LA 20.02026-03-23 · grounded into double play · FS · ground_ball · EV 68.2 / LA -6.02026-03-23 · field out · FF · line_drive · EV 102.7 / LA 21.02026-03-26 · field out · FF · ground_ball · EV 93.4 / LA -14.02026-03-26 · single · SI · ground_ball · EV 104.2 / LA 8.02026-03-26 · home run · FF · fly_ball · EV 97.3 / LA 36.02026-03-28 · field out · SL · ground_ball · EV 65.1 / LA -11.02026-03-28 · field out · CU · fly_ball · EV 95.6 / LA 35.02026-03-28 · single · SI · ground_ball · EV 95.7 / LA 5.02026-03-28 · field out · CH · ground_ball · EV 75.7 / LA -40.02026-03-28 · field out · ST · ground_ball · EV 90.8 / LA 0.02026-03-29 · single · ST · fly_ball · EV 74.4 / LA 31.02026-03-29 · single · SI · line_drive · EV 105.9 / LA 9.02026-03-29 · single · ST · ground_ball · EV 91.6 / LA 8.02026-03-30 · single · CH · line_drive · EV 71.1 / LA 22.02026-03-30 · field out · CH · ground_ball · EV 63.3 / LA -10.02026-03-31 · grounded into double play · SI · ground_ball · EV 78.0 / LA -2.02026-03-31 · home run · FF · fly_ball · EV 103.5 / LA 28.02026-03-31 · field out · ST · line_drive · EV 66.2 / LA 24.02026-04-03 · sac fly · ST · line_drive · EV 93.9 / LA 22.02026-04-03 · field out · FF · ground_ball · EV 82.8 / LA 5.02026-04-04 · single · FF · line_drive · EV 94.7 / LA 14.02026-04-04 · field out · KC · fly_ball · EV 97.5 / LA 47.02026-04-04 · field out · ST · ground_ball · EV 61.7 / LA -14.02026-04-05 · home run · FF · fly_ball · EV 103.8 / LA 32.02026-04-05 · double · SI · line_drive · EV 100.6 / LA 20.02026-04-05 · field out · FF · ground_ball · EV 81.9 / LA -5.02026-04-05 · field out · SL · ground_ball · EV 70.7 / LA -8.02026-04-06 · grounded into double play · SI · ground_ball · EV 93.6 / LA -24.02026-04-06 · double · FF · fly_ball · EV 97.0 / LA 24.02026-04-07 · field out · FF · fly_ball · EV 97.4 / LA 35.02026-04-07 · single · FF · ground_ball · EV 82.2 / LA 1.02026-04-07 · single · SI · line_drive · EV 96.2 / LA 12.02026-04-08 · field out · SI · ground_ball · EV 92.3 / LA 1.02026-04-08 · grounded into double play · SL · ground_ball · EV 94.6 / LA -4.02026-04-08 · field out · SI · fly_ball · EV 97.0 / LA 39.02026-04-08 · field out · FF · line_drive · EV 95.5 / LA 18.02026-04-10 · field out · FF · fly_ball · EV 106.7 / LA 22.02026-04-10 · single · SL · line_drive · EV 101.9 / LA 11.02026-04-10 · field out · FF · fly_ball · EV 79.4 / LA 44.02026-04-10 · field out · FF · ground_ball · EV 95.8 / LA 6.02026-04-11 · field out · FF · fly_ball · EV 88.8 / LA 30.02026-04-11 · field out · CH · line_drive · EV 105.9 / LA 18.02026-04-11 · field out · FF · fly_ball · EV 92.2 / LA 55.02026-04-11 · sac fly · CU · line_drive · EV 101.2 / LA 22.02026-04-12 · single · CH · fly_ball · EV 67.7 / LA 46.02026-04-12 · field out · CU · ground_ball · EV 63.0 / LA -31.02026-04-12 · single · FF · ground_ball · EV 108.1 / LA 3.02026-04-13 · double · SI · fly_ball · EV 101.7 / LA 28.02026-04-13 · field out · CH · ground_ball · EV 92.8 / LA -1.02026-04-14 · grounded into double play · SI · ground_ball · EV 92.3 / LA -13.02026-04-14 · field out · FF · line_drive · EV 99.7 / LA 20.02026-04-14 · field out · SL · ground_ball · EV 67.7 / LA 1.02026-04-15 · single · FF · line_drive · EV 67.6 / LA 24.02026-04-15 · single · FC · line_drive · EV 97.5 / LA 11.02026-04-15 · single · FF · ground_ball · EV 104.3 / LA 6.02026-04-17 · field out · SI · ground_ball · EV 87.0 / LA -24.02026-04-17 · field out · FC · fly_ball · EV 94.9 / LA 39.02026-04-17 · field out · CH · ground_ball · EV 103.3 / LA -21.02026-04-18 · home run · FC · fly_ball · EV 106.5 / LA 37.02026-04-18 · single · FF · ground_ball · EV 80.7 / LA -27.02026-04-21 · single · SI · ground_ball · EV 104.9 / LA 1.02026-04-21 · field out · SI · fly_ball · EV 98.7 / LA 40.02026-04-21 · field out · FF · line_drive · EV 105.5 / LA 16.02026-04-22 · field out · FF · ground_ball · EV 64.6 / LA -2.02026-04-22 · single · FF · line_drive · EV 96.8 / LA 7.02026-04-22 · grounded into double play · FC · ground_ball · EV 82.0 / LA -12.02026-04-23 · field out · CH · ground_ball · EV 92.3 / LA 2.02026-04-23 · single · SL · line_drive · EV 103.7 / LA 13.02026-04-24 · field out · FF · popup · EV 82.3 / LA 86.02026-04-24 · double · SI · line_drive · EV 107.0 / LA 14.02026-04-24 · single · FF · ground_ball · EV 99.3 / LA -4.02026-04-24 · field out · FF · fly_ball · EV 90.2 / LA 34.02026-04-25 · single · FF · line_drive · EV 100.3 / LA 13.02026-04-25 · field out · SI · ground_ball · EV 65.9 / LA -66.02026-04-26 · grounded into double play · FF · ground_ball · EV 86.3 / LA -23.02026-04-26 · field out · KC · fly_ball · EV 98.4 / LA 55.02026-04-26 · field out · SL · line_drive · EV 98.0 / LA 12.02026-04-27 · field out · FF · ground_ball · EV 100.6 / LA -12.02026-04-27 · single · FF · line_drive · EV 102.6 / LA 16.02026-04-28 · single · ST · line_drive · EV 102.5 / LA 13.02026-04-28 · home run · SI · fly_ball · EV 104.6 / LA 26.02026-04-28 · grounded into double play · FF · ground_ball · EV 102.6 / LA -22.02026-04-29 · field out · SL · ground_ball · EV 91.7 / LA -8.02026-04-29 · field error · SI · ground_ball · EV 93.2 / LA -1.02026-04-29 · field out · FF · fly_ball · EV 83.7 / LA 30.02026-04-29 · single · SI · line_drive · EV 66.1 / LA 20.02026-04-30 · field out · FF · popup · EV 70.3 / LA 56.02026-04-30 · field out · ST · ground_ball · EV 60.2 / LA -16.02026-04-30 · field out · SI · line_drive · EV 92.3 / LA 24.02026-05-01 · field out · SI · ground_ball · EV 96.6 / LA -11.02026-05-01 · single · CU · line_drive · EV 97.1 / LA 17.02026-05-01 · single · SI · line_drive · EV 105.2 / LA 13.02026-05-01 · field out · SL · ground_ball · EV 96.2 / LA -17.02026-05-01 · field out · SL · line_drive · EV 92.2 / LA 8.02026-05-02 · double · SL · ground_ball · EV 100.5 / LA 6.02026-05-02 · single · SI · fly_ball · EV 94.5 / LA 28.02026-05-03 · grounded into double play · CH · ground_ball · EV 68.2 / LA -22.02026-05-05 · field out · CU · fly_ball · EV 83.2 / LA 57.02026-05-05 · field out · SI · ground_ball · EV 93.4 / LA 1.02026-05-06 · field out · FF · fly_ball · EV 95.0 / LA 54.02026-05-06 · field out · FF · fly_ball · EV 77.3 / LA 35.02026-05-06 · field out · FF · ground_ball · EV 90.1 / LA -7.02026-05-07 · single · SL · ground_ball · EV 90.9 / LA 5.02026-05-07 · field out · FF · fly_ball · EV 76.1 / LA 36.02026-05-08 · field out · FF · ground_ball · EV 91.9 / LA 0.02026-05-09 · field out · FC · fly_ball · EV 91.6 / LA 37.02026-05-09 · field out · ST · fly_ball · EV 86.9 / LA 46.02026-05-09 · single · SI · line_drive · EV 104.6 / LA 12.02026-05-09 · single · CH · ground_ball · EV 87.0 / LA -25.02026-05-09 · grounded into double play · EP · ground_ball · EV 87.3 / LA -4.02026-05-10 · single · FF · ground_ball · EV 94.7 / LA 1.02026-05-10 · field error · FF · ground_ball · EV 95.9 / LA 3.02026-05-10 · field out · SI · ground_ball · EV 74.6 / LA -15.02026-05-10 · field out · SI · ground_ball · EV 101.6 / LA -2.02026-05-10 · field out · FS · fly_ball · EV 81.9 / LA 37.02026-05-12 · force out · CU · ground_ball · EV 83.0 / LA -27.02026-05-12 · field out · FF · popup · EV 71.0 / LA 63.02026-05-13 · grounded into double play · SI · ground_ball · EV 102.6 / LA 5.02026-05-13 · field out · FF · fly_ball · EV 88.9 / LA 56.02026-05-13 · home run · FF · fly_ball · EV 100.4 / LA 28.02026-05-13 · double · SV · line_drive · EV 95.6 / LA 11.02026-05-14 · home run · FF · fly_ball · EV 104.1 / LA 29.02026-05-14 · field out · SL · fly_ball · EV 97.5 / LA 33.02026-05-14 · single · SL · ground_ball · EV 97.4 / LA -3.02026-05-14 · single · SI · line_drive · EV 94.9 / LA 9.02026-05-15 · field out · FF · fly_ball · EV 98.3 / LA 52.02026-05-15 · field out · SI · ground_ball · EV 80.6 / LA -17.02026-05-15 · field out · FC · ground_ball · EV 56.3 / LA 4.02026-05-16 · field out · SI · fly_ball · EV 86.3 / LA 36.02026-05-31 · single · FF · line_drive · EV 91.8 / LA 15.02026-05-31 · field out · FF · ground_ball · EV 72.4 / LA -56.02026-05-31 · home run · SL · fly_ball · EV 98.6 / LA 26.02026-06-04 · home run · FF · fly_ball · EV 94.0 / LA 31.02026-06-04 · field out · FF · line_drive · EV 88.8 / LA 26.02026-06-04 · single · FF · ground_ball · EV 97.3 / LA 3.02026-06-05 · grounded into double play · CH · ground_ball · EV 81.9 / LA -2.02026-06-07 · field out · SI · ground_ball · EV 96.6 / LA 2.02026-06-07 · field out · FC · popup · EV 63.6 / LA 64.02026-06-07 · field out · SL · ground_ball · EV 82.6 / LA -39.02026-06-15 · field out · CU · fly_ball · EV 100.8 / LA 38.02026-06-15 · single · SI · line_drive · EV 101.8 / LA 12.02026-06-15 · field out · CH · ground_ball · EV 97.2 / LA -24.02026-06-20 · field out · CU · ground_ball · EV 34.7 / LA -55.02026-06-20 · field out · CU · ground_ball · EV 83.7 / LA -13.02026-06-24 · double · SL · line_drive · EV 101.8 / LA 18.02026-06-24 · double · FF · line_drive · EV 83.0 / LA 16.02026-06-24 · single · FF · line_drive · EV 71.8 / LA 22.02026-06-24 · double · FF · fly_ball · EV 78.3 / LA 48.02026-06-24 · field out · SL · popup · EV 85.7 / LA 73.02026-06-26 · field out · FF · ground_ball · EV 98.2 / LA -16.02026-07-01 · field out · FF · popup · EV 90.4 / LA 68.02026-07-01 · field out · FS · ground_ball · EV 99.9 / LA 7.02026-07-01 · single · FF · ground_ball · EV 103.8 / LA 2.0 1B2B3BHROut Zone shading = batted-ball density by field third · hover dots for date, pitch, EV, and LA. MITHRANDIR · CHARTS
Zone profile

Aggregate zone heatmap

Aggregate zone metrics from seasonal Statcast leaderboards.

Mithrandir Metrics ZONE HEATMAP Parameterized Mithrandir chart rendered as SVG for templates and exports. season=2026 Swing Zone Profile O'Hearn, Ryan · Aggregate zone metrics; not pitch-by-pitch locations Zone: 48%48%Chase: 32%32%Whiff: 19%19%Zone contact: 90%90%Contact: 81%81%Hard hit: 45%45% Dashed border = aggregate mixed-batter zone proxy MITHRANDIR · CHARTS
Bat tracking

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.

Watch the swing in 3D →

2026
Mithrandir Metrics BAT SPEED DISTRIBUTION Parameterized Mithrandir chart rendered as SVG for templates and exports. Bat Speed O'Hearn, Ryan · aggregate bat speed marker 60 mph 85 mph Avg bat speed 70.7 mph Hard swing rate 9% Whiff / swing 14% MITHRANDIR · CHARTS
Reference layer

Current snapshot

Age32
Height6' 2"
Weight220 lb
Debut2018-07-31
Live layer

Delta / regression

xwOBA Δ-0.008
wOBA Δ+0.035

negative regression

Regression watch

Running hot. Expect some cooling.

-1.5σ gap
wOBA (actual)0.375
xwOBA (deserved)0.333

O'Hearn’s wOBA sits at 0.375, but the quality of contact underneath says it should be 0.333 — a gap of 0.042, -1.5 standard deviations from the MLB norm over 359 PA. The results have outrun the underlying process; as the sample grows, expect the numbers to drift back toward the deserved level.

Comp Engine · 2026 profile shape

Closest profiles

Full constellation →
PlayerSimilarityAgrees onOpen
Grissom, Vaughn LAA · R 0.80 Sprint speedWalk rate Player · Projection
Pages, Andy LAD · R 0.74 xwOBA on contactHard-hit rate Player · Projection
Steer, Spencer CIN · R 0.74 Avg exit velocityFly-ball rate Player · Projection
Jung, Josh TEX · R 0.73 Bat speedxwOBA on contact Player · Projection

Profile-shape similarity, not results: six weighted feature groups standardized within this season's qualified hitters.

Mithrandir coverage

Module shelf

ModuleCardsLatestSignal
Hitting42026-07-07Impact contact was the main driver
Projection links / recent games

Available detail

Hitter Projections 20260.341 xwOBA | 17 HRProjection
2026-04-17 vs TB0 HR | 0 RBI / 4 Ch | 0 E0-4 | K
2026-04-15 vs WSH0 HR | 0 RBI / 0 Ch | 0 E3-4 | K, R, SB
2026-04-14 vs WSH0 HR | 0 RBI / 0 Ch | 0 E0-3 | BB
2026-04-13 vs WSH0 HR | 1 RBI / 1 Ch | 0 E1-5 | 2B, 3 K, RBI
2026-04-12 @ CHC0 HR | 0 RBI / 5 Ch | 0 E2-4 | K