Rio Foster
OF Tri-City Dust Devils| Year | Age | Lvl / Team | PA | AVG/OBP/SLG | HR | SB | wRC+ | WAR | MLE AVG/OBP/SLG |
|---|---|---|---|---|---|---|---|---|---|
| 2023 | 20 | ROKLAA | 25 | .174/.240/.174 | 0 | 0 | -37 | — | .083/.120/.083 |
| 2024 | 21 | A/ROK2 orgs | 318 | .301/.411/.477 | 6 | 16 | 73 | — | .211/.297/.328 |
| 2025 | 22 | A+LAA | 378 | .267/.410/.439 | 10 | 8 | 86 | — | .207/.327/.339 |
| 2027PROJMLE | 24 | MLBLAA | 380 | .222/.319/.353 | 8 | 7 | 93 | 0.1 | |
| 2028PROJ30% MLB | 25 | MLBLAA | 30 | .222/.319/.356 | 1 | 1 | 94 | 0.0 | |
| 2029PROJ44% MLB | 26 | MLBLAA | 72 | .223/.318/.359 | 2 | 1 | 95 | 0.1 |
Tools · ContractCON 45 / POW 45
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.
| 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 | 20 | ROK | ACL Angels | — | 25 | 23 | 4 | 0 | 0 | 0 | 2 | 10 | 0 | 0 | 1 | 174 | 240 | 174 | 414 | 308 | 40 | 8 | 201 | -37 | — | — | — | — | — | — | |
| 2024 | 21 | A | Inland Empire 66ers | — | 86 | 77 | 29 | 7 | 0 | 2 | 8 | 18 | 1 | 3 | 0 | 377 | 442 | 545 | 987 | 169 | 474 | 21 | 9 | 437 | 111 | — | — | — | — | — | — |
| 2024 | 21 | ROK | ACL Angels | — | 232 | 189 | 51 | 14 | 4 | 4 | 32 | 64 | 9 | 13 | 4 | 270 | 400 | 450 | 850 | 180 | 382 | 28 | 14 | 379 | 59 | — | — | — | — | — | — |
| 2025 | 22 | A+ | Tri-City Dust Devils | — | 378 | 303 | 81 | 18 | 2 | 10 | 60 | 96 | 13 | 8 | 1 | 267 | 410 | 439 | 849 | 172 | 357 | 25 | 16 | 383 | 86 | — | — | — | — | — | — |
| ▸ Career — adjusted (every ACTUAL line translated to park/league-neutral MLB equivalents) | |||||||||||||||||||||||||||||||
| 2023 | 20 | ROK MLE | ACL Angels | — | 25 | 24 | 2 | 0 | 0 | 0 | 1 | 15 | 0 | 0 | 1 | 83 | 120 | 83 | 203 | 259 | 60 | 4 | 114 | -37 | — | — | — | — | — | — | |
| 2024 | 21 | A MLE | Inland Empire 66ers | — | 86 | 80 | 24 | 5 | 0 | 2 | 5 | 26 | 1 | 3 | 0 | 300 | 349 | 438 | 786 | 138 | 412 | 30 | 6 | 332 | 111 | — | — | — | — | — | — |
| 2024 | 21 | ROK MLE | ACL Angels | — | 232 | 202 | 36 | 9 | 2 | 3 | 19 | 92 | 9 | 13 | 4 | 178 | 278 | 287 | 565 | 109 | 296 | 40 | 8 | 255 | 59 | — | — | — | — | — | — |
| 2025 | 22 | A+ MLE | Tri-City Dust Devils | — | 378 | 319 | 66 | 14 | 2 | 8 | 44 | 127 | 13 | 8 | 1 | 207 | 327 | 339 | 666 | 132 | 305 | 34 | 12 | 296 | 86 | — | — | — | — | — | — |
| 2023 | 20 | ROK MLE | ACL Angels | — | 25 | 24 | 2 | 0 | 0 | 0 | 1 | 15 | 0 | 0 | 1 | 83 | 120 | 83 | 203 | 222 | 60 | 4 | 114 | -37 | — | — | — | — | — | — | |
| 2023 | 20 | ROK RAW | ACL Angels | — | 25 | 23 | 4 | 0 | 0 | 0 | 2 | 10 | 0 | 0 | 1 | 174 | 240 | 174 | 414 | 308 | 40 | 8 | 201 | -37 | — | — | — | — | — | — | |
| 2024 | 21 | ROK MLE | 2 teams | — | 318 | 282 | 60 | 14 | 2 | 5 | 24 | 117 | 10 | 16 | 4 | 213 | 297 | 330 | 627 | 117 | 340 | 37 | 8 | 276 | 73 | — | — | — | — | — | — |
| 2024 | 21 | ROK RAW | 2 teams | — | 318 | 266 | 80 | 21 | 4 | 6 | 40 | 82 | 10 | 16 | 4 | 301 | 411 | 477 | 889 | 177 | 411 | 26 | 13 | 395 | 73 | — | — | — | — | — | — |
| 2025 | 22 | A+ MLE | Tri-City Dust Devils | — | 378 | 319 | 66 | 14 | 2 | 8 | 44 | 127 | 13 | 8 | 1 | 207 | 327 | 339 | 666 | 132 | 312 | 34 | 12 | 296 | 86 | — | — | — | — | — | — |
| 2025 | 22 | A+ RAW | Tri-City Dust Devils | — | 378 | 303 | 81 | 18 | 2 | 10 | 60 | 96 | 13 | 8 | 1 | 267 | 410 | 439 | 849 | 172 | 357 | 25 | 16 | 383 | 86 | — | — | — | — | — | — |
| 2023 | 20 | ROK MLE | ACL Angels | — | 25 | 24 | 2 | 0 | 0 | 0 | 1 | 15 | 0 | 0 | 1 | 83 | 120 | 83 | 203 | 259 | 60 | 4 | 114 | -37 | — | — | — | — | — | — | |
| 2024 | 21 | ROK MLE | 2 teams | — | 318 | 281 | 60 | 14 | 2 | 5 | 24 | 117 | 10 | 16 | 4 | 214 | 297 | 331 | 628 | 117 | 327 | 37 | 8 | 276 | 73 | — | — | — | — | — | — |
| 2025 | 22 | A+ MLE | Tri-City Dust Devils | — | 378 | 318 | 66 | 14 | 2 | 8 | 44 | 127 | 13 | 8 | 1 | 208 | 327 | 340 | 667 | 132 | 305 | 34 | 12 | 296 | 86 | — | — | — | — | — | — |
| ▸ Model inputs — neutral MLE (past 3 seasons) | |||||||||||||||||||||||||||||||
| 2024 | 21 | ROK MLE | 2 teams | — | 318 | 281 | 60 | 14 | 2 | 5 | 24 | 117 | 10 | 16 | 4 | 214 | 297 | 331 | 628 | 117 | 327 | 37 | 8 | 276 | 73 | — | — | — | — | — | — |
| 2025 | 22 | A+ MLE | Tri-City Dust Devils | — | 378 | 318 | 66 | 14 | 2 | 8 | 44 | 127 | 13 | 8 | 1 | 208 | 327 | 340 | 667 | 132 | 305 | 34 | 12 | 296 | 86 | — | — | — | — | — | — |
| ▸ 2027 season | |||||||||||||||||||||||||||||||
| ▸ 2027 — full MLE projection (neutral park, full availability) | |||||||||||||||||||||||||||||||
| 2027 | 24 | MLB MLE | LAA | 0% | 380 | 330 | 73 | 15 | 2 | 8 | 40 | 100 | 7 | 7 | 2 | 222 | 319 | 353 | 672 | 131 | 289 | 26 | 11 | 305 | 93 | -3 | +1 | +0 | -2 | +8 | 0.1 |
| ▸ Career projection (2028+) — MLB context, MLB playing time (PA × MLB%) | |||||||||||||||||||||||||||||||
| 2028 | 25 | MLB MLE | LAA | 30% | 99 | 87 | 19 | 4 | 0 | 2 | 10 | 26 | 2 | 2 | 0 | 224 | 320 | 358 | 678 | 134 | 289 | 26 | 10 | 307 | 94 | -1 | +0 | +0 | -1 | +2 | 0.1 |
| 2029 | 26 | MLB MLE | LAA | 44% | 163 | 142 | 32 | 6 | 1 | 4 | 17 | 42 | 3 | 3 | 1 | 225 | 320 | 360 | 680 | 136 | 289 | 26 | 10 | 308 | 95 | -1 | +0 | +0 | -1 | +4 | 0.2 |
| 2030 | 27 | MLB MLE | LAA | 49% | 215 | 187 | 43 | 9 | 1 | 5 | 22 | 55 | 4 | 3 | 1 | 225 | 319 | 360 | 679 | 135 | 288 | 26 | 10 | 307 | 94 | -2 | +0 | +0 | -1 | +5 | 0.2 |
| 2031 | 28 | MLB MLE | LAA | 52% | 253 | 221 | 50 | 10 | 1 | 6 | 26 | 65 | 4 | 3 | 1 | 224 | 317 | 358 | 674 | 134 | 288 | 26 | 10 | 305 | 93 | -2 | +0 | -1 | -2 | +5 | 0.1 |
| 2032 | 29 | MLB MLE | LAA | 51% | 274 | 240 | 53 | 11 | 1 | 6 | 28 | 71 | 4 | 3 | 1 | 222 | 314 | 354 | 668 | 131 | 286 | 26 | 10 | 303 | 91 | -3 | +0 | -1 | -2 | +6 | 0.0 |
| 2033 | 30 | MLB MLE | LAA | 51% | 284 | 249 | 54 | 11 | 1 | 6 | 28 | 75 | 5 | 3 | 1 | 219 | 310 | 346 | 656 | 127 | 284 | 26 | 10 | 298 | 88 | -4 | +0 | -2 | -2 | +6 | -0.2 |
| 2028 | 25 | MLB CTX | LAA | 30% | 30 | 26 | 6 | 1 | 0 | 1 | 3 | 8 | 1 | 1 | 0 | 222 | 319 | 356 | 675 | 134 | 286 | 27 | 10 | 306 | 94 | -0 | +0 | +0 | -0 | +1 | 0.0 |
| 2029 | 26 | MLB CTX | LAA | 44% | 72 | 64 | 14 | 3 | 0 | 2 | 7 | 19 | 1 | 1 | 0 | 223 | 318 | 359 | 677 | 135 | 286 | 26 | 10 | 307 | 95 | -0 | +0 | +0 | -0 | +2 | 0.1 |
| 2030 | 27 | MLB CTX | LAA | 49% | 105 | 91 | 19 | 4 | 0 | 2 | 11 | 27 | 2 | 2 | 0 | 223 | 317 | 358 | 676 | 135 | 286 | 26 | 10 | 306 | 94 | -1 | +0 | +0 | -1 | +2 | 0.1 |
| 2031 | 28 | MLB CTX | LAA | 52% | 130 | 114 | 26 | 5 | 1 | 3 | 13 | 34 | 2 | 2 | 0 | 223 | 316 | 356 | 672 | 134 | 285 | 26 | 10 | 304 | 93 | -1 | +0 | -0 | -1 | +3 | 0.1 |
| 2032 | 29 | MLB CTX | LAA | 51% | 141 | 124 | 27 | 5 | 1 | 3 | 14 | 37 | 2 | 2 | 1 | 221 | 313 | 352 | 665 | 131 | 284 | 26 | 10 | 301 | 91 | -2 | +0 | -1 | -1 | +3 | -0.0 |
| 2033 | 30 | MLB CTX | LAA | 51% | 146 | 128 | 28 | 5 | 1 | 3 | 15 | 38 | 2 | 2 | 1 | 218 | 309 | 344 | 653 | 126 | 282 | 26 | 10 | 297 | 88 | -2 | +0 | -1 | -1 | +3 | -0.1 |
| ▸ Career Totals | |||||||||||||||||||||||||||||||
| ▸ Career totals — MLB only (actual + projected) | |||||||||||||||||||||||||||||||
| Career | — | A+C | — | 624 | 547 | 120 | 23 | 3 | 14 | 63 | 163 | 10 | 10 | 2 | 219 | 311 | 349 | 660 | 130 | 283 | 26 | 10 | 303 | 86 | -6 | +1 | -2 | -4 | +14 | 0.3 | |
| / 162G | — | A+C | — | 650 | 570 | 125 | 24 | 3 | 15 | 66 | 170 | 10 | 10 | 2 | 219 | 311 | 351 | 662 | 132 | 283 | 26 | 10 | 303 | 86 | -6 | +1 | -2 | -4 | +14 | 0.3 | |
| Career | — | MLE | — | 2098 | 1829 | 396 | 83 | 9 | 44 | 209 | 616 | 47 | 43 | 11 | 217 | 313 | 344 | 657 | 127 | 299 | 29 | 10 | 296 | 86 | -13 | +2 | -4 | -8 | +30 | 0.6 | |
| / 162G | — | MLE | — | 650 | 567 | 124 | 26 | 3 | 14 | 65 | 191 | 15 | 13 | 3 | 219 | 316 | 349 | 665 | 131 | 301 | 29 | 10 | 296 | 86 | -6 | +1 | -2 | -4 | +14 | 0.3 | |
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.
2025 A+Tri-City Dust Devils · 378 PAwOBA .376 → .296 (−79)K% 25.4% → 33.6%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 25.40% | ÷1.019 | ×1.350 | — | — | 33.64% |
| BB% (unintentional) /PA | 15.87% | ÷0.975 | ×0.710 | — | ×1.012 | 11.70% |
| HBP% /PA | 3.44% | — | ×0.810 | — | ×1.012 | 2.82% |
| Singles /BIP | 24.64% | ÷1.019 | ×0.910 | ×0.964 | ×1.012 | 21.47% |
| Doubles /BIP | 8.70% | ÷0.975 | ×0.830 | ×0.964 | ×1.012 | 7.22% |
| Triples /BIP | 0.97% | ÷0.900 | ×0.820 | ×0.964 | ×1.012 | 0.86% |
| Home runs /BIP | 4.83% | ÷1.000 | ×0.830 | — | ×1.012 | 4.06% |
Factors used: level-wide A+ factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 100, 1B 104, 2B 95, 3B 80, K 104, BB 95 — 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.964.
Result: wOBA .376 → .296; ISO .172 → .137; BABIP .357 → .305. 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 ROKACL Angels · 232 PAwOBA .373 → .255 (−118)K% 27.6% → 39.6%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 27.59% | ÷1.004 | ×1.440 | — | — | 39.58% |
| BB% (unintentional) /PA | 13.79% | ÷1.026 | ×0.620 | — | ×0.985 | 8.21% |
| HBP% /PA | 3.88% | — | ×0.720 | — | ×0.985 | 2.75% |
| Singles /BIP | 23.20% | ÷0.958 | ×0.820 | ×0.979 | ×0.985 | 19.14% |
| Doubles /BIP | 11.20% | ÷0.966 | ×0.720 | ×0.979 | ×0.985 | 8.04% |
| Triples /BIP | 3.20% | ÷1.053 | ×0.720 | ×0.979 | ×0.985 | 2.11% |
| Home runs /BIP | 3.20% | ÷0.895 | ×0.780 | — | ×0.985 | 2.75% |
Factors used: level-wide ROK factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 79, 1B 92, 2B 93, 3B 111, K 101, BB 105 — applied at half strength. Age: age 21 vs a level average of 19.5 → −1.5% on BB/HBP/hit rates (1.5 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.979.
Result: wOBA .373 → .255; ISO .180 → .124; BABIP .382 → .296. 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 AInland Empire 66ers · 86 PAwOBA .425 → .332 (−93)K% 20.9% → 29.8%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 20.93% | ÷0.957 | ×1.360 | — | — | 29.75% |
| BB% (unintentional) /PA | 9.30% | ÷1.057 | ×0.690 | — | ×1.015 | 6.17% |
| HBP% /PA | 1.16% | — | ×0.780 | — | ×1.015 | 0.92% |
| Singles /BIP | 33.90% | ÷0.983 | ×0.920 | ×0.950 | ×1.015 | 30.59% |
| Doubles /BIP | 11.86% | ÷1.023 | ×0.830 | ×0.950 | ×1.015 | 9.28% |
| Triples /BIP | 0.00% | ÷1.139 | ×0.910 | ×0.950 | ×1.015 | 0.00% |
| Home runs /BIP | 3.39% | ÷0.882 | ×0.800 | — | ×1.015 | 3.12% |
Factors used: level-wide A factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 76, 1B 97, 2B 105, 3B 128, K 91, BB 111 — 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.950.
Result: wOBA .425 → .332; ISO .169 → .132; BABIP .474 → .412. 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 ROKACL Angels · 25 PAwOBA .196 → .114 (−82)K% 40.0% → 60.3%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 40.00% | ÷0.955 | ×1.440 | — | — | 60.34% |
| BB% (unintentional) /PA | 8.00% | ÷0.978 | ×0.620 | — | ×0.995 | 5.04% |
| HBP% /PA | 0.00% | — | ×0.720 | — | ×0.995 | 0.00% |
| Singles /BIP | 30.77% | ÷0.970 | ×0.820 | — | ×0.995 | 25.87% |
| Doubles /BIP | 0.00% | ÷1.001 | ×0.720 | — | ×0.995 | 0.00% |
| Triples /BIP | 0.00% | ÷0.961 | ×0.720 | — | ×0.995 | 0.00% |
| Home runs /BIP | 0.00% | ÷0.910 | ×0.780 | — | ×0.995 | 0.00% |
Factors used: level-wide ROK factors (no league-specific row for this league/era). Park (home-season share, regressed): HR 82, 1B 94, 2B 100, 3B 92, K 91, BB 96 — 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).
Result: wOBA .196 → .114; ISO .000 → .000; BABIP .308 → .259. 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).