Brandon Dulin
| Year | Age | Lvl / Team | PA | AVG/OBP/SLG | HR | SB | wRC+ | WAR | MLE AVG/OBP/SLG |
|---|---|---|---|---|---|---|---|---|---|
| 2015 | 22 | ROKIdaho Falls C… | 284 | .281/.355/.494 | 10 | 3 | 51 | — | .186/.238/.322 |
| 2016 | 23 | A/ROK2 orgs | 287 | .258/.317/.398 | 8 | 1 | 42 | — | .205/.244/.297 |
| 2017 | 24 | A+/A2 orgs | 457 | .220/.315/.402 | 18 | 0 | 47 | — | .174/.242/.312 |
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) | |||||||||||||||||||||||||||||||
| 2013 | 20 | ROK | AZL Royals | — | 205 | 186 | 50 | 11 | 6 | 1 | 13 | 37 | 5 | 5 | 1 | 269 | 333 | 409 | 742 | 140 | 329 | 18 | 6 | 330 | 40 | — | — | — | — | — | — |
| 2014 | 21 | ROK | Burlington Royals | — | 194 | 174 | 35 | 5 | 1 | 7 | 11 | 50 | 7 | 4 | 1 | 201 | 276 | 362 | 638 | 161 | 235 | 26 | 6 | 285 | 17 | — | — | — | — | — | — |
| 2015 | 22 | ROK | Idaho Falls Chukars | — | 284 | 253 | 71 | 18 | 3 | 10 | 23 | 61 | 6 | 3 | 1 | 281 | 355 | 494 | 849 | 213 | 332 | 21 | 8 | 371 | 51 | — | — | — | — | — | — |
| 2016 | 23 | A | Lexington Legends | — | 269 | 248 | 63 | 11 | 1 | 7 | 17 | 70 | 4 | 1 | 1 | 254 | 312 | 391 | 703 | 137 | 327 | 26 | 6 | 316 | 41 | — | — | — | — | — | — |
| 2016 | 23 | ROK | Idaho Falls Chukars | — | 18 | 16 | 5 | 0 | 0 | 1 | 2 | 4 | 0 | 0 | 0 | 312 | 389 | 500 | 889 | 188 | 364 | 22 | 11 | 394 | 62 | — | — | — | — | — | — |
| 2017 | 24 | A+ | Winston-Salem Dash | — | 162 | 139 | 24 | 6 | 2 | 6 | 18 | 48 | 4 | 0 | 1 | 173 | 286 | 374 | 660 | 201 | 212 | 30 | 11 | 296 | 13 | — | — | — | — | — | — |
| 2017 | 24 | A | Kannapolis Intimidators | — | 295 | 257 | 63 | 8 | 0 | 12 | 25 | 64 | 8 | 0 | 1 | 245 | 331 | 416 | 747 | 171 | 282 | 22 | 8 | 330 | 66 | — | — | — | — | — | — |
| ▸ Career — adjusted (every ACTUAL line translated to park/league-neutral MLB equivalents) | |||||||||||||||||||||||||||||||
| 2013 | 20 | ROK MLE | AZL Royals | — | 205 | 192 | 37 | 7 | 4 | 1 | 7 | 53 | 5 | 5 | 1 | 193 | 240 | 286 | 527 | 94 | 255 | 26 | 3 | 227 | 40 | — | — | — | — | — | — |
| 2014 | 21 | ROK MLE | Burlington Royals | — | 194 | 178 | 25 | 3 | 1 | 5 | 7 | 71 | 7 | 4 | 1 | 140 | 203 | 253 | 456 | 112 | 184 | 37 | 4 | 194 | 17 | — | — | — | — | — | — |
| 2015 | 22 | ROK MLE | Idaho Falls Chukars | — | 284 | 264 | 49 | 11 | 2 | 7 | 12 | 88 | 6 | 3 | 1 | 186 | 238 | 322 | 560 | 136 | 243 | 31 | 4 | 243 | 51 | — | — | — | — | — | — |
| 2016 | 23 | A MLE | Lexington Legends | — | 269 | 256 | 52 | 8 | 1 | 4 | 9 | 91 | 4 | 1 | 1 | 203 | 242 | 289 | 531 | 86 | 294 | 34 | 3 | 229 | 41 | — | — | — | — | — | — |
| 2016 | 23 | ROK MLE | Idaho Falls Chukars | — | 18 | 17 | 4 | 0 | 0 | 1 | 1 | 6 | 0 | 0 | 0 | 235 | 278 | 412 | 690 | 176 | 278 | 33 | 6 | 260 | 62 | — | — | — | — | — | — |
| 2017 | 24 | A+ MLE | Winston-Salem Dash | — | 162 | 148 | 17 | 4 | 1 | 4 | 9 | 70 | 4 | 0 | 1 | 115 | 186 | 236 | 423 | 122 | 174 | 43 | 6 | 188 | 13 | — | — | — | — | — | — |
| 2017 | 24 | A MLE | Kannapolis Intimidators | — | 295 | 266 | 55 | 6 | 0 | 11 | 16 | 88 | 8 | 0 | 1 | 207 | 272 | 353 | 626 | 147 | 251 | 30 | 5 | 266 | 66 | — | — | — | — | — | — |
| 2013 | 20 | ROK MLE | AZL Royals | — | 205 | 192 | 37 | 7 | 4 | 1 | 7 | 53 | 5 | 5 | 1 | 193 | 240 | 286 | 527 | 94 | 259 | 26 | 3 | 227 | 40 | — | — | — | — | — | — |
| 2013 | 20 | ROK RAW | AZL Royals | — | 205 | 186 | 50 | 11 | 6 | 1 | 13 | 37 | 5 | 5 | 1 | 269 | 333 | 409 | 742 | 140 | 329 | 18 | 6 | 330 | 40 | — | — | — | — | — | — |
| 2014 | 21 | ROK MLE | Burlington Royals | — | 194 | 178 | 25 | 3 | 1 | 5 | 7 | 71 | 7 | 4 | 1 | 140 | 203 | 253 | 456 | 112 | 192 | 37 | 4 | 194 | 17 | — | — | — | — | — | — |
| 2014 | 21 | ROK RAW | Burlington Royals | — | 194 | 174 | 35 | 5 | 1 | 7 | 11 | 50 | 7 | 4 | 1 | 201 | 276 | 362 | 638 | 161 | 235 | 26 | 6 | 285 | 17 | — | — | — | — | — | — |
| 2015 | 22 | ROK MLE | Idaho Falls Chukars | — | 284 | 264 | 49 | 11 | 2 | 7 | 12 | 88 | 6 | 3 | 1 | 186 | 238 | 322 | 560 | 136 | 246 | 31 | 4 | 243 | 51 | — | — | — | — | — | — |
| 2015 | 22 | ROK RAW | Idaho Falls Chukars | — | 284 | 253 | 71 | 18 | 3 | 10 | 23 | 61 | 6 | 3 | 1 | 281 | 355 | 494 | 849 | 213 | 332 | 21 | 8 | 371 | 51 | — | — | — | — | — | — |
| 2016 | 23 | A MLE | 2 teams | — | 287 | 273 | 56 | 8 | 1 | 5 | 10 | 97 | 4 | 1 | 1 | 205 | 244 | 297 | 541 | 92 | 298 | 34 | 3 | 231 | 42 | — | — | — | — | — | — |
| 2016 | 23 | A RAW | 2 teams | — | 287 | 264 | 68 | 11 | 1 | 8 | 19 | 74 | 4 | 1 | 1 | 258 | 317 | 398 | 715 | 140 | 330 | 26 | 7 | 321 | 42 | — | — | — | — | — | — |
| 2017 | 24 | A MLE | 2 teams | — | 457 | 414 | 72 | 10 | 1 | 15 | 25 | 158 | 12 | 0 | 2 | 174 | 242 | 312 | 553 | 138 | 237 | 35 | 5 | 238 | 47 | — | — | — | — | — | — |
| 2017 | 24 | A RAW | 2 teams | — | 457 | 396 | 87 | 14 | 2 | 18 | 43 | 112 | 12 | 0 | 2 | 220 | 315 | 402 | 716 | 182 | 259 | 25 | 9 | 318 | 47 | — | — | — | — | — | — |
| 2013 | 20 | ROK MLE | AZL Royals | — | 205 | 191 | 37 | 7 | 4 | 1 | 7 | 53 | 5 | 5 | 1 | 194 | 240 | 288 | 528 | 94 | 255 | 26 | 3 | 227 | 40 | — | — | — | — | — | — |
| 2014 | 21 | ROK MLE | Burlington Royals | — | 194 | 178 | 25 | 3 | 1 | 5 | 7 | 71 | 7 | 4 | 1 | 140 | 203 | 253 | 456 | 112 | 184 | 37 | 4 | 194 | 17 | — | — | — | — | — | — |
| 2015 | 22 | ROK MLE | Idaho Falls Chukars | — | 284 | 264 | 49 | 11 | 2 | 7 | 12 | 88 | 6 | 3 | 1 | 186 | 238 | 322 | 560 | 136 | 243 | 31 | 4 | 243 | 51 | — | — | — | — | — | — |
| 2016 | 23 | A MLE | 2 teams | — | 287 | 271 | 56 | 8 | 1 | 5 | 10 | 97 | 4 | 1 | 1 | 207 | 244 | 299 | 543 | 92 | 293 | 34 | 3 | 231 | 42 | — | — | — | — | — | — |
| 2017 | 24 | A MLE | 2 teams | — | 457 | 417 | 72 | 10 | 1 | 15 | 25 | 158 | 12 | 0 | 2 | 173 | 242 | 309 | 551 | 137 | 224 | 35 | 5 | 238 | 47 | — | — | — | — | — | — |
| ▸ Career Totals | |||||||||||||||||||||||||||||||
| Career | — | MLE | — | 1427 | 1321 | 239 | 39 | 9 | 33 | 61 | 467 | 34 | 13 | 6 | 181 | 236 | 299 | 535 | 118 | 249 | 33 | 4 | 230 | 42 | -99 | +0 | +0 | -25 | +31 | -9.5 | |
| / 162G | — | MLE | — | 650 | 602 | 109 | 18 | 4 | 15 | 28 | 213 | 15 | 6 | 3 | 181 | 236 | 299 | 535 | 118 | 250 | 33 | 4 | 230 | 42 | -45 | +0 | +0 | -12 | +14 | -4.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.
2017 AKannapolis Intimidators · 295 PAwOBA .320 → .266 (−55)K% 21.7% → 29.7%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 21.69% | ÷0.979 | ×1.340 | — | — | 29.70% |
| BB% (unintentional) /PA | 8.14% | ÷0.975 | ×0.660 | — | ×0.970 | 5.34% |
| HBP% /PA | 2.71% | — | ×0.770 | — | ×0.970 | 2.03% |
| Singles /BIP | 22.28% | ÷1.001 | ×0.920 | ×1.027 | ×0.970 | 20.39% |
| Doubles /BIP | 4.15% | ÷1.070 | ×0.820 | ×1.027 | ×0.970 | 3.16% |
| Triples /BIP | 0.00% | ÷1.150 | ×0.940 | ×1.027 | ×0.970 | 0.00% |
| Home runs /BIP | 6.22% | ÷0.824 | ×0.820 | — | ×0.970 | 6.00% |
Factors used: league row SAL. Park (home-season share, regressed): HR 65, 1B 100, 2B 114, 3B 130, K 96, BB 95 — applied at half strength. Age: age 25 vs a level average of 22.0 → −3.0% on BB/HBP/hit rates (3.0 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×1.027.
Result: wOBA .320 → .266; ISO .171 → .153; BABIP .282 → .251. 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 A+Winston-Salem Dash · 162 PAwOBA .284 → .188 (−96)K% 29.6% → 43.5%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 29.63% | ÷0.966 | ×1.420 | — | — | 43.53% |
| BB% (unintentional) /PA | 9.88% | ÷1.046 | ×0.630 | — | ×0.978 | 5.82% |
| HBP% /PA | 2.47% | — | ×0.860 | — | ×0.978 | 2.08% |
| Singles /BIP | 10.99% | ÷0.999 | ×0.940 | ×0.979 | ×0.978 | 9.90% |
| Doubles /BIP | 6.59% | ÷1.080 | ×0.830 | ×0.979 | ×0.978 | 4.85% |
| Triples /BIP | 2.20% | ÷0.902 | ×0.800 | ×0.979 | ×0.978 | 1.87% |
| Home runs /BIP | 6.59% | ÷1.275 | ×0.900 | — | ×0.978 | 4.55% |
Factors used: league row CAR. Park (home-season share, regressed): HR 155, 1B 100, 2B 116, 3B 80, K 93, BB 109 — 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.979.
Result: wOBA .284 → .188; ISO .201 → .126; BABIP .212 → .174. 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 ALexington Legends · 269 PAwOBA .306 → .229 (−77)K% 26.0% → 34.0%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 26.02% | ÷1.026 | ×1.340 | — | — | 34.00% |
| BB% (unintentional) /PA | 5.95% | ÷1.177 | ×0.660 | — | ×0.980 | 3.27% |
| HBP% /PA | 1.49% | — | ×0.770 | — | ×0.980 | 1.12% |
| Singles /BIP | 24.72% | ÷0.965 | ×0.920 | ×1.021 | ×0.980 | 23.60% |
| Doubles /BIP | 6.18% | ÷1.113 | ×0.820 | ×1.021 | ×0.980 | 4.56% |
| Triples /BIP | 0.56% | ÷0.991 | ×0.940 | ×1.021 | ×0.980 | 0.53% |
| Home runs /BIP | 3.93% | ÷1.317 | ×0.820 | — | ×0.980 | 2.40% |
Factors used: league row SAL. Park (home-season share, regressed): HR 164, 1B 93, 2B 123, 3B 98, K 105, BB 135 — 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 ×1.021.
Result: wOBA .306 → .229; ISO .137 → .086; BABIP .327 → .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).
2016 ROKIdaho Falls Chukars · 18 PAwOBA .384 → .260 (−124)K% 22.2% → 32.0%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 22.22% | ÷1.000 | ×1.440 | — | — | 32.00% |
| BB% (unintentional) /PA | 11.11% | ÷1.000 | ×0.610 | — | ×0.955 | 6.47% |
| HBP% /PA | 0.00% | — | ×0.720 | — | ×0.955 | 0.00% |
| Singles /BIP | 33.33% | ÷1.000 | ×0.820 | — | ×0.955 | 26.10% |
| Doubles /BIP | 0.00% | ÷1.000 | ×0.720 | — | ×0.955 | 0.00% |
| Triples /BIP | 0.00% | ÷1.000 | ×0.720 | — | ×0.955 | 0.00% |
| Home runs /BIP | 8.33% | ÷1.000 | ×0.750 | — | ×0.955 | 5.97% |
Factors used: league row PIO. Park (home-season share, regressed): no park row on file (treated as neutral) — applied at half strength. Age: age 24 vs a level average of 19.5 → −4.5% on BB/HBP/hit rates (4.5 yr older than average).
Result: wOBA .384 → .260; ISO .188 → .124; BABIP .364 → .278. 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).
2015 ROKIdaho Falls Chukars · 284 PAwOBA .361 → .243 (−119)K% 21.5% → 30.9%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 21.48% | ÷1.000 | ×1.440 | — | — | 30.93% |
| BB% (unintentional) /PA | 7.39% | ÷1.000 | ×0.610 | — | ×0.965 | 4.35% |
| HBP% /PA | 2.11% | — | ×0.720 | — | ×0.965 | 1.47% |
| Singles /BIP | 20.83% | ÷1.000 | ×0.820 | ×0.981 | ×0.965 | 16.18% |
| Doubles /BIP | 9.38% | ÷1.000 | ×0.720 | ×0.981 | ×0.965 | 6.39% |
| Triples /BIP | 1.56% | ÷1.000 | ×0.720 | ×0.981 | ×0.965 | 1.07% |
| Home runs /BIP | 5.21% | ÷1.000 | ×0.750 | — | ×0.965 | 3.77% |
Factors used: league row PIO. Park (home-season share, regressed): no park row on file (treated as neutral) — applied at half strength. Age: age 23 vs a level average of 19.5 → −3.5% on BB/HBP/hit rates (3.5 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.981.
Result: wOBA .361 → .243; ISO .213 → .141; BABIP .332 → .243. 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).
2014 ROKBurlington Royals · 194 PAwOBA .280 → .194 (−86)K% 25.8% → 36.6%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 25.77% | ÷1.000 | ×1.420 | — | — | 36.60% |
| BB% (unintentional) /PA | 5.67% | ÷1.000 | ×0.640 | — | ×0.975 | 3.54% |
| HBP% /PA | 3.61% | — | ×0.740 | — | ×0.975 | 2.60% |
| Singles /BIP | 17.74% | ÷1.000 | ×0.840 | ×0.993 | ×0.975 | 14.43% |
| Doubles /BIP | 4.03% | ÷1.000 | ×0.740 | ×0.993 | ×0.975 | 2.89% |
| Triples /BIP | 0.81% | ÷1.000 | ×0.740 | ×0.993 | ×0.975 | 0.58% |
| Home runs /BIP | 5.65% | ÷1.000 | ×0.800 | — | ×0.975 | 4.40% |
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 22 vs a level average of 19.5 → −2.5% on BB/HBP/hit rates (2.5 yr older than average). Ground-ball/fly-ball mix moves 1B/2B/3B by ×0.993.
Result: wOBA .280 → .194; ISO .161 → .110; BABIP .235 → .184. 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).
2013 ROKAZL Royals · 205 PAwOBA .319 → .227 (−92)K% 18.0% → 26.0%
| Component | Raw | Park ÷ | Level factor × | GB/FB × | Age × | = MLE |
|---|---|---|---|---|---|---|
| K% /PA | 18.05% | ÷1.000 | ×1.440 | — | — | 25.99% |
| BB% (unintentional) /PA | 5.37% | ÷1.000 | ×0.620 | — | ×0.985 | 3.28% |
| HBP% /PA | 2.44% | — | ×0.720 | — | ×0.985 | 1.73% |
| Singles /BIP | 21.48% | ÷1.000 | ×0.820 | ×1.004 | ×0.985 | 17.41% |
| Doubles /BIP | 7.38% | ÷1.000 | ×0.720 | ×1.004 | ×0.985 | 5.25% |
| Triples /BIP | 4.03% | ÷1.000 | ×0.720 | ×1.004 | ×0.985 | 2.87% |
| Home runs /BIP | 0.67% | ÷1.000 | ×0.780 | — | ×0.985 | 0.52% |
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 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 ×1.004.
Result: wOBA .319 → .227; ISO .140 → .095; BABIP .329 → .255. 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).