Kevin Bruggeman
C Tri-City Dust Devils| Year | Age | Lvl / Team | PA | AVG/OBP/SLG | HR | SB | wRC+ | WAR | MLE AVG/OBP/SLG |
|---|---|---|---|---|---|---|---|---|---|
| 2024 | 23 | A+LAA | 282 | .242/.338/.329 | 3 | 15 | 55 | — | .217/.291/.297 |
| 2025 | 24 | ASEA | 349 | .225/.384/.365 | 4 | 11 | 64 | — | .179/.299/.285 |
| 2026 | 25 | A+LAA | 146 | .189/.366/.270 | 2 | 0 | 44 | — | .160/.296/.235 |
| 2027PROJMLE | 26 | MLBLAA | 200 | .188/.295/.276 | 2 | 3 | 67 | 0.0 | |
| 2028PROJ26% MLB | 27 | MLBLAA | 19 | .189/.294/.279 | 0 | 0 | 68 | 0.0 | |
| 2029PROJ39% MLB | 28 | MLBLAA | 51 | .190/.293/.280 | 1 | 1 | 68 | -0.0 |
Tools · ContractCON 35 / POW 35
Career Stats + Projections
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.
| Year | Age | Lvl | Team | MLB% | PA | AB | H | 2B | 3B | HR | BB | SO | HBP | SB | CS | AVG | OBP | SLG | OPS | ISO | BABIP | K% | BB% | wOBA | wRC+ | BAT | RUN | FLD | POS | REP | WAR |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ▸ Career — actual stats, one row per stint (as recorded, no adjustments) | |||||||||||||||||||||||||||||||
| 2023 | 22 | A+ | Tri-City Dust Devils | — | 19 | 17 | 5 | 1 | 0 | 0 | 2 | 6 | 0 | 1 | 0 | 294 | 368 | 353 | 721 | 59 | 455 | 32 | 11 | 332 | 67 | — | — | — | — | — | — |
| 2024 | 23 | A+ | Tri-City Dust Devils | — | 282 | 240 | 58 | 10 | 1 | 3 | 28 | 67 | 7 | 15 | 3 | 242 | 338 | 329 | 667 | 87 | 322 | 24 | 10 | 302 | 55 | — | — | — | — | — | — |
| 2025 | 24 | A | Inland Empire 66ers | — | 349 | 271 | 61 | 12 | 7 | 4 | 60 | 63 | 10 | 11 | 3 | 225 | 384 | 365 | 749 | 140 | 275 | 18 | 17 | 340 | 64 | — | — | — | — | — | — |
| 2026 | 25 | A+ | Tri-City Dust Devils | — | 146 | 111 | 21 | 1 | 1 | 2 | 25 | 35 | 6 | 0 | 1 | 189 | 366 | 270 | 636 | 81 | 253 | 24 | 17 | 303 | 44 | — | — | — | — | — | — |
| ▸ Career — adjusted (every ACTUAL line translated to park/league-neutral MLB equivalents) | |||||||||||||||||||||||||||||||
| 2023 | 22 | A+ MLE | Tri-City Dust Devils | — | 19 | 18 | 4 | 1 | 0 | 0 | 1 | 8 | 0 | 1 | 0 | 222 | 263 | 278 | 541 | 56 | 436 | 42 | 5 | 267 | 67 | — | — | — | — | — | — |
| 2024 | 23 | A+ MLE | Tri-City Dust Devils | — | 282 | 249 | 54 | 9 | 1 | 3 | 19 | 89 | 7 | 15 | 3 | 217 | 291 | 297 | 588 | 80 | 300 | 32 | 7 | 250 | 55 | — | — | — | — | — | — |
| 2025 | 24 | A MLE | Inland Empire 66ers | — | 349 | 291 | 52 | 10 | 6 | 3 | 40 | 85 | 10 | 11 | 3 | 179 | 299 | 285 | 584 | 107 | 228 | 24 | 11 | 263 | 64 | — | — | — | — | — | — |
| 2026 | 25 | A+ MLE | Tri-City Dust Devils | — | 146 | 119 | 19 | 1 | 1 | 2 | 17 | 47 | 6 | 0 | 1 | 160 | 296 | 235 | 531 | 76 | 214 | 32 | 12 | 233 | 44 | — | — | — | — | — | — |
| 2023 | 22 | A+ MLE | Tri-City Dust Devils | — | 19 | 18 | 4 | 1 | 0 | 0 | 1 | 8 | 0 | 1 | 0 | 222 | 263 | 278 | 541 | 56 | 400 | 42 | 5 | 267 | 67 | — | — | — | — | — | — |
| 2023 | 22 | A+ RAW | Tri-City Dust Devils | — | 19 | 17 | 5 | 1 | 0 | 0 | 2 | 6 | 0 | 1 | 0 | 294 | 368 | 353 | 721 | 59 | 455 | 32 | 11 | 332 | 67 | — | — | — | — | — | — |
| 2024 | 23 | A+ MLE | Tri-City Dust Devils | — | 282 | 249 | 54 | 9 | 1 | 3 | 19 | 89 | 7 | 15 | 3 | 217 | 291 | 297 | 588 | 80 | 323 | 32 | 7 | 250 | 55 | — | — | — | — | — | — |
| 2024 | 23 | A+ RAW | Tri-City Dust Devils | — | 282 | 240 | 58 | 10 | 1 | 3 | 28 | 67 | 7 | 15 | 3 | 242 | 338 | 329 | 667 | 87 | 322 | 24 | 10 | 302 | 55 | — | — | — | — | — | — |
| 2025 | 24 | A MLE | Inland Empire 66ers | — | 349 | 291 | 52 | 10 | 6 | 3 | 40 | 85 | 10 | 11 | 3 | 179 | 299 | 285 | 584 | 107 | 238 | 24 | 11 | 263 | 64 | — | — | — | — | — | — |
| 2025 | 24 | A RAW | Inland Empire 66ers | — | 349 | 271 | 61 | 12 | 7 | 4 | 60 | 63 | 10 | 11 | 3 | 225 | 384 | 365 | 749 | 140 | 275 | 18 | 17 | 340 | 64 | — | — | — | — | — | — |
| 2026 | 25 | A+ MLE | Tri-City Dust Devils | — | 146 | 119 | 19 | 1 | 1 | 2 | 17 | 47 | 6 | 0 | 1 | 160 | 296 | 235 | 531 | 76 | 239 | 32 | 12 | 233 | 44 | — | — | — | — | — | — |
| 2026 | 25 | A+ RAW | Tri-City Dust Devils | — | 146 | 111 | 21 | 1 | 1 | 2 | 25 | 35 | 6 | 0 | 1 | 189 | 366 | 270 | 636 | 81 | 253 | 24 | 17 | 303 | 44 | — | — | — | — | — | — |
| 2023 | 22 | A+ MLE | Tri-City Dust Devils | — | 19 | 18 | 4 | 1 | 0 | 0 | 1 | 8 | 0 | 1 | 0 | 222 | 263 | 278 | 541 | 56 | 436 | 42 | 5 | 267 | 67 | — | — | — | — | — | — |
| 2024 | 23 | A+ MLE | Tri-City Dust Devils | — | 282 | 254 | 54 | 9 | 1 | 3 | 19 | 89 | 7 | 15 | 3 | 213 | 291 | 291 | 582 | 79 | 300 | 32 | 7 | 250 | 55 | — | — | — | — | — | — |
| 2025 | 24 | A MLE | Inland Empire 66ers | — | 349 | 296 | 52 | 10 | 6 | 3 | 40 | 85 | 10 | 11 | 3 | 176 | 299 | 280 | 580 | 105 | 228 | 24 | 11 | 263 | 64 | — | — | — | — | — | — |
| 2026 | 25 | A+ MLE | Tri-City Dust Devils | — | 146 | 122 | 19 | 1 | 1 | 2 | 17 | 47 | 6 | 0 | 1 | 156 | 296 | 230 | 525 | 74 | 214 | 32 | 12 | 233 | 44 | — | — | — | — | — | — |
| ▸ Model inputs — neutral MLE (past 3 seasons) | |||||||||||||||||||||||||||||||
| 2024 | 23 | A+ MLE | Tri-City Dust Devils | — | 282 | 254 | 54 | 9 | 1 | 3 | 19 | 89 | 7 | 15 | 3 | 213 | 291 | 291 | 582 | 79 | 300 | 32 | 7 | 250 | 55 | — | — | — | — | — | — |
| 2025 | 24 | A MLE | Inland Empire 66ers | — | 349 | 296 | 52 | 10 | 6 | 3 | 40 | 85 | 10 | 11 | 3 | 176 | 299 | 280 | 580 | 105 | 228 | 24 | 11 | 263 | 64 | — | — | — | — | — | — |
| 2026 | 25 | A+ MLE | Tri-City Dust Devils | — | 146 | 122 | 19 | 1 | 1 | 2 | 17 | 47 | 6 | 0 | 1 | 156 | 296 | 230 | 525 | 74 | 214 | 32 | 12 | 233 | 44 | — | — | — | — | — | — |
| ▸ 2027 season | |||||||||||||||||||||||||||||||
| ▸ 2027 — full MLE projection (neutral park, full availability) | |||||||||||||||||||||||||||||||
| 2027 | 26 | MLB MLE | LAA | 0% | 200 | 172 | 32 | 5 | 2 | 2 | 21 | 59 | 5 | 3 | 1 | 188 | 295 | 276 | 571 | 88 | 269 | 30 | 10 | 267 | 67 | -8 | +0 | +0 | +4 | +4 | 0.0 |
| ▸ Career projection (2028+) — MLB context, MLB playing time (PA × MLB%) | |||||||||||||||||||||||||||||||
| 2028 | 27 | MLB MLE | LAA | 26% | 73 | 63 | 13 | 2 | 1 | 1 | 8 | 21 | 2 | 1 | 0 | 190 | 295 | 281 | 576 | 90 | 269 | 29 | 11 | 269 | 68 | -3 | +0 | +0 | +1 | +2 | 0.0 |
| 2029 | 28 | MLB MLE | LAA | 39% | 129 | 112 | 21 | 4 | 1 | 1 | 13 | 37 | 3 | 2 | 1 | 191 | 294 | 282 | 577 | 91 | 269 | 29 | 10 | 269 | 68 | -5 | +0 | -1 | +2 | +3 | -0.1 |
| 2028 | 27 | MLB CTX | LAA | 26% | 19 | 17 | 3 | 1 | 0 | 0 | 2 | 6 | 0 | 0 | 0 | 189 | 294 | 279 | 573 | 89 | 267 | 32 | 11 | 267 | 68 | -1 | +0 | +0 | +0 | +0 | 0.0 |
| 2029 | 28 | MLB CTX | LAA | 39% | 51 | 45 | 8 | 1 | 0 | 1 | 5 | 15 | 1 | 1 | 0 | 190 | 293 | 280 | 574 | 90 | 267 | 29 | 10 | 268 | 68 | -2 | +0 | -0 | +1 | +1 | -0.0 |
| ▸ Career Totals | |||||||||||||||||||||||||||||||
| ▸ Career totals — MLB only (actual + projected) | |||||||||||||||||||||||||||||||
| Career | — | A+C | — | 70 | 62 | 11 | 2 | 0 | 1 | 7 | 21 | 1 | 1 | 0 | 177 | 271 | 258 | 529 | 81 | 250 | 30 | 10 | 268 | 60 | -3 | +0 | -0 | +1 | +2 | 0.0 | |
| / 162G | — | A+C | — | 650 | 576 | 102 | 19 | 0 | 9 | 65 | 195 | 9 | 9 | 0 | 177 | 271 | 257 | 528 | 80 | 250 | 30 | 10 | 268 | 60 | -25 | +2 | -3 | +12 | +14 | 0.0 | |
| Career | — | MLE | — | 1045 | 893 | 169 | 28 | 10 | 10 | 103 | 301 | 29 | 31 | 8 | 189 | 294 | 277 | 570 | 87 | 270 | 29 | 10 | 257 | 60 | -10 | +0 | -1 | +4 | +5 | 0.0 | |
| / 162G | — | MLE | — | 650 | 555 | 104 | 17 | 6 | 6 | 64 | 187 | 18 | 19 | 5 | 187 | 292 | 272 | 564 | 85 | 268 | 29 | 10 | 257 | 60 | -25 | +1 | -2 | +12 | +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 A+Tri-City Dust Devils · 146 PAwOBA .299 → .233 (−66)K% 24.0% → 32.4%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 23.97% | ÷1.000 | ×1.350 | — | — | 32.36% |
| BB% (unintentional) /PA | 17.12% | ÷1.000 | ×0.710 | — | ×0.978 | 11.89% |
| HBP% /PA | 4.11% | — | ×0.810 | — | ×0.978 | 3.26% |
| Singles /BIP | 22.37% | ÷1.000 | ×0.910 | ×0.965 | ×0.978 | 19.21% |
| Doubles /BIP | 1.32% | ÷1.000 | ×0.830 | ×0.965 | ×0.978 | 1.03% |
| Triples /BIP | 1.32% | ÷1.000 | ×0.820 | ×0.965 | ×0.978 | 1.02% |
| Home runs /BIP | 2.63% | ÷1.000 | ×0.830 | — | ×0.978 | 2.14% |
Factors used: level-wide A+ factors (no league-specific row for this league/era). Park (home-season share, regressed): no park row on file (treated as neutral) — applied at half strength. Age: age 25 vs a level average of 22.8 → −2.2% on BB/HBP/hit rates (2.2 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.965.
Result: wOBA .299 → .233; ISO .081 → .065; BABIP .253 → .214. 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 AInland Empire 66ers · 349 PAwOBA .335 → .263 (−73)K% 18.1% → 24.3%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 18.05% | ÷1.008 | ×1.360 | — | — | 24.34% |
| BB% (unintentional) /PA | 17.19% | ÷1.011 | ×0.690 | — | ×0.980 | 11.50% |
| HBP% /PA | 2.87% | — | ×0.780 | — | ×0.980 | 2.19% |
| Singles /BIP | 18.27% | ÷1.066 | ×0.920 | ×0.997 | ×0.980 | 15.40% |
| Doubles /BIP | 5.77% | ÷1.065 | ×0.830 | ×0.997 | ×0.980 | 4.39% |
| Triples /BIP | 3.37% | ÷0.997 | ×0.910 | ×0.997 | ×0.980 | 3.00% |
| Home runs /BIP | 1.92% | ÷1.036 | ×0.800 | — | ×0.980 | 1.45% |
Factors used: level-wide A factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 107, 1B 113, 2B 113, 3B 99, K 102, BB 102 — applied at half strength. Age: age 24 vs a level average of 22.0 → −2.0% on BB/HBP/hit rates (2.0 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.997.
Result: wOBA .335 → .263; ISO .140 → .118; BABIP .275 → .228. 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 A+Tri-City Dust Devils · 282 PAwOBA .296 → .250 (−46)K% 23.8% → 31.5%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 23.76% | ÷1.018 | ×1.350 | — | — | 31.49% |
| BB% (unintentional) /PA | 9.93% | ÷1.018 | ×0.710 | — | ×0.998 | 6.91% |
| HBP% /PA | 2.48% | — | ×0.810 | — | ×0.998 | 2.01% |
| Singles /BIP | 25.43% | ÷0.969 | ×0.910 | ×1.013 | ×0.998 | 24.16% |
| Doubles /BIP | 5.78% | ÷0.950 | ×0.830 | ×1.013 | ×0.998 | 5.10% |
| Triples /BIP | 0.58% | ÷1.150 | ×0.820 | ×1.013 | ×0.998 | 0.42% |
| Home runs /BIP | 1.73% | ÷0.916 | ×0.830 | — | ×0.998 | 1.57% |
Factors used: level-wide A+ factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 83, 1B 94, 2B 90, 3B 130, K 104, BB 104 — applied at half strength. Age: age 23 vs a level average of 22.8 → −0.2% on BB/HBP/hit rates (0.2 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×1.013.
Result: wOBA .296 → .250; ISO .087 → .075; BABIP .322 → .300. 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 A+Tri-City Dust Devils · 19 PAwOBA .323 → .267 (−56)K% 31.6% → 40.5%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 31.58% | ÷1.053 | ×1.350 | — | — | 40.50% |
| BB% (unintentional) /PA | 10.53% | ÷1.030 | ×0.710 | — | ×1.012 | 7.34% |
| HBP% /PA | 0.00% | — | ×0.810 | — | ×1.012 | 0.00% |
| Singles /BIP | 36.36% | ÷0.957 | ×0.910 | — | ×1.012 | 35.01% |
| Doubles /BIP | 9.09% | ÷0.891 | ×0.830 | — | ×1.012 | 8.57% |
| Triples /BIP | 0.00% | ÷1.150 | ×0.820 | — | ×1.012 | 0.00% |
| Home runs /BIP | 0.00% | ÷0.990 | ×0.830 | — | ×1.012 | 0.00% |
Factors used: level-wide A+ factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 98, 1B 91, 2B 78, 3B 130, K 111, BB 106 — applied at half strength. Age: age 22 vs a level average of 22.8 → +1.2% on BB/HBP/hit rates (0.8 yr younger than average).
Result: wOBA .323 → .267; ISO .059 → .050; BABIP .455 → .436. 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).