A.J. Kennedy
| Year | Age | Lvl / Team | PA | AVG/OBP/SLG | HR | SB | wRC+ | WAR | MLE AVG/OBP/SLG |
|---|---|---|---|---|---|---|---|---|---|
| 2017 | 23 | AA/ASD | 260 | .109/.168/.180 | 4 | 2 | -37 | — | .078/.121/.131 |
| 2018 | 24 | AAA/A+SD | 125 | .185/.218/.294 | 2 | 0 | -8 | — | .134/.161/.225 |
| 2019 | 25 | AAA/AA2 orgs | 101 | .160/.210/.362 | 5 | 0 | -5 | — | .115/.150/.239 |
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 | 22 | AA | San Antonio Missions | — | 36 | 31 | 5 | 0 | 0 | 0 | 4 | 12 | 0 | 0 | 2 | 161 | 257 | 161 | 418 | 250 | 33 | 11 | 203 | 3 | — | — | — | — | — | — | |
| 2016 | 22 | A+ | Lake Elsinore Storm | — | 202 | 186 | 42 | 11 | 0 | 1 | 10 | 52 | 3 | 0 | 2 | 226 | 276 | 301 | 577 | 75 | 304 | 26 | 5 | 260 | 19 | — | — | — | — | — | — |
| 2016 | 22 | A | Fort Wayne TinCaps | — | 48 | 43 | 10 | 3 | 0 | 0 | 4 | 9 | 0 | 0 | 2 | 233 | 298 | 302 | 600 | 70 | 294 | 19 | 8 | 270 | 24 | — | — | — | — | — | — |
| 2017 | 23 | AA | San Antonio Missions | — | 111 | 101 | 7 | 1 | 0 | 2 | 5 | 36 | 3 | 1 | 0 | 69 | 138 | 139 | 276 | 69 | 78 | 32 | 5 | 133 | -46 | — | — | — | — | — | — |
| 2017 | 23 | A | Fort Wayne TinCaps | — | 149 | 138 | 19 | 4 | 0 | 2 | 5 | 52 | 4 | 1 | 0 | 138 | 190 | 210 | 401 | 72 | 200 | 35 | 3 | 185 | -31 | — | — | — | — | — | — |
| 2018 | 24 | AAA | El Paso Chihuahuas | — | 47 | 46 | 7 | 3 | 0 | 1 | 0 | 19 | 0 | 0 | 0 | 152 | 152 | 283 | 435 | 130 | 222 | 40 | 0 | 184 | -31 | — | — | — | — | — | — |
| 2018 | 24 | A+ | Lake Elsinore Storm | — | 78 | 73 | 15 | 4 | 0 | 1 | 4 | 22 | 1 | 0 | 0 | 205 | 256 | 301 | 558 | 96 | 280 | 28 | 5 | 254 | 6 | — | — | — | — | — | — |
| 2019 | 25 | AAA | El Paso Chihuahuas | — | 34 | 33 | 5 | 1 | 0 | 3 | 1 | 14 | 0 | 0 | 0 | 152 | 176 | 455 | 631 | 303 | 125 | 41 | 3 | 269 | 1 | — | — | — | — | — | — |
| 2019 | 25 | AA | Amarillo Sod Poodles | — | 67 | 61 | 10 | 3 | 0 | 2 | 5 | 25 | 0 | 0 | 0 | 164 | 227 | 311 | 539 | 148 | 235 | 37 | 7 | 239 | -8 | — | — | — | — | — | — |
| ▸ Career — adjusted (every ACTUAL line translated to park/league-neutral MLB equivalents) | |||||||||||||||||||||||||||||||
| 2016 | 22 | AA MLE | San Antonio Missions | — | 36 | 32 | 5 | 0 | 0 | 0 | 3 | 14 | 0 | 0 | 2 | 156 | 229 | 156 | 385 | 236 | 39 | 8 | 173 | 3 | — | — | — | — | — | — | |
| 2016 | 22 | A+ MLE | Lake Elsinore Storm | — | 202 | 189 | 33 | 8 | 0 | 1 | 7 | 68 | 3 | 0 | 2 | 175 | 216 | 233 | 449 | 58 | 256 | 34 | 3 | 197 | 19 | — | — | — | — | — | — |
| 2016 | 22 | A MLE | Fort Wayne TinCaps | — | 48 | 44 | 8 | 2 | 0 | 0 | 3 | 12 | 0 | 0 | 2 | 182 | 234 | 227 | 461 | 45 | 246 | 25 | 6 | 203 | 24 | — | — | — | — | — | — |
| 2017 | 23 | AA MLE | San Antonio Missions | — | 111 | 104 | 6 | 1 | 0 | 2 | 2 | 44 | 3 | 1 | 0 | 58 | 101 | 125 | 226 | 67 | 69 | 40 | 2 | 100 | -46 | — | — | — | — | — | — |
| 2017 | 23 | A MLE | Fort Wayne TinCaps | — | 149 | 140 | 13 | 3 | 0 | 1 | 3 | 73 | 4 | 1 | 0 | 93 | 136 | 136 | 272 | 43 | 170 | 49 | 2 | 122 | -31 | — | — | — | — | — | — |
| 2018 | 24 | AAA MLE | El Paso Chihuahuas | — | 47 | 46 | 5 | 2 | 0 | 1 | 0 | 25 | 0 | 0 | 0 | 109 | 109 | 217 | 326 | 109 | 185 | 53 | 0 | 122 | -31 | — | — | — | — | — | — |
| 2018 | 24 | A+ MLE | Lake Elsinore Storm | — | 78 | 74 | 11 | 3 | 0 | 1 | 3 | 30 | 1 | 0 | 0 | 149 | 192 | 230 | 422 | 81 | 227 | 38 | 4 | 177 | 6 | — | — | — | — | — | — |
| 2019 | 25 | AAA MLE | El Paso Chihuahuas | — | 34 | 33 | 4 | 1 | 0 | 2 | 1 | 19 | 0 | 0 | 0 | 121 | 147 | 333 | 480 | 212 | 103 | 56 | 3 | 170 | 1 | — | — | — | — | — | — |
| 2019 | 25 | AA MLE | Amarillo Sod Poodles | — | 67 | 63 | 7 | 2 | 0 | 1 | 3 | 32 | 0 | 0 | 0 | 111 | 152 | 190 | 342 | 79 | 196 | 48 | 4 | 156 | -8 | — | — | — | — | — | — |
| 2016 | 22 | A+ MLE | 3 teams | — | 286 | 266 | 46 | 10 | 0 | 1 | 12 | 95 | 3 | 0 | 6 | 173 | 217 | 222 | 439 | 49 | 260 | 33 | 4 | 195 | 18 | — | — | — | — | — | — |
| 2016 | 22 | A+ RAW | 3 teams | — | 286 | 260 | 57 | 14 | 0 | 1 | 18 | 73 | 3 | 0 | 6 | 219 | 278 | 285 | 562 | 65 | 296 | 26 | 6 | 255 | 18 | — | — | — | — | — | — |
| 2017 | 23 | A MLE | 2 teams | — | 260 | 244 | 19 | 3 | 0 | 3 | 5 | 117 | 7 | 2 | 0 | 78 | 121 | 127 | 248 | 49 | 127 | 45 | 2 | 113 | -38 | — | — | — | — | — | — |
| 2017 | 23 | A RAW | 2 teams | — | 260 | 239 | 26 | 5 | 0 | 4 | 10 | 88 | 7 | 2 | 0 | 109 | 168 | 180 | 348 | 71 | 148 | 34 | 4 | 163 | -38 | — | — | — | — | — | — |
| 2018 | 24 | A+ MLE | 2 teams | — | 125 | 120 | 15 | 4 | 0 | 2 | 3 | 55 | 1 | 0 | 0 | 125 | 153 | 208 | 362 | 83 | 203 | 44 | 2 | 156 | -8 | — | — | — | — | — | — |
| 2018 | 24 | A+ RAW | 2 teams | — | 125 | 119 | 22 | 7 | 0 | 2 | 4 | 41 | 1 | 0 | 0 | 185 | 218 | 294 | 512 | 109 | 260 | 33 | 3 | 228 | -8 | — | — | — | — | — | — |
| 2019 | 25 | AA MLE | 2 teams | — | 101 | 96 | 11 | 3 | 0 | 3 | 4 | 51 | 0 | 0 | 0 | 115 | 150 | 240 | 390 | 125 | 190 | 50 | 4 | 161 | -5 | — | — | — | — | — | — |
| 2019 | 25 | AA RAW | 2 teams | — | 101 | 94 | 15 | 4 | 0 | 5 | 6 | 39 | 0 | 0 | 0 | 160 | 210 | 362 | 572 | 202 | 200 | 39 | 6 | 249 | -5 | — | — | — | — | — | — |
| 2016 | 22 | A+ MLE | 3 teams | — | 286 | 269 | 46 | 10 | 0 | 1 | 12 | 95 | 3 | 0 | 6 | 171 | 217 | 219 | 436 | 48 | 252 | 33 | 4 | 195 | 18 | — | — | — | — | — | — |
| 2017 | 23 | A MLE | 2 teams | — | 260 | 246 | 19 | 3 | 0 | 3 | 5 | 117 | 7 | 2 | 0 | 77 | 121 | 126 | 247 | 49 | 127 | 45 | 2 | 113 | -38 | — | — | — | — | — | — |
| 2018 | 24 | A+ MLE | 2 teams | — | 125 | 120 | 15 | 4 | 0 | 2 | 3 | 55 | 1 | 0 | 0 | 125 | 153 | 208 | 362 | 83 | 211 | 44 | 2 | 156 | -8 | — | — | — | — | — | — |
| 2019 | 25 | AA MLE | 2 teams | — | 101 | 96 | 11 | 3 | 0 | 3 | 4 | 51 | 0 | 0 | 0 | 115 | 150 | 240 | 390 | 125 | 165 | 50 | 4 | 161 | -5 | — | — | — | — | — | — |
| ▸ Career Totals | |||||||||||||||||||||||||||||||
| Career | — | MLE | — | 772 | 726 | 91 | 20 | 0 | 9 | 24 | 318 | 11 | 2 | 6 | 125 | 166 | 190 | 356 | 65 | 202 | 41 | 3 | 156 | -8 | -99 | -2 | +0 | +14 | +17 | -7.2 | |
| / 162G | — | MLE | — | 650 | 611 | 77 | 17 | 0 | 8 | 20 | 268 | 9 | 2 | 5 | 126 | 165 | 193 | 358 | 67 | 203 | 41 | 3 | 156 | -8 | -83 | -2 | +0 | +12 | +14 | -6.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.
2019 AAAmarillo Sod Poodles · 67 PAwOBA .233 → .156 (−77)K% 37.3% → 47.7%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 37.31% | ÷0.955 | ×1.220 | — | — | 47.67% |
| BB% (unintentional) /PA | 7.46% | ÷1.037 | ×0.700 | — | ×0.998 | 5.03% |
| HBP% /PA | 0.00% | — | ×0.870 | — | ×0.998 | 0.00% |
| Singles /BIP | 13.89% | ÷1.014 | ×0.920 | — | ×0.998 | 12.58% |
| Doubles /BIP | 8.33% | ÷1.097 | ×0.840 | — | ×0.998 | 6.37% |
| Triples /BIP | 0.00% | ÷1.079 | ×0.940 | — | ×0.998 | 0.00% |
| Home runs /BIP | 5.56% | ÷1.337 | ×0.800 | — | ×0.998 | 3.32% |
Factors used: league row TL. Park (home-season share, regressed): HR 167, 1B 103, 2B 119, 3B 116, K 91, BB 107 — 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).
Result: wOBA .233 → .156; ISO .148 → .085; BABIP .235 → .196. 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 AAAEl Paso Chihuahuas · 34 PAwOBA .260 → .170 (−90)K% 41.2% → 55.0%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 41.18% | ÷0.965 | ×1.290 | — | — | 55.03% |
| BB% (unintentional) /PA | 2.94% | ÷1.050 | ×0.710 | — | ×1.033 | 2.05% |
| HBP% /PA | 0.00% | — | ×0.980 | — | ×1.033 | 0.00% |
| Singles /BIP | 5.26% | ÷1.033 | ×0.900 | — | ×1.033 | 4.74% |
| Doubles /BIP | 5.26% | ÷1.044 | ×0.810 | — | ×1.033 | 4.22% |
| Triples /BIP | 0.00% | ÷0.900 | ×0.810 | — | ×1.033 | 0.00% |
| Home runs /BIP | 15.79% | ÷0.950 | ×0.780 | — | ×1.033 | 13.39% |
Factors used: league row PCL. Park (home-season share, regressed): HR 90, 1B 107, 2B 109, 3B 80, K 93, BB 110 — applied at half strength. Age: age 25 vs a level average of 27.2 → +3.3% on BB/HBP/hit rates (2.2 yr younger than average).
Result: wOBA .260 → .170; ISO .303 → .196; BABIP .125 → .103. 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+Lake Elsinore Storm · 78 PAwOBA .247 → .177 (−70)K% 28.2% → 39.1%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 28.21% | ÷0.966 | ×1.340 | — | — | 39.13% |
| BB% (unintentional) /PA | 5.13% | ÷1.087 | ×0.710 | — | ×0.988 | 3.31% |
| HBP% /PA | 1.28% | — | ×0.790 | — | ×0.988 | 1.00% |
| Singles /BIP | 19.61% | ÷1.020 | ×0.910 | ×0.950 | ×0.988 | 16.41% |
| Doubles /BIP | 7.84% | ÷1.038 | ×0.820 | ×0.950 | ×0.988 | 5.81% |
| Triples /BIP | 0.00% | ÷0.900 | ×0.760 | ×0.950 | ×0.988 | 0.00% |
| Home runs /BIP | 1.96% | ÷0.839 | ×0.920 | — | ×0.988 | 2.12% |
Factors used: league row CAL. Park (home-season share, regressed): HR 68, 1B 104, 2B 108, 3B 80, K 93, BB 117 — applied at half strength. Age: age 24 vs a level average of 22.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 .247 → .177; ISO .096 → .074; BABIP .280 → .227. 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 AAAEl Paso Chihuahuas · 47 PAwOBA .182 → .122 (−60)K% 40.4% → 53.1%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 40.43% | ÷0.983 | ×1.290 | — | — | 53.06% |
| BB% (unintentional) /PA | 0.00% | ÷0.986 | ×0.710 | — | ×1.048 | 0.00% |
| HBP% /PA | 0.00% | — | ×0.980 | — | ×1.048 | 0.00% |
| Singles /BIP | 11.11% | ÷1.032 | ×0.900 | — | ×1.048 | 10.16% |
| Doubles /BIP | 11.11% | ÷1.098 | ×0.810 | — | ×1.048 | 8.59% |
| Triples /BIP | 0.00% | ÷1.150 | ×0.810 | — | ×1.048 | 0.00% |
| Home runs /BIP | 3.70% | ÷1.045 | ×0.780 | — | ×1.048 | 2.90% |
Factors used: league row PCL. Park (home-season share, regressed): HR 109, 1B 106, 2B 120, 3B 130, K 97, BB 97 — applied at half strength. Age: age 24 vs a level average of 27.2 → +4.8% on BB/HBP/hit rates (3.2 yr younger than average).
Result: wOBA .182 → .122; ISO .130 → .083; BABIP .222 → .185. 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 AFort Wayne TinCaps · 149 PAwOBA .181 → .122 (−58)K% 34.9% → 49.0%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 34.90% | ÷0.968 | ×1.360 | — | — | 49.04% |
| BB% (unintentional) /PA | 3.36% | ÷1.107 | ×0.690 | — | ×0.990 | 2.07% |
| HBP% /PA | 2.68% | — | ×0.780 | — | ×0.990 | 2.07% |
| Singles /BIP | 15.12% | ÷0.985 | ×0.920 | ×0.950 | ×0.990 | 13.28% |
| Doubles /BIP | 4.65% | ÷1.002 | ×0.830 | ×0.950 | ×0.990 | 3.62% |
| Triples /BIP | 0.00% | ÷1.150 | ×0.910 | ×0.950 | ×0.990 | 0.00% |
| Home runs /BIP | 2.33% | ÷1.048 | ×0.800 | — | ×0.990 | 1.76% |
Factors used: level-wide A factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 110, 1B 97, 2B 100, 3B 130, K 94, BB 121 — applied at half strength. Age: age 23 vs a level average of 22.0 → −1.0% on BB/HBP/hit rates (1.0 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.950.
Result: wOBA .181 → .122; ISO .072 → .045; BABIP .200 → .170. 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 AASan Antonio Missions · 111 PAwOBA .120 → .100 (−20)K% 32.4% → 39.6%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 32.43% | ÷1.000 | ×1.220 | — | — | 39.57% |
| BB% (unintentional) /PA | 2.70% | ÷0.994 | ×0.700 | — | ×1.027 | 1.95% |
| HBP% /PA | 2.70% | — | ×0.870 | — | ×1.027 | 2.41% |
| Singles /BIP | 6.15% | ÷0.996 | ×0.920 | ×0.958 | ×1.027 | 5.59% |
| Doubles /BIP | 1.54% | ÷0.992 | ×0.840 | ×0.958 | ×1.027 | 1.28% |
| Triples /BIP | 0.00% | ÷0.900 | ×0.940 | ×0.958 | ×1.027 | 0.00% |
| Home runs /BIP | 3.08% | ÷0.940 | ×0.800 | — | ×1.027 | 2.69% |
Factors used: league row TL. Park (home-season share, regressed): HR 88, 1B 99, 2B 98, 3B 80, K 100, BB 99 — applied at half strength. Age: age 23 vs a level average of 24.8 → +2.7% on BB/HBP/hit rates (1.8 yr younger than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.958.
Result: wOBA .120 → .100; ISO .069 → .058; BABIP .078 → .069. 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 A+Lake Elsinore Storm · 202 PAwOBA .256 → .197 (−59)K% 25.7% → 33.9%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 25.74% | ÷1.016 | ×1.340 | — | — | 33.94% |
| BB% (unintentional) /PA | 4.95% | ÷1.036 | ×0.710 | — | ×1.012 | 3.43% |
| HBP% /PA | 1.49% | — | ×0.790 | — | ×1.012 | 1.19% |
| Singles /BIP | 22.39% | ÷0.999 | ×0.910 | ×0.950 | ×1.012 | 19.61% |
| Doubles /BIP | 8.21% | ÷1.036 | ×0.820 | ×0.950 | ×1.012 | 6.25% |
| Triples /BIP | 0.00% | ÷0.969 | ×0.760 | ×0.950 | ×1.012 | 0.00% |
| Home runs /BIP | 0.75% | ÷0.925 | ×0.920 | — | ×1.012 | 0.75% |
Factors used: league row CAL. Park (home-season share, regressed): HR 85, 1B 100, 2B 107, 3B 94, K 103, BB 107 — 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). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.950.
Result: wOBA .256 → .197; ISO .075 → .057; BABIP .304 → .256. 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 AFort Wayne TinCaps · 48 PAwOBA .264 → .203 (−61)K% 18.8% → 26.0%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 18.75% | ÷0.981 | ×1.360 | — | — | 25.98% |
| BB% (unintentional) /PA | 8.33% | ÷1.032 | ×0.690 | — | — | 5.57% |
| HBP% /PA | 0.00% | — | ×0.780 | — | — | 0.00% |
| Singles /BIP | 20.59% | ÷1.045 | ×0.920 | — | — | 18.12% |
| Doubles /BIP | 8.82% | ÷1.124 | ×0.830 | — | — | 6.52% |
| Triples /BIP | 0.00% | ÷1.150 | ×0.910 | — | — | 0.00% |
| Home runs /BIP | 0.00% | ÷0.888 | ×0.800 | — | — | 0.00% |
Factors used: level-wide A factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 78, 1B 109, 2B 125, 3B 130, K 96, BB 106 — 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).
Result: wOBA .264 → .203; ISO .070 → .050; BABIP .294 → .246. 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).