Michael Cruz
| Year | Age | Lvl / Team | PA | AVG/OBP/SLG | HR | SB | wRC+ | WAR | MLE AVG/OBP/SLG |
|---|---|---|---|---|---|---|---|---|---|
| 2018 | 22 | A+/ACHC | 352 | .232/.299/.425 | 12 | 1 | 63 | — | .194/.247/.354 |
| 2019 | 23 | A+SEA | 90 | .296/.352/.481 | 3 | 0 | 90 | — | .253/.295/.422 |
| 2021 | 25 | AA/INTL2 orgs | 241 | .200/.314/.356 | 9 | 0 | 47 | — | .172/.267/.274 |
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) | |||||||||||||||||||||||||||||||
| 2016 | 20 | ROK | AZL Cubs | — | 163 | 130 | 31 | 6 | 0 | 2 | 20 | 23 | 9 | 1 | 0 | 238 | 377 | 331 | 708 | 92 | 269 | 14 | 12 | 327 | 49 | — | — | — | — | — | — |
| 2017 | 21 | A | South Bend Cubs | — | 84 | 70 | 13 | 4 | 0 | 1 | 11 | 13 | 2 | 0 | 0 | 186 | 313 | 286 | 599 | 100 | 211 | 15 | 13 | 281 | 38 | — | — | — | — | — | — |
| 2018 | 22 | A+ | Myrtle Beach Pelicans | — | 42 | 39 | 5 | 1 | 0 | 1 | 1 | 9 | 1 | 0 | 0 | 128 | 171 | 231 | 402 | 103 | 133 | 21 | 2 | 179 | -14 | — | — | — | — | — | — |
| 2018 | 22 | A | South Bend Cubs | — | 310 | 276 | 68 | 24 | 0 | 11 | 25 | 33 | 4 | 1 | 0 | 246 | 316 | 453 | 769 | 207 | 243 | 11 | 8 | 335 | 73 | — | — | — | — | — | — |
| 2019 | 23 | A+ | Inland Empire 66ers | — | 90 | 81 | 24 | 6 | 0 | 3 | 6 | 18 | 1 | 0 | 1 | 296 | 352 | 481 | 834 | 185 | 339 | 20 | 7 | 360 | 90 | — | — | — | — | — | — |
| 2021 | 25 | AA | Rocket City Trash Pandas | — | 211 | 179 | 39 | 5 | 0 | 9 | 20 | 60 | 11 | 0 | 0 | 218 | 333 | 397 | 730 | 179 | 270 | 28 | 9 | 331 | 57 | — | — | — | — | — | — |
| 2021 | 25 | INTL | RA12 | — | 30 | 26 | 2 | 0 | 0 | 0 | 2 | 14 | 1 | 0 | 0 | 77 | 172 | 77 | 249 | 167 | 47 | 7 | 131 | -25 | — | — | — | — | — | — | |
| ▸ Career — adjusted (every ACTUAL line translated to park/league-neutral MLB equivalents) | |||||||||||||||||||||||||||||||
| 2016 | 20 | ROK MLE | AZL Cubs | — | 163 | 138 | 25 | 4 | 0 | 2 | 12 | 33 | 9 | 1 | 0 | 181 | 289 | 254 | 543 | 72 | 206 | 20 | 7 | 240 | 49 | — | — | — | — | — | — |
| 2017 | 21 | A MLE | South Bend Cubs | — | 84 | 73 | 11 | 3 | 0 | 1 | 8 | 17 | 2 | 0 | 0 | 151 | 253 | 233 | 486 | 82 | 181 | 20 | 10 | 224 | 38 | — | — | — | — | — | — |
| 2018 | 22 | A+ MLE | Myrtle Beach Pelicans | — | 42 | 39 | 4 | 1 | 0 | 1 | 1 | 13 | 1 | 0 | 0 | 103 | 146 | 205 | 351 | 103 | 118 | 31 | 2 | 147 | -14 | — | — | — | — | — | — |
| 2018 | 22 | A MLE | South Bend Cubs | — | 310 | 286 | 59 | 18 | 0 | 10 | 17 | 45 | 4 | 1 | 0 | 206 | 261 | 374 | 635 | 168 | 208 | 15 | 5 | 276 | 73 | — | — | — | — | — | — |
| 2019 | 23 | A+ MLE | Inland Empire 66ers | — | 90 | 83 | 21 | 5 | 0 | 3 | 4 | 24 | 1 | 0 | 1 | 253 | 295 | 422 | 717 | 169 | 294 | 27 | 4 | 301 | 90 | — | — | — | — | — | — |
| 2021 | 25 | AA MLE | Rocket City Trash Pandas | — | 211 | 186 | 32 | 4 | 0 | 5 | 13 | 72 | 11 | 0 | 0 | 172 | 267 | 274 | 541 | 102 | 245 | 34 | 6 | 252 | 57 | — | — | — | — | — | — |
| 2016 | 20 | ROK MLE | AZL Cubs | — | 163 | 138 | 25 | 4 | 0 | 2 | 12 | 33 | 9 | 1 | 0 | 181 | 289 | 254 | 543 | 72 | 217 | 20 | 7 | 240 | 49 | — | — | — | — | — | — |
| 2016 | 20 | ROK RAW | AZL Cubs | — | 163 | 130 | 31 | 6 | 0 | 2 | 20 | 23 | 9 | 1 | 0 | 238 | 377 | 331 | 708 | 92 | 269 | 14 | 12 | 327 | 49 | — | — | — | — | — | — |
| 2017 | 21 | A MLE | South Bend Cubs | — | 84 | 73 | 11 | 3 | 0 | 1 | 8 | 17 | 2 | 0 | 0 | 151 | 253 | 233 | 486 | 82 | 179 | 20 | 10 | 224 | 38 | — | — | — | — | — | — |
| 2017 | 21 | A RAW | South Bend Cubs | — | 84 | 70 | 13 | 4 | 0 | 1 | 11 | 13 | 2 | 0 | 0 | 186 | 313 | 286 | 599 | 100 | 211 | 15 | 13 | 281 | 38 | — | — | — | — | — | — |
| 2018 | 22 | A MLE | 2 teams | — | 352 | 325 | 64 | 19 | 0 | 11 | 18 | 58 | 5 | 1 | 0 | 197 | 250 | 357 | 607 | 160 | 204 | 16 | 5 | 261 | 63 | — | — | — | — | — | — |
| 2018 | 22 | A RAW | 2 teams | — | 352 | 315 | 73 | 25 | 0 | 12 | 26 | 42 | 5 | 1 | 0 | 232 | 299 | 425 | 724 | 194 | 230 | 12 | 7 | 317 | 63 | — | — | — | — | — | — |
| 2019 | 23 | A+ MLE | Inland Empire 66ers | — | 90 | 83 | 21 | 5 | 0 | 3 | 4 | 24 | 1 | 0 | 1 | 253 | 295 | 422 | 717 | 169 | 310 | 27 | 4 | 301 | 90 | — | — | — | — | — | — |
| 2019 | 23 | A+ RAW | Inland Empire 66ers | — | 90 | 81 | 24 | 6 | 0 | 3 | 6 | 18 | 1 | 0 | 1 | 296 | 352 | 481 | 834 | 185 | 339 | 20 | 7 | 360 | 90 | — | — | — | — | — | — |
| 2021 | 25 | AA MLE | 2 teams | — | 241 | 212 | 37 | 5 | 0 | 6 | 15 | 82 | 12 | 0 | 0 | 175 | 268 | 283 | 551 | 108 | 248 | 34 | 6 | 252 | 57 | — | — | — | — | — | — |
| 2021 | 25 | AA RAW | 2 teams | — | 241 | 205 | 41 | 5 | 0 | 9 | 22 | 74 | 12 | 0 | 0 | 200 | 314 | 356 | 670 | 156 | 260 | 31 | 9 | 306 | 57 | — | — | — | — | — | — |
| 2016 | 20 | ROK MLE | AZL Cubs | — | 163 | 141 | 25 | 4 | 0 | 2 | 12 | 33 | 9 | 1 | 0 | 177 | 289 | 248 | 538 | 71 | 206 | 20 | 7 | 240 | 49 | — | — | — | — | — | — |
| 2017 | 21 | A MLE | South Bend Cubs | — | 84 | 74 | 11 | 3 | 0 | 1 | 8 | 17 | 2 | 0 | 0 | 149 | 253 | 230 | 483 | 81 | 181 | 20 | 10 | 224 | 38 | — | — | — | — | — | — |
| 2018 | 22 | A MLE | 2 teams | — | 352 | 326 | 64 | 19 | 0 | 11 | 18 | 58 | 5 | 1 | 0 | 196 | 250 | 356 | 606 | 160 | 197 | 16 | 5 | 261 | 63 | — | — | — | — | — | — |
| 2019 | 23 | A+ MLE | Inland Empire 66ers | — | 90 | 85 | 21 | 5 | 0 | 3 | 4 | 24 | 1 | 0 | 1 | 247 | 295 | 412 | 707 | 165 | 294 | 27 | 4 | 301 | 90 | — | — | — | — | — | — |
| 2021 | 25 | AA MLE | 2 teams | — | 241 | 212 | 37 | 5 | 0 | 6 | 15 | 82 | 12 | 0 | 0 | 175 | 268 | 283 | 551 | 108 | 245 | 34 | 6 | 252 | 57 | — | — | — | — | — | — |
| ▸ Career Totals | |||||||||||||||||||||||||||||||
| Career | — | MLE | — | 930 | 831 | 158 | 36 | 0 | 23 | 57 | 214 | 29 | 2 | 1 | 190 | 266 | 316 | 583 | 126 | 223 | 23 | 6 | 255 | 59 | -45 | +0 | +0 | +17 | +20 | -0.9 | |
| / 162G | — | MLE | — | 650 | 581 | 110 | 25 | 0 | 16 | 40 | 150 | 20 | 1 | 1 | 189 | 265 | 315 | 580 | 126 | 222 | 23 | 6 | 255 | 59 | -32 | -0 | +0 | +12 | +14 | -0.6 | |
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.
2021 AARocket City Trash Pandas · 211 PAwOBA .322 → .252 (−70)K% 28.4% → 34.1%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 28.44% | ÷1.018 | ×1.220 | — | — | 34.08% |
| BB% (unintentional) /PA | 9.00% | ÷0.992 | ×0.690 | — | ×0.998 | 6.25% |
| HBP% /PA | 5.21% | — | ×0.850 | — | ×0.998 | 4.42% |
| Singles /BIP | 21.01% | ÷0.985 | ×0.940 | ×0.988 | ×0.998 | 19.77% |
| Doubles /BIP | 4.20% | ÷0.947 | ×0.870 | ×0.988 | ×0.998 | 3.81% |
| Triples /BIP | 0.00% | ÷1.150 | ×0.920 | ×0.988 | ×0.998 | 0.00% |
| Home runs /BIP | 7.56% | ÷1.249 | ×0.780 | — | ×0.998 | 4.71% |
Factors used: level-wide AA factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 150, 1B 97, 2B 89, 3B 130, K 104, BB 98 — applied at half strength. Age: age 25 vs a level average of 24.8 → −0.2% on BB/HBP/hit rates (0.2 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.988.
Result: wOBA .322 → .252; ISO .179 → .117; BABIP .270 → .245. 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 A+Inland Empire 66ers · 90 PAwOBA .358 → .301 (−57)K% 20.0% → 26.9%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 20.00% | ÷0.997 | ×1.340 | — | — | 26.89% |
| BB% (unintentional) /PA | 6.67% | ÷0.968 | ×0.710 | — | ×0.998 | 4.88% |
| HBP% /PA | 1.11% | — | ×0.790 | — | ×0.998 | 0.88% |
| Singles /BIP | 23.81% | ÷1.024 | ×0.910 | — | ×0.998 | 21.13% |
| Doubles /BIP | 9.52% | ÷0.985 | ×0.820 | — | ×0.998 | 7.91% |
| Triples /BIP | 0.00% | ÷1.150 | ×0.760 | — | ×0.998 | 0.00% |
| Home runs /BIP | 4.76% | ÷0.939 | ×0.920 | — | ×0.998 | 4.66% |
Factors used: league row CAL. Park (home-season share, regressed): HR 88, 1B 105, 2B 97, 3B 130, K 99, BB 94 — 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).
Result: wOBA .358 → .301; ISO .185 → .164; BABIP .339 → .294. 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).
2018 ASouth Bend Cubs · 310 PAwOBA .328 → .276 (−52)K% 10.6% → 14.4%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 10.65% | ÷1.005 | ×1.360 | — | — | 14.41% |
| BB% (unintentional) /PA | 7.74% | ÷0.968 | ×0.690 | — | — | 5.52% |
| HBP% /PA | 1.29% | — | ×0.780 | — | — | 1.01% |
| Singles /BIP | 13.58% | ÷0.982 | ×0.920 | ×1.000 | — | 12.72% |
| Doubles /BIP | 9.88% | ÷1.092 | ×0.830 | ×1.000 | — | 7.51% |
| Triples /BIP | 0.00% | ÷1.000 | ×0.910 | ×1.000 | — | 0.00% |
| Home runs /BIP | 4.53% | ÷0.881 | ×0.800 | — | — | 4.11% |
Factors used: level-wide A factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 76, 1B 96, 2B 118, 3B 100, K 101, BB 94 — applied at half strength. Age: age 22 vs a level average of 22.0 → +0.0% on BB/HBP/hit rates (0.0 yr younger than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×1.000.
Result: wOBA .328 → .276; ISO .207 → .176; BABIP .243 → .208. 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).
2018 A+Myrtle Beach Pelicans · 42 PAwOBA .178 → .147 (−31)K% 21.4% → 30.8%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 21.43% | ÷0.987 | ×1.420 | — | — | 30.84% |
| BB% (unintentional) /PA | 2.38% | ÷1.032 | ×0.630 | — | ×1.012 | 1.47% |
| HBP% /PA | 2.38% | — | ×0.860 | — | ×1.012 | 2.07% |
| Singles /BIP | 10.00% | ÷1.078 | ×0.940 | — | ×1.012 | 8.82% |
| Doubles /BIP | 3.33% | ÷0.915 | ×0.830 | — | ×1.012 | 3.06% |
| Triples /BIP | 0.00% | ÷0.924 | ×0.800 | — | ×1.012 | 0.00% |
| Home runs /BIP | 3.33% | ÷0.933 | ×0.900 | — | ×1.012 | 3.26% |
Factors used: league row CAR. Park (home-season share, regressed): HR 87, 1B 116, 2B 83, 3B 85, K 97, 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 .178 → .147; ISO .103 → .091; BABIP .133 → .118. 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).
2017 ASouth Bend Cubs · 84 PAwOBA .278 → .224 (−54)K% 15.5% → 20.6%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 15.48% | ÷1.021 | ×1.360 | — | — | 20.61% |
| BB% (unintentional) /PA | 13.10% | ÷1.023 | ×0.690 | — | ×1.015 | 8.96% |
| HBP% /PA | 2.38% | — | ×0.780 | — | ×1.015 | 1.88% |
| Singles /BIP | 14.04% | ÷1.024 | ×0.920 | ×0.978 | ×1.015 | 12.51% |
| Doubles /BIP | 7.02% | ÷1.027 | ×0.830 | ×0.978 | ×1.015 | 5.63% |
| Triples /BIP | 0.00% | ÷1.004 | ×0.910 | ×0.978 | ×1.015 | 0.00% |
| Home runs /BIP | 1.75% | ÷0.869 | ×0.800 | — | ×1.015 | 1.64% |
Factors used: level-wide A factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 74, 1B 105, 2B 105, 3B 101, K 104, BB 105 — applied at half strength. Age: age 21 vs a level average of 22.0 → +1.5% on BB/HBP/hit rates (1.0 yr younger than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.978.
Result: wOBA .278 → .224; ISO .100 → .087; BABIP .211 → .181. 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).
2016 ROKAZL Cubs · 163 PAwOBA .325 → .240 (−85)K% 14.1% → 20.3%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 14.11% | ÷1.000 | ×1.440 | — | — | 20.32% |
| BB% (unintentional) /PA | 12.27% | ÷1.000 | ×0.620 | — | ×0.995 | 7.57% |
| HBP% /PA | 5.52% | — | ×0.720 | — | ×0.995 | 3.96% |
| Singles /BIP | 21.50% | ÷1.000 | ×0.820 | ×0.968 | ×0.995 | 16.98% |
| Doubles /BIP | 5.61% | ÷1.000 | ×0.720 | ×0.968 | ×0.995 | 3.89% |
| Triples /BIP | 0.00% | ÷1.000 | ×0.720 | ×0.968 | ×0.995 | 0.00% |
| Home runs /BIP | 1.87% | ÷1.000 | ×0.780 | — | ×0.995 | 1.45% |
Factors used: level-wide ROK 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 20 vs a level average of 19.5 → −0.5% on BB/HBP/hit rates (0.5 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.968.
Result: wOBA .325 → .240; ISO .092 → .070; BABIP .269 → .206. 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).
Not traceable per stint: some stints lack the counting stats the component translation needs. Level-wide factors that apply instead — .