Mithrandir Metrics
Player Pittsburgh Pirates Refreshed Sep 2 06:00 AM ET
Player profile / Pittsburgh Pirates

Ryan O'Hearn

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

Cards
9
Modules
2
Live Δ
yes
Club Pittsburgh Pirates Position RF Roster Current MLB team Status IL-10
Traditional line

Season by season

PARHHRSBAVGOBPSLGOPS
202449460117153.264.334.427.761
202554467133173.281.366.437.803
20263985497171.270.334.454.788
9 Seasons287532865710112.254.323.426.749
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-09-02
67
Offense
percentile
Offense9 metrics
60
Defense4 metrics
31
Speed1 metrics
35
Plate skills10 metrics
42
Rolling projection

Preseason / current pace / Bayesian update

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

Pending

Rolling player projection appears after current-season Statcast and projection joins refresh.

Live percentile strip

Current traits vs projection tick

100th = best in MLB.

2026-09-02
Hitting · percentile strip
Barrel%5.5%
60
Exit velocity89.5
71
Hard-hit%43.6%
74
xBA0.333
68
xSLG0.539
61
xwOBA0.321
70
BB%7.9%
42
Bat speed69.0
42
K%21.5%
57
Defense · percentile strip
Arm Runs-1.2 · RF
22
Arm Strength84.8 · RF
2
Outs Above Avg1.0 · RF
80
Range Runs-3.1 · RF
18
Baserunning · percentile strip
Sprint Speed26.9 · RF
35
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-09-02
Avoids Bad ChasesST 65.9% · rebadged research
54
Avoids Bad TakesHPT 28.6% · rebadged research
20
Correct Decisions63.8% · rebadged research
26
SEAGER+ Plate Discipline98
36
Resists Breaking - horizontalwOBA 0.302 · borderline
25
Resists Breaking - verticalwOBA 0.246 · insufficient sample
99
Resists ChangeupwOBA 0.270 · validated thin sample
75
Resists Cutters + splitterswOBA 0.320 · insufficient sample
75
Resists FastballwOBA 0.399 · validated
2
Resists SinkerwOBA 0.388 · validated
5
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.303 0.321 2026-08-22: 0.3212026-08-23: 0.3212026-08-24: 0.3212026-08-25: 0.3212026-08-26: 0.3212026-08-27: 0.3212026-08-28: 0.3212026-08-29: 0.3212026-08-30: 0.3212026-08-31: 0.3212026-09-01: 0.3212026-09-02: 0.321 2026-08-22 2026-09-02 xwOBA MITHRANDIR · CHARTS
Spray profile

Field-coordinate spray profile

