Brian O'Keefe

C Tacoma Rainiers
Age 34 R/R 6'0" / 210 lbs AAA K +7%HR -5% Svc 4.000 · Ctrl thru 2028
Overview
AAAROOKIEArb-2FA 2029
YearAgeLvl / TeamPAAVG/OBP/SLGHRSBwRC+WARMLE AVG/OBP/SLG
202431AAAKC280.281/.370/.55418079—.213/.275/.382
202532AAAKC162.158/.236/.27442-3—.120/.180/.207
202633AAASEA150.241/.307/.4094138—.183/.227/.303
2027PROJ10% MLB34MLBSEA13.209/.266/.33300690.0
2028PROJ6% MLB35MLBSEA4.201/.257/.3160062-0.0
Next 2 projected WAR -0.0Projected rows: MLB playing time only, park and league context applied.
ContractESTIMATED
Control thru2028Service4.000First FA2029
2027Arb-2$0.4M2028Arb-3$0.6M
Skills · percentileMiLB Statcast 2026 AAA
Chase%46
Z-Con%37
Whiff%36
K%33
BB%32
Max EV28
Career WAR0.0 WAR median (P10 -0.0 / P90 0.0, comp-based) · star 0% · didn't stick 100%
CompsDustin Garneau (age 33) · Carlos M. Rodriguez (age 34) · Mike Rivera (age 35)
2027 FULL-SEASON PROJECTIONstats below = full-season projection
showingPROJ
wRC+†69
AVG/OBP/SLG.209 / .266 / .333
PA13
HR0
K%23
BB%8
BABIP265
ISO83
MLB%10%
Value2027 · WAR
BAT: -4.7 runs (wOBA-derived runs vs avg)-5BATRUN: +0.3 runs (SB/CS + UBR baserunning)+0RUNFLD: -0.1 runs (Defensive runs vs avg)-0FLDPOS: +2.3 runs (Positional adjustment)+2POSREP: +2.8 runs (Replacement-level credit)+3REPTotal WAR: +0.00+0.0WAR
0.00.51.00.00.027282930313233343536
━ projected WAR━ paid WAR ($/8M) surplus deficit-$1M ctrl surplus
Tools · ContractCON 25 / POW 45
Toolsscout grade · Statcast %ile · 2022-2023
CONTACT25
xAVG
100.111
POWER45
Avg EV
1078.6
Bat Spd
4070.2
EYE45
scouting grade only
SPEED45
scouting grade only
Contract ESTIMATED · service-time + WAR-based estimator (needs verification)
Status   Arb-2
MLB Debut   2023
Service   4.000 yrs.days
Team Control Through   2028
First FA Year   2029
YearStatusSalary Proj WAR Value Surplus
2027Arb-2$0.4M———
2028Arb-3$0.6M———
Totals $0.0M $0.0M +$0.0M

Career Stats + Projections

Real MLB stats plus park-adjusted projections — this season (so far / rest / full), then future seasons and career totals.
basis chips: RAW = as recorded · CTX = with park/league context · A+C = actual + context combined · MLE = level/park-neutral
Methodology▸ how these numbers are built

All seasons translated to park-neutral MLB-equivalent (MLE) and combined per year. 2027 = full-season projection (no games played yet). 2028+ via Advanced Marcel + aging curve. Catcher framing: only 2027 Statcast framing is modeled (Baseball Savant server-caches the leaderboard to the current season); prior-year framing is unmodeled — projections for established framers may run 1-3 WAR low.

