Joel Kuhnel
P San Francisco Giants| Year | Age | Lvl / Team | G | GS | IP | ERA | FIP | K% | BB% | WAR | MLE rates |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024 | 29 | MIX2 levels | 41 | 0 | 52 | 3.29 | 2.85 | 16.8% | 5.1% | 1.1 | K 15.2% · BB 5.7% · FIP 2.86 |
| 2025 | 30 | AAAScranton/Wilk… | 50 | 2 | 64 | 3.53 | 2.88 | 21.6% | 4.2% | — | K 18.6% · BB 3.8% · FIP 3.10 |
| 2026 | 31 | MIX2 levels | 58 | 0 | 59 | 3.66 | 4.51 | 16.4% | 8.2% | 0.0 | K 15.6% · BB 8.0% · FIP 4.66 |
| 2027PROJ | 32 | MLBSF | 40 | 0 | 42 | 4.50 | 4.44 | 17.0% | 6.1% | 0.1 | |
| 2028PROJ95% MLB | 33 | MLBSF | 27 | 0 | 28 | 4.63 | 4.72 | 16.2% | 6.6% | -0.1 | |
| 2029PROJ90% MLB | 34 | MLBSF | 15 | 0 | 16 | 4.86 | 5.02 | 15.2% | 7.1% | -0.1 |
Grades · Statcast · Contract
Contract
No contract data on file. Pre-MLB players and minor-league free agents do not yet have salary projections — entries are added at first 40-man roster placement.
Career Stats + Projections
Methodology▸ how WAR & MLE are computed
Stats are park-neutral MLB equivalents. The "TEAM" column shows current org affiliation only — we do NOT project at that team's park.
Rates (K%, BB%, HR-BF) are park-stripped; MiLB stat lines are translated to their MLB-equivalent via per-level MLE factors.
WAR is computed from projected runs prevented vs a replacement pitcher (the marginal arm a team would call up if this pitcher were unavailable) — calibrated to the standard WAR scale.
| Year | Age | Lvl | Team | G | GS | IP | BF | K | BB | HR | GS% | IP/G | K% | BB% | K-BB% | HR% | ERA | FIP | WAR |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ▸ Career — actual stats, one row per year (as recorded, no adjustments) | |||||||||||||||||||
| ▸ Career — adjusted (each season translated to a park/league-neutral MLB-equivalent line; levels combined per year) | |||||||||||||||||||
| ▸ Model inputs — neutral MLE (past 3 seasons + 2027 so far) | |||||||||||||||||||
| 2016 | 21 | ROK MLE | Billings Mustangs | 18 | 0 | 21 | 92 | 14 | 1 | 1 | 0% | 1.2 | 10.3% | 1.4% | 9.0% | 1.5% | 3.43 | 3.23 | — |
| 2016 | 21 | ROK RAW | Billings Mustangs | 18 | 0 | 21 | 92 | 14 | 1 | 1 | 0% | 1.2 | 15.2% | 1.1% | 14.1% | 1.1% | 3.43 | 2.53 | — |
| 2017 | 22 | A MLE | Dayton Dragons | 48 | 0 | 64 | 276 | 54 | 10 | 6 | 0% | 1.3 | 14.5% | 4.3% | 10.2% | 2.4% | 4.36 | 3.75 | — |
| 2017 | 22 | A RAW | Dayton Dragons | 48 | 0 | 64 | 276 | 54 | 10 | 6 | 0% | 1.3 | 19.6% | 3.6% | 15.9% | 2.2% | 4.36 | 3.10 | — |
| 2018 | 23 | A+ MLE | Daytona Tortugas | 44 | 0 | 53 | 225 | 56 | 9 | 2 | 0% | 1.2 | 19.2% | 4.6% | 14.6% | 1.1% | 3.04 | 2.64 | — |
| 2018 | 23 | A+ RAW | Daytona Tortugas | 44 | 0 | 53 | 225 | 56 | 9 | 2 | 0% | 1.2 | 24.9% | 4.0% | 20.9% | 0.9% | 3.04 | 1.99 | — |
| 2019 | 24 | MIX MLE | 3 levels | 52 | 0 | 63 | 257 | 59 | 18 | 7 | 0% | 1.2 | 19.5% | 6.5% | 13.0% | 3.4% | 2.56 | 4.13 | +0.3 |
| 2019 | 24 | MIX RAW | 3 levels | 52 | 0 | 63 | 257 | 59 | 18 | 7 | 0% | 1.2 | 23.0% | 7.0% | 16.0% | 2.7% | 2.56 | 3.53 | +0.8 |
| 2020 | 25 | MLB MLE | Cincinnati Reds | 3 | 0 | 3 | 13 | 3 | 0 | 2 | 0% | 1.0 | 23.1% | 0.0% | 23.1% | 15.4% | 6.00 | 9.60 | -0.2 |
| 2020 | 25 | MLB RAW | Cincinnati Reds | 3 | 0 | 3 | 13 | 3 | 0 | 2 | 0% | 1.0 | 23.1% | 0.0% | 23.1% | 15.4% | 6.00 | 9.77 | -0.2 |
| 2021 | 26 | MIX MLE | 2 levels | 8 | 1 | 8 | 31 | 11 | 1 | 1 | 12% | 1.0 | 35.5% | 3.2% | 32.3% | 3.2% | 1.12 | 2.28 | — |
| 2021 | 26 | MIX RAW | 2 levels | 8 | 1 | 8 | 31 | 11 | 1 | 1 | 12% | 1.0 | 35.5% | 3.2% | 32.3% | 3.2% | 1.12 | 2.35 | — |
| 2022 | 27 | MIX MLE | 2 levels | 63 | 0 | 68 | 297 | 63 | 14 | 9 | 0% | 1.1 | 22.0% | 5.1% | 16.9% | 2.9% | 5.80 | 3.49 | +0.9 |
| 2022 | 27 | MIX RAW | 2 levels | 63 | 0 | 68 | 297 | 63 | 14 | 9 | 0% | 1.1 | 21.2% | 4.7% | 16.5% | 3.0% | 5.80 | 3.58 | +0.8 |
| 2023 | 28 | MIX MLE | 2 levels | 47 | 0 | 57 | 258 | 34 | 20 | 6 | 0% | 1.2 | 11.5% | 7.1% | 4.4% | 2.7% | 6.04 | 4.51 | +0.0 |
| 2023 | 28 | MIX RAW | 2 levels | 47 | 0 | 57 | 258 | 34 | 20 | 6 | 0% | 1.2 | 13.2% | 7.8% | 5.4% | 2.3% | 6.04 | 4.34 | +0.1 |
| 2024 | 29 | MIX MLE | 2 levels | 41 | 0 | 52 | 214 | 36 | 11 | 2 | 0% | 1.3 | 15.2% | 5.7% | 9.6% | 0.6% | 3.29 | 2.86 | +1.1 |
| 2024 | 29 | MIX MLE | 2 levels | 41 | 0 | 52 | 214 | 36 | 11 | 2 | 0% | 1.3 | 15.2% | 5.7% | 9.6% | 0.6% | 3.29 | 2.86 | +1.1 |
| 2024 | 29 | MIX RAW | 2 levels | 41 | 0 | 52 | 214 | 36 | 11 | 2 | 0% | 1.3 | 16.8% | 5.1% | 11.7% | 0.9% | 3.29 | 2.85 | +1.1 |
| 2025 | 30 | AAA MLE | Scranton/Wilkes-Barre RailRiders | 50 | 2 | 64 | 259 | 56 | 11 | 5 | 4% | 1.3 | 18.6% | 3.8% | 14.8% | 2.0% | 3.53 | 3.10 | — |
| 2025 | 30 | AAA MLE | Scranton/Wilkes-Barre RailRiders | 50 | 2 | 64 | 259 | 56 | 11 | 5 | 4% | 1.3 | 18.6% | 3.8% | 14.8% | 2.0% | 3.53 | 3.10 | — |
| 2025 | 30 | AAA RAW | Scranton/Wilkes-Barre RailRiders | 50 | 2 | 64 | 259 | 56 | 11 | 5 | 4% | 1.3 | 21.6% | 4.2% | 17.4% | 1.9% | 3.53 | 2.88 | — |
| 2026 | 31 | MIX MLE | 2 levels | 58 | 0 | 59 | 256 | 42 | 21 | 8 | 0% | 1.0 | 15.6% | 8.0% | 7.6% | 3.4% | 3.66 | 4.66 | -0.1 |
| 2026 | 31 | MIX MLE | 2 levels | 58 | 0 | 59 | 256 | 42 | 21 | 8 | 0% | 1.0 | 15.6% | 8.0% | 7.6% | 3.4% | 3.66 | 4.66 | -0.1 |
| 2026 | 31 | MIX RAW | 2 levels | 58 | 0 | 59 | 256 | 42 | 21 | 8 | 0% | 1.0 | 16.4% | 8.2% | 8.2% | 3.1% | 3.66 | 4.51 | +0.0 |
| ▸ Career totals (raw MLB only — as recorded) | |||||||||||||||||||
| MLB Career | — | 127 | 0 | 139 | 609 | 104 | 39 | 21 | 0% | 1.1 | 17.1% | 6.4% | 10.7% | 3.4% | 5.39 | 4.41 | +0.2 | ||
| ▸ 2027 season — projected remainder (no 2027 stats recorded) | |||||||||||||||||||
| 2027 | 32 | MLB | SF | 40 | 0 | 42 | 177 | 30 | 11 | 5 | 0% | 1.1 | 17.0% | 6.1% | 10.9% | 2.9% | 4.50 | 4.44 | +0.1 |
| ▸ Career projection (2028+) — MLB context, MLB playing time (IP × MLB%) | |||||||||||||||||||
| 2028 | 33 | MLB MLE | SF | 28 | 0 | 29 | 124 | 20 | 8 | 4 | 0% | 1.1 | 16.2% | 6.6% | 9.6% | 3.2% | 4.63 | 4.72 | -0.1 |
| 2029 | 34 | MLB MLE | SF | 17 | 0 | 18 | 76 | 12 | 5 | 3 | 0% | 1.1 | 15.2% | 7.1% | 8.2% | 3.5% | 4.86 | 5.02 | -0.1 |
| 2028 | 33 | MLB CTX | SF | 27 | 0 | 28 | 118 | 19 | 8 | 4 | 0% | 1.0 | 16.2% | 6.6% | 9.6% | 3.2% | 4.63 | 4.72 | -0.1 |
| 2029 | 34 | MLB CTX | SF | 15 | 0 | 16 | 68 | 10 | 5 | 2 | 0% | 1.1 | 15.2% | 7.1% | 8.2% | 3.5% | 4.86 | 5.02 | -0.1 |
| ▸ Career totals — MLB only (actual + projected) | |||||||||||||||||||
| Career | — | RAW | 169 | 0 | 183 | 796 | 134 | 52 | 27 | 0% | 1.1 | 16.8% | 6.5% | 10.3% | 3.4% | 5.22 | 4.38 | +0.4 | |
| / 200 IP | — | RAW | 185 | 0 | 200 | 870 | 147 | 57 | 30 | 0% | 1.1 | 16.8% | 6.5% | 10.3% | 3.4% | 5.22 | 4.38 | +0.4 | |
| Career | — | MLE | 432 | 3 | 512 | 2178 | 372 | 117 | 53 | 1% | 1.2 | 17.1% | 5.4% | 11.7% | 2.4% | 4.01 | 3.67 | +0.1 | |
| / 200 IP | — | MLE | 169 | 1 | 200 | 850 | 145 | 46 | 21 | 1% | 1.2 | 17.1% | 5.4% | 11.7% | 2.4% | 4.01 | 3.67 | +0.1 | |
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 AAANashville Sounds · 14 IPFIP 2.87 → 3.18 (+0.31)K% 25.9% → 22.3%
| Component | Raw | Park ÷ | Level factor × | = MLE |
|---|---|---|---|---|
| K% /BF | 25.93% | — | ×0.860 | 22.30% |
| BB% (unintentional) /BF | 7.41% | — | ×0.900 | 6.67% |
| HR / BF /BF | 1.85% | ÷1.000 | ×1.100 | 2.04% |
Factors used: pitcher AAA level factors (Triple-A 2023+ robo-zone set: walks improve on promotion) — K ×0.86, BB ×0.90, HR ×1.10. Pitcher translation is level-wide (no per-league rows, no age adjustment); HR/BF is park-adjusted at half strength (park HR factor 100).
Result: FIP 2.87 → 3.18, computed from the rates in the table with the same formula before and after. The MLE line is not regressed to the mean — regression is applied when seasons are blended into a projection (how).
2025 AAAScranton/Wilkes-Barre RailRiders · 64 IPFIP 2.87 → 3.10 (+0.23)K% 21.6% → 18.6%
| Component | Raw | Park ÷ | Level factor × | = MLE |
|---|---|---|---|---|
| K% /BF | 21.62% | — | ×0.860 | 18.59% |
| BB% (unintentional) /BF | 4.25% | — | ×0.900 | 3.82% |
| HR / BF /BF | 1.93% | ÷1.070 | ×1.100 | 1.99% |
Factors used: pitcher AAA level factors (Triple-A 2023+ robo-zone set: walks improve on promotion) — K ×0.86, BB ×0.90, HR ×1.10. Pitcher translation is level-wide (no per-league rows, no age adjustment); HR/BF is park-adjusted at half strength (park HR factor 114).
Result: FIP 2.87 → 3.10, computed from the rates in the table with the same formula before and after. The MLE line is not regressed to the mean — regression is applied when seasons are blended into a projection (how).
2024 AAADurham Bulls · 42 IPFIP 2.71 → 2.86 (+0.14)K% 17.7% → 15.2%
| Component | Raw | Park ÷ | Level factor × | = MLE |
|---|---|---|---|---|
| K% /BF | 17.71% | — | ×0.860 | 15.23% |
| BB% (unintentional) /BF | 6.29% | — | ×0.900 | 5.66% |
| HR / BF /BF | 0.57% | ÷1.061 | ×1.100 | 0.59% |
Factors used: pitcher AAA level factors (Triple-A 2023+ robo-zone set: walks improve on promotion) — K ×0.86, BB ×0.90, HR ×1.10. Pitcher translation is level-wide (no per-league rows, no age adjustment); HR/BF is park-adjusted at half strength (park HR factor 112).
Result: FIP 2.71 → 2.86, computed from the rates in the table with the same formula before and after. The MLE line is not regressed to the mean — regression is applied when seasons are blended into a projection (how).
2023 AAASugar Land Space Cowboys · 44 IPFIP 3.90 → 4.23 (+0.33)K% 15.5% → 13.3%
| Component | Raw | Park ÷ | Level factor × | = MLE |
|---|---|---|---|---|
| K% /BF | 15.50% | — | ×0.860 | 13.33% |
| BB% (unintentional) /BF | 8.00% | — | ×0.900 | 7.20% |
| HR / BF /BF | 2.00% | ÷0.896 | ×1.100 | 2.45% |
Factors used: pitcher AAA level factors (Triple-A 2023+ robo-zone set: walks improve on promotion) — K ×0.86, BB ×0.90, HR ×1.10. Pitcher translation is level-wide (no per-league rows, no age adjustment); HR/BF is park-adjusted at half strength (park HR factor 79).
Result: FIP 3.90 → 4.23, computed from the rates in the table with the same formula before and after. The MLE line is not regressed to the mean — regression is applied when seasons are blended into a projection (how).
2022 AAALouisville Bats · 10 IPFIP 3.30 → 3.30 (−0.00)K% 16.7% → 14.7%
| Component | Raw | Park ÷ | Level factor × | = MLE |
|---|---|---|---|---|
| K% /BF | 16.67% | — | ×0.880 | 14.67% |
| BB% (unintentional) /BF | 2.38% | — | ×1.050 | 2.50% |
| HR / BF /BF | 2.38% | ÷1.282 | ×1.100 | 2.04% |
Factors used: pitcher AAA level factors — K ×0.88, BB ×1.05, HR ×1.10. Pitcher translation is level-wide (no per-league rows, no age adjustment); HR/BF is park-adjusted at half strength (park HR factor 156).
Result: FIP 3.30 → 3.30, computed from the rates in the table with the same formula before and after. The MLE line is not regressed to the mean — regression is applied when seasons are blended into a projection (how).
2019 AAChattanooga Lookouts · 36 IPFIP 3.69 → 4.51 (+0.82)K% 21.1% → 17.1%
| Component | Raw | Park ÷ | Level factor × | = MLE |
|---|---|---|---|---|
| K% /BF | 21.13% | — | ×0.810 | 17.11% |
| BB% (unintentional) /BF | 3.52% | — | ×1.100 | 3.87% |
| HR / BF /BF | 3.52% | ÷0.979 | ×1.200 | 4.31% |
Factors used: pitcher AA level factors — K ×0.81, BB ×1.10, HR ×1.20. Pitcher translation is level-wide (no per-league rows, no age adjustment); HR/BF is park-adjusted at half strength (park HR factor 96).
Result: FIP 3.69 → 4.51, computed from the rates in the table with the same formula before and after. The MLE line is not regressed to the mean — regression is applied when seasons are blended into a projection (how).
2019 AAALouisville Bats · 18 IPFIP 2.93 → 3.39 (+0.46)K% 27.4% → 24.1%
| Component | Raw | Park ÷ | Level factor × | = MLE |
|---|---|---|---|---|
| K% /BF | 27.40% | — | ×0.880 | 24.11% |
| BB% (unintentional) /BF | 10.96% | — | ×1.050 | 11.51% |
| HR / BF /BF | 1.37% | ÷0.957 | ×1.100 | 1.57% |
Factors used: pitcher AAA level factors — K ×0.88, BB ×1.05, HR ×1.10. Pitcher translation is level-wide (no per-league rows, no age adjustment); HR/BF is park-adjusted at half strength (park HR factor 91).
Result: FIP 2.93 → 3.39, computed from the rates in the table with the same formula before and after. The MLE line is not regressed to the mean — regression is applied when seasons are blended into a projection (how).
2018 A+Daytona Tortugas · 53 IPFIP 1.99 → 2.64 (+0.65)K% 24.9% → 19.2%
| Component | Raw | Park ÷ | Level factor × | = MLE |
|---|---|---|---|---|
| K% /BF | 24.89% | — | ×0.770 | 19.16% |
| BB% (unintentional) /BF | 4.00% | — | ×1.150 | 4.60% |
| HR / BF /BF | 0.89% | ÷1.058 | ×1.250 | 1.05% |
Factors used: pitcher A+ level factors — K ×0.77, BB ×1.15, HR ×1.25. Pitcher translation is level-wide (no per-league rows, no age adjustment); HR/BF is park-adjusted at half strength (park HR factor 112).
Result: FIP 1.99 → 2.64, computed from the rates in the table with the same formula before and after. The MLE line is not regressed to the mean — regression is applied when seasons are blended into a projection (how).
Career Comps
Completed MLB careers (no pro action in 2+ yrs) whose totals — actual + projected — most resemble this player's. Pool: 1,234 reliever careers (754 from 1990-2025 + 480 historical, 1901-2023), also matched on career-to-date at the same age. * Historical (Lahman) careers: rates era-adjusted to 2001-24 league levels; WAR is an OGILVIE proxy.
| Player | 162s | IP/yr | K% | BB% | HR/9 | ERA |
|---|---|---|---|---|---|---|
| OGILVIE CAREER PROJECTION | 1.1 | 46 | 16.8% | 6.7% | 1.29 | 5.08 |
| Steve Kealey ('68-'73, -1 WAR*) | 1.1 | 54 | 18.5%* | 7.2%* | 1.32* | 5.26* |
| Carlos Almánzar ('05) | 1.2 | 60 | 16.3% | 7.9% | 1.32 | 4.82 |
| Jose Cabrera ('02) | 1.4 | 68 | 16.2% | 7.9% | 1.39 | 4.95 |
| Brandon Maurer ('18) | 1.9 | 62 | 19.9% | 7.8% | 1.14 | 5.36 |
| Chuck Hartenstein ('66-'77, -1 WAR*) | 1.5 | 59 | 13.7%* | 7.2%* | 1.50* | 5.28* |
| Larry Casian ('90-'98, 0 WAR*) | 1.2 | 40 | 14.7%* | 6.8%* | 1.25* | 4.37* |