172 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 · fly_ball · EV 105.9 / LA 25.02026-03-19 · field out · SI · ground_ball · EV 85.7 / LA -51.02026-03-20 · field out · SI · ground_ball · EV 88.1 / LA -29.02026-03-20 · field out · FF · fly_ball · EV 103.8 / LA 23.02026-03-20 · field out · SI · ground_ball · EV 101.4 / LA -12.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 · field out · FF · line_drive · EV 102.7 / LA 21.02026-03-23 · grounded into double play · FS · ground_ball · EV 68.2 / LA -6.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-26 · field out · FF · ground_ball · EV 93.4 / LA -14.02026-03-28 · field out · ST · ground_ball · EV 90.8 / LA 0.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 · SL · ground_ball · EV 65.1 / LA -11.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-29 · single · ST · fly_ball · EV 74.4 / LA 31.02026-03-30 · field out · CH · ground_ball · EV 63.3 / LA -10.02026-03-30 · single · CH · line_drive · EV 71.1 / LA 22.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 · field out · SL · ground_ball · EV 70.7 / LA -8.02026-04-05 · field out · FF · ground_ball · EV 81.9 / LA -5.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-06 · double · FF · fly_ball · EV 97.0 / LA 24.02026-04-06 · grounded into double play · SI · ground_ball · EV 93.6 / 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 · fly_ball · EV 97.0 / LA 39.02026-04-08 · grounded into double play · SL · ground_ball · EV 94.6 / LA -4.02026-04-08 · field out · FF · line_drive · EV 95.5 / LA 18.02026-04-08 · field out · SI · ground_ball · EV 92.3 / LA 1.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-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-11 · sac fly · CU · line_drive · EV 101.2 / LA 22.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 · field out · FF · fly_ball · EV 88.8 / LA 30.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 · field out · CH · ground_ball · EV 92.8 / LA -1.02026-04-13 · double · SI · fly_ball · EV 101.7 / LA 28.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 · ground_ball · EV 104.3 / LA 6.02026-04-15 · single · FC · line_drive · EV 97.5 / LA 11.02026-04-15 · single · FF · line_drive · EV 67.6 / LA 24.02026-04-17 · field out · CH · ground_ball · EV 103.3 / LA -21.02026-04-17 · field out · FC · fly_ball · EV 94.9 / LA 39.02026-04-17 · field out · SI · ground_ball · EV 87.0 / LA -24.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 · single · SL · line_drive · EV 103.7 / LA 13.02026-04-23 · field out · CH · ground_ball · EV 92.3 / LA 2.02026-04-24 · double · SI · line_drive · EV 107.0 / LA 14.02026-04-24 · field out · FF · fly_ball · EV 90.2 / LA 34.02026-04-24 · field out · FF · popup · EV 82.3 / LA 86.02026-04-24 · single · FF · ground_ball · EV 99.3 / LA -4.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 · 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-26 · grounded into double play · FF · ground_ball · EV 86.3 / LA -23.02026-04-27 · single · FF · line_drive · EV 102.6 / LA 16.02026-04-27 · field out · FF · ground_ball · EV 100.6 / LA -12.02026-04-28 · grounded into double play · FF · ground_ball · EV 102.6 / LA -22.02026-04-28 · home run · SI · fly_ball · EV 104.6 / LA 26.02026-04-28 · single · ST · line_drive · EV 102.5 / LA 13.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 · ST · ground_ball · EV 60.2 / LA -16.02026-04-30 · field out · SI · line_drive · EV 92.3 / LA 24.02026-04-30 · field out · FF · popup · EV 70.3 / LA 56.02026-05-01 · single · SI · line_drive · EV 105.2 / LA 13.02026-05-01 · field out · SL · line_drive · EV 92.2 / LA 8.02026-05-01 · single · CU · line_drive · EV 97.1 / LA 17.02026-05-01 · field out · SI · ground_ball · EV 96.6 / LA -11.02026-05-01 · field out · SL · ground_ball · EV 96.2 / LA -17.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 · SI · ground_ball · EV 93.4 / LA 1.02026-05-05 · field out · CU · fly_ball · EV 83.2 / LA 57.02026-05-06 · field out · FF · ground_ball · EV 90.1 / LA -7.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-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 · grounded into double play · EP · ground_ball · EV 87.3 / LA -4.02026-05-09 · single · CH · ground_ball · EV 87.0 / LA -25.02026-05-09 · single · SI · line_drive · EV 104.6 / LA 12.02026-05-09 · field out · ST · fly_ball · EV 86.9 / LA 46.02026-05-09 · field out · FC · fly_ball · EV 91.6 / LA 37.02026-05-10 · field out · SI · ground_ball · EV 101.6 / LA -2.02026-05-10 · field out · SI · ground_ball · EV 74.6 / LA -15.02026-05-10 · field error · FF · ground_ball · EV 95.9 / LA 3.02026-05-10 · single · FF · ground_ball · EV 94.7 / LA 1.02026-05-10 · field out · FS · fly_ball · EV 81.9 / LA 37.02026-05-12 · field out · FF · popup · EV 71.0 / LA 63.02026-05-12 · force out · CU · ground_ball · EV 83.0 / LA -27.02026-05-13 · home run · FF · fly_ball · EV 100.4 / LA 28.02026-05-13 · grounded into double play · SI · ground_ball · EV 102.6 / LA 5.02026-05-13 · double · SV · line_drive · EV 95.6 / LA 11.02026-05-13 · field out · FF · fly_ball · EV 88.9 / LA 56.02026-05-14 · home run · FF · fly_ball · EV 104.1 / LA 29.02026-05-14 · single · SI · line_drive · EV 94.9 / LA 9.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-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 · home run · SL · fly_ball · EV 98.6 / LA 26.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-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 · SL · ground_ball · EV 82.6 / LA -39.02026-06-07 · field out · FC · popup · EV 63.6 / LA 64.02026-06-15 · field out · CH · ground_ball · EV 97.2 / LA -24.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-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 · single · FF · ground_ball · EV 103.8 / LA 2.02026-07-01 · field out · FS · ground_ball · EV 99.9 / LA 7.02026-07-01 · field out · FF · popup · EV 90.4 / LA 68.02026-07-27 · field out · CH · line_drive · EV 99.9 / LA 18.02026-07-27 · field out · CH · ground_ball · EV 62.5 / LA -39.02026-07-27 · field out · CH · fly_ball · EV 93.8 / LA 43.02026-07-27 · field out · FC · popup · EV 77.0 / LA 66.02026-07-31 · field out · FF · ground_ball · EV 78.7 / LA -5.02026-07-31 · field out · FS · popup · EV 69.2 / LA 62.02026-07-31 · field out · FF · ground_ball · EV 92.2 / LA -24.02026-07-31 · single · FF · ground_ball · EV 86.8 / LA -10.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: 47%47%Chase: 31%31%Whiff: 20%20%Zone contact: 88%88%Contact: 80%80%Hard hit: 44%44% 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

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

Delta / regression

xwOBA Δ--
wOBA Δ--

negative regression

Regression watch

Running hot. Expect some cooling.

-1.2σ gap
wOBA (actual)0.353
xwOBA (deserved)0.321

O'Hearn’s wOBA sits at 0.353, but the quality of contact underneath says it should be 0.321 — a gap of 0.032, -1.2 standard deviations from the MLB norm over 419 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.79 Sprint speedSwing length Player · Projection
Tawa, Tim AZ · R 0.78 Walk rateChase rate Player · Projection
Yastrzemski, Mike ATL · L 0.77 Hard-hit rateBat speed Player · Projection
Pages, Andy LAD · R 0.76 Whiff rateSweet-spot rate Player · Projection

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

Mithrandir coverage

Module shelf

ModuleCardsLatestSignal
Hitting52026-07-26Disciplined swing decisions drove the score
Fielding42026-07-291 chances | 0 difficult plays | Run Exp -0.218
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