YearAge LvlTeam MLB% PAAB H2B3BHR BBSOHBP SBCS AVGOBPSLGOPS ISOBABIP K%BB% wOBAwRC+ BATRUNFLDPOSREP WAR
▸ Career — actual stats, one row per stint (as recorded, no adjustments)
201522 APeoria Chiefs — 143125 35805 13313 00 280362464826 184330 229 363 83 — — — — — —
201623 A+Palm Beach Cardinals — 3224 4200 850 00 167375250625 83211 1625 311 59 — — — — — —
201623 APeoria Chiefs — 420357 9225213 52787 11 258363448811 190293 1912 359 78 — — — — — —
201724 APeoria Chiefs — 411373 9720015 34891 73 260324434758 174301 228 334 59 — — — — — —
201825 A+Palm Beach Cardinals — 288243 592306 40494 00 243359412770 169280 1714 347 86 — — — — — —
201926 AASpringfield Cardinals — 346301 699013 37714 11 229322389710 159255 2111 318 51 — — — — — —
202128 AAATacoma Rainiers — 248217 557013 31720 11 253347465812 212318 2912 360 72 — — — — — —
202128 AAArkansas Travelers — 208189 547111 17592 31 286351508859 222361 288 377 83 — — — — — —
202229 AAATacoma Rainiers — 352316 8019213 32804 11 253330449779 196300 239 345 68 — — — — — —
202330 MLBSeattle Mariners — 2119 2200 270 00 105190211401 105167 3310 189 15 -2 +0 -0 +8 +0 0.6
202330 AAATacoma Rainiers — 403353 8425023 46992 23 238329504833 266262 2511 363 62 — — — — — —
202431 AAAOmaha Storm Chasers — 280242 6812018 34550 01 281370554923 273289 2012 396 79 — — — — — —
202532 AAAOmaha Storm Chasers — 162146 23504 15430 20 158236274510 116192 279 234 -3 — — — — — —
202633 AAATacoma Rainiers — 150137 331104 13390 10 241307409715 168309 269 319 38 — — — — — —
▸ Career Totals (raw MLB only — historical actual)
MLB Career— — 2119 2200 270 00 105190211401 105167 3310 189 14 -2 +0 -0 +8 +0 0.6
▸ Career — adjusted (every ACTUAL line translated to park/league-neutral MLB equivalents)
201522 A MLEPeoria Chiefs — 143130 30604 8423 00 231291369660 138305 296 291 83 — — — — — —
201623 A+ MLEPalm Beach Cardinals — 3226 4200 670 00 154312231543 77199 2219 255 59 — — — — — —
201623 A MLEPeoria Chiefs — 420371 782029 381027 11 210296348643 137256 249 284 78 — — — — — —
201724 A MLEPeoria Chiefs — 411383 7916012 241161 73 206255342597 136255 286 256 59 — — — — — —
201825 A+ MLEPalm Beach Cardinals — 288256 552306 27674 00 215300375675 160263 239 295 86 — — — — — —
201926 AA MLESpringfield Cardinals — 346311 57709 27884 11 183257293550 109216 258 244 51 — — — — — —
202128 AAA MLETacoma Rainiers — 248228 48609 20870 11 211274355629 145291 358 274 72 — — — — — —
202128 AA MLEArkansas Travelers — 208196 46619 10712 31 235279413692 179312 345 291 83 — — — — — —
202229 AAA MLETacoma Rainiers — 352327 691828 21944 11 211267352619 141271 276 268 68 — — — — — —
202330 MLB MLESeattle Mariners — 2119 2200 270 00 105190211401 105167 3310 191 15 -2 +0 -0 +8 +0 0.6
202330 AAA MLETacoma Rainiers — 403369 6721014 301162 23 182247352599 171220 297 260 62 — — — — — —
202431 AAA MLEOmaha Storm Chasers — 280254 5410011 22670 01 213275382657 169234 248 285 79 — — — — — —
202532 AAA MLEOmaha Storm Chasers — 162150 18403 11510 20 120180207387 87148 317 164 -3 — — — — — —
202633 AAA MLETacoma Rainiers — 150142 26803 8470 10 183227303529 120244 315 224 38 — — — — — —
201522 A MLEPeoria Chiefs — 143130 30604 8423 00 231291369660 138302 296 291 83 — — — — — —
201522 A RAWPeoria Chiefs — 143125 35805 13313 00 280362464826 184330 229 363 83 — — — — — —
201623 A MLE2 teams — 452397 812229 441107 11 204295338632 134255 2410 282 77 — — — — — —
201623 A RAW2 teams — 452381 9627213 60837 11 252364436800 184287 1813 356 77 — — — — — —
201724 A MLEPeoria Chiefs — 411383 7916012 241161 73 206255342597 136260 286 256 59 — — — — — —
201724 A RAWPeoria Chiefs — 411373 9720015 34891 73 260324434758 174301 228 334 59 — — — — — —
201825 A+ MLEPalm Beach Cardinals — 288256 552306 27674 00 215300375675 160266 239 295 86 — — — — — —
201825 A+ RAWPalm Beach Cardinals — 288243 592306 40494 00 243359412770 169280 1714 347 86 — — — — — —
201926 AA MLESpringfield Cardinals — 346311 57709 27884 11 183257293550 109221 258 244 51 — — — — — —
201926 AA RAWSpringfield Cardinals — 346301 699013 37714 11 229322389710 159255 2111 318 51 — — — — — —
202128 AAA MLE2 teams — 456424 9311118 301582 42 219274377651 158302 357 282 77 — — — — — —
202128 AAA RAW2 teams — 456406 10914124 481312 42 268349485834 217339 2911 368 77 — — — — — —
202229 AAA MLETacoma Rainiers — 352327 691828 21944 11 211267352619 141271 276 268 68 — — — — — —
202229 AAA RAWTacoma Rainiers — 352316 8019213 32804 11 253330449779 196300 239 345 68 — — — — — —
202330 AAA MLE2 teams — 424388 6923014 321232 23 178244345589 168217 298 257 60 — — — — — —
202330 AAA RAW2 teams — 424372 8627023 481062 23 231322489812 258257 2511 354 60 — — — — — —
202431 AAA MLEOmaha Storm Chasers — 280254 5410011 22670 01 213275382657 169239 248 285 79 — — — — — —
202431 AAA RAWOmaha Storm Chasers — 280242 6812018 34550 01 281370554923 273289 2012 396 79 — — — — — —
202532 AAA MLEOmaha Storm Chasers — 162150 18403 11510 20 120180207387 87156 317 164 -3 — — — — — —
202532 AAA RAWOmaha Storm Chasers — 162146 23504 15430 20 158236274510 116192 279 234 -3 — — — — — —
202633 AAA MLETacoma Rainiers — 150142 26803 8470 10 183227303529 120250 315 224 38 — — — — — —
202633 AAA RAWTacoma Rainiers — 150137 331104 13390 10 241307409715 168309 269 319 38 — — — — — —
201522 A MLEPeoria Chiefs — 143131 30604 8423 00 229291366657 137305 296 291 83 — — — — — —
201623 A MLE2 teams — 452398 812229 441107 11 204295337631 133252 2410 282 77 — — — — — —
201724 A MLEPeoria Chiefs — 411383 7916012 241161 73 206255342597 136255 286 256 59 — — — — — —
201825 A+ MLEPalm Beach Cardinals — 288255 552306 27674 00 216300376676 161263 239 295 86 — — — — — —
201926 AA MLESpringfield Cardinals — 346312 57709 27884 11 183257292549 109216 258 244 51 — — — — — —
202128 AAA MLE2 teams — 456421 9311118 301582 42 221274380654 159301 357 282 77 — — — — — —
202229 AAA MLETacoma Rainiers — 352324 691828 21944 11 213267355622 142271 276 268 68 — — — — — —
202330 AAA MLE2 teams — 424387 6923014 321232 23 178244346590 168217 298 257 60 — — — — — —
202431 AAA MLEOmaha Storm Chasers — 280256 5410011 22670 01 211275379654 168234 248 285 79 — — — — — —
202532 AAA MLEOmaha Storm Chasers — 162150 18403 11510 20 120180207387 87148 317 164 -3 — — — — — —
202633 AAA MLETacoma Rainiers — 150141 26803 8470 10 184227305532 121244 315 224 38 — — — — — —
▸ Model inputs — neutral MLE (past 3 seasons)
202431 AAA MLEOmaha Storm Chasers — 280256 5410011 22670 01 211275379654 168234 248 285 79 — — — — — —
202532 AAA MLEOmaha Storm Chasers — 162150 18403 11510 20 120180207387 87148 317 164 -3 — — — — — —
202633 AAA MLETacoma Rainiers — 150141 26803 8470 10 184227305532 121244 315 224 38 — — — — — —
▸ 2027 season
▸ 2027 — full MLE projection (neutral park, full availability)
202734 MLB MLESEA 10% 206189 41915 14541 31 211268338606 127267 267 271 69 -8 +0 -0 +4 +4 0.0
▸ 2027 — real world (MLB)
202734 MLB CTXSEA 10% 1312 3100 130 00 209266333599 124265 238 268 69 -0 +0 -0 +0 +0 0.0
▸ Career projection (2028+) — MLB context, MLB playing time (PA × MLB%)
202835 MLB MLESEA 6% 8075 15302 5210 00 203259320579 117260 266 260 62 -4 +0 -6 +1 +2 -0.6
202835 MLB CTXSEA 6% 44 0000 010 00 201257316573 114258 250 257 62 -0 +0 -0 +0 +0 -0.0
▸ Career Totals
▸ Career totals — MLB only (actual + projected)
Career— A+C — 2523 2200 280 00 87160174334 87133 328 200 65 -2 +0 -1 +8 +1 0.5
/ 162G— A+C — 650598 525200 522080 00 87160174334 87133 328 200 65 -61 +0 -18 +199 +14 13.7
Career— MLE — 36723355 6701565102 268101827 2112 200264340605 141252 287 264 65 -10 +0 -6 +11 +5 0.0
/ 162G— MLE — 650594 11928118 471805 42 200265342606 141253 287 264 65 -30 +1 -17 +32 +14 0.0

How the minor-league lines were translated

One row per minor-league stint. Open a row to see each step: the raw rate, the park adjustment, the league/level factor, the age adjustment (hitters) and the resulting MLE rate. Factors are the same ones listed on the MLE Factors page.

2026 AAATacoma Rainiers · 150 PAwOBA .310 → .224 (−86)K% 26.0% → 31.2%
ComponentRawPark ÷Level factor ×GB/FB ×Age ×= MLE
K% /PA26.00%÷1.000×1.200——31.20%
BB% (unintentional) /PA8.67%÷1.000×0.690—×0.9425.63%
HBP% /PA0.00%—×0.940—×0.9420.00%
Singles /BIP18.37%÷1.000×0.930×0.955×0.94215.37%
Doubles /BIP11.22%÷1.000×0.830×0.955×0.9428.38%
Triples /BIP0.00%÷1.000×0.970×0.955×0.9420.00%
Home runs /BIP4.08%÷1.000×0.700—×0.9422.69%

Factors used: league row International League. Park (home-season share, regressed): no park row on file (treated as neutral) — applied at half strength. Age: age 33 vs a level average of 27.2 → −5.8% on BB/HBP/hit rates (5.8 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.955.

Result: wOBA .310 → .224; ISO .168 → .114; BABIP .309 → .244. Both wOBAs use the same linear weights, so the change is the translation alone. The MLE line is not regressed to the mean — regression happens later, when seasons are blended into a projection (how).

2025 AAAOmaha Storm Chasers · 162 PAwOBA .228 → .164 (−64)K% 26.5% → 31.6%
ComponentRawPark ÷Level factor ×GB/FB ×Age ×= MLE
K% /PA26.54%÷1.007×1.200——31.62%
BB% (unintentional) /PA9.26%÷0.935×0.690—×0.9526.50%
HBP% /PA0.00%—×0.940—×0.9520.00%
Singles /BIP13.59%÷1.108×0.930×0.986×0.95210.70%
Doubles /BIP4.85%÷1.006×0.830×0.986×0.9523.76%
Triples /BIP0.00%÷0.900×0.970×0.986×0.9520.00%
Home runs /BIP3.88%÷1.003×0.700—×0.9522.58%

Factors used: league row International League. Park (home-season share, regressed): HR 101, 1B 122, 2B 101, 3B 80, K 101, BB 87 — applied at half strength. Age: age 32 vs a level average of 27.2 → −4.8% on BB/HBP/hit rates (4.8 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.986.

Result: wOBA .228 → .164; ISO .116 → .079; BABIP .192 → .148. Both wOBAs use the same linear weights, so the change is the translation alone. The MLE line is not regressed to the mean — regression happens later, when seasons are blended into a projection (how).

2024 AAAOmaha Storm Chasers · 280 PAwOBA .391 → .285 (−106)K% 19.6% → 24.1%
ComponentRawPark ÷Level factor ×GB/FB ×Age ×= MLE
K% /PA19.64%÷0.976×1.200——24.14%
BB% (unintentional) /PA12.14%÷1.049×0.690—×0.9627.69%
HBP% /PA0.00%—×0.940—×0.9620.00%
Singles /BIP20.32%÷1.007×0.930×0.962×0.96217.36%
Doubles /BIP6.42%÷0.958×0.830×0.962×0.9625.14%
Triples /BIP0.00%÷0.935×0.970×0.962×0.9620.00%
Home runs /BIP9.63%÷1.111×0.700—×0.9625.83%

Factors used: league row International League. Park (home-season share, regressed): HR 122, 1B 101, 2B 92, 3B 87, K 95, BB 110 — applied at half strength. Age: age 31 vs a level average of 27.2 → −3.8% on BB/HBP/hit rates (3.8 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.962.

Result: wOBA .391 → .285; ISO .273 → .179; BABIP .289 → .234. Both wOBAs use the same linear weights, so the change is the translation alone. The MLE line is not regressed to the mean — regression happens later, when seasons are blended into a projection (how).

2023 AAATacoma Rainiers · 403 PAwOBA .353 → .260 (−93)K% 24.6% → 28.8%
ComponentRawPark ÷Level factor ×GB/FB ×Age ×= MLE
K% /PA24.57%÷1.024×1.200——28.79%
BB% (unintentional) /PA11.17%÷1.013×0.690—×0.9727.40%
HBP% /PA0.50%—×0.940—×0.9720.45%
Singles /BIP14.17%÷0.989×0.930×0.982×0.97212.73%
Doubles /BIP9.84%÷0.940×0.830×0.982×0.9728.30%
Triples /BIP0.00%÷0.900×0.970×0.982×0.9720.00%
Home runs /BIP9.06%÷1.157×0.700—×0.9725.32%

Factors used: league row International League. Park (home-season share, regressed): HR 131, 1B 98, 2B 88, 3B 80, K 105, BB 103 — applied at half strength. Age: age 30 vs a level average of 27.2 → −2.8% on BB/HBP/hit rates (2.8 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.982.

Result: wOBA .353 → .260; ISO .266 → .176; BABIP .262 → .220. Both wOBAs use the same linear weights, so the change is the translation alone. The MLE line is not regressed to the mean — regression happens later, when seasons are blended into a projection (how).

2022 AAATacoma Rainiers · 352 PAwOBA .336 → .268 (−68)K% 22.7% → 26.7%
ComponentRawPark ÷Level factor ×GB/FB ×Age ×= MLE
K% /PA22.73%÷1.020×1.200——26.75%
BB% (unintentional) /PA9.09%÷1.048×0.690—×0.9825.88%
HBP% /PA1.14%—×0.940—×0.9821.05%
Singles /BIP19.49%÷1.013×0.930×0.996×0.98217.50%
Doubles /BIP8.05%÷0.839×0.830×0.996×0.9827.79%
Triples /BIP0.85%÷0.902×0.970×0.996×0.9820.89%
Home runs /BIP5.51%÷1.144×0.700—×0.9823.31%

Factors used: league row International League. Park (home-season share, regressed): HR 129, 1B 103, 2B 68, 3B 80, K 104, BB 110 — applied at half strength. Age: age 29 vs a level average of 27.2 → −1.8% on BB/HBP/hit rates (1.8 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.996.

Result: wOBA .336 → .268; ISO .196 → .144; BABIP .300 → .271. Both wOBAs use the same linear weights, so the change is the translation alone. The MLE line is not regressed to the mean — regression happens later, when seasons are blended into a projection (how).

2021 AAATacoma Rainiers · 248 PAwOBA .351 → .274 (−77)K% 29.0% → 35.1%
ComponentRawPark ÷Level factor ×GB/FB ×Age ×= MLE
K% /PA29.03%÷0.994×1.200——35.06%
BB% (unintentional) /PA12.50%÷1.045×0.690—×0.9928.19%
HBP% /PA0.00%—×0.940—×0.9920.00%
Singles /BIP24.14%÷0.952×0.930×0.994×0.99223.26%
Doubles /BIP4.83%÷0.989×0.830×0.994×0.9923.99%
Triples /BIP0.00%÷0.977×0.920×0.994×0.9920.00%
Home runs /BIP8.97%÷0.970×0.700—×0.9926.42%

Factors used: level-wide AAA factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 94, 1B 90, 2B 98, 3B 95, K 99, BB 109 — applied at half strength. Age: age 28 vs a level average of 27.2 → −0.8% on BB/HBP/hit rates (0.8 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.994.

Result: wOBA .351 → .274; ISO .212 → .151; BABIP .318 → .291. Both wOBAs use the same linear weights, so the change is the translation alone. The MLE line is not regressed to the mean — regression happens later, when seasons are blended into a projection (how).

2021 AAArkansas Travelers · 208 PAwOBA .367 → .291 (−76)K% 28.4% → 34.2%
ComponentRawPark ÷Level factor ×GB/FB ×Age ×= MLE
K% /PA28.37%÷1.013×1.220——34.15%
BB% (unintentional) /PA8.17%÷1.144×0.690—×0.9684.77%
HBP% /PA0.96%—×0.850—×0.9680.79%
Singles /BIP26.92%÷0.999×0.940×0.973×0.96823.85%
Doubles /BIP5.38%÷0.975×0.870×0.973×0.9684.52%
Triples /BIP0.77%÷1.150×0.920×0.973×0.9680.58%
Home runs /BIP8.46%÷0.892×0.780—×0.9687.16%

Factors used: level-wide AA factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 78, 1B 100, 2B 95, 3B 130, K 103, BB 129 — applied at half strength. Age: age 28 vs a level average of 24.8 → −3.2% on BB/HBP/hit rates (3.2 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.973.

Result: wOBA .367 → .291; ISO .222 → .180; BABIP .361 → .312. Both wOBAs use the same linear weights, so the change is the translation alone. The MLE line is not regressed to the mean — regression happens later, when seasons are blended into a projection (how).

2019 AASpringfield Cardinals · 346 PAwOBA .312 → .244 (−68)K% 20.5% → 25.4%
ComponentRawPark ÷Level factor ×GB/FB ×Age ×= MLE
K% /PA20.52%÷0.985×1.220——25.42%
BB% (unintentional) /PA10.69%÷0.965×0.700—×0.9887.67%
HBP% /PA1.16%—×0.870—×0.9880.99%
Singles /BIP20.43%÷0.974×0.920×0.950×0.98818.11%
Doubles /BIP3.91%÷1.070×0.840×0.950×0.9882.88%
Triples /BIP0.00%÷1.108×0.940×0.950×0.9880.00%
Home runs /BIP5.65%÷1.108×0.800—×0.9884.03%

Factors used: league row TL. Park (home-season share, regressed): HR 122, 1B 95, 2B 114, 3B 122, K 97, BB 93 — applied at half strength. Age: age 26 vs a level average of 24.8 → −1.2% on BB/HBP/hit rates (1.2 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.950.

Result: wOBA .312 → .244; ISO .159 → .113; BABIP .255 → .216. Both wOBAs use the same linear weights, so the change is the translation alone. The MLE line is not regressed to the mean — regression happens later, when seasons are blended into a projection (how).