This week's rankings feature a number of improvements under the hood. More on that below...but if you just want to see the rankings, here they are!
"On Paper" Playoff Standings
American League: E=Rays, C=Twins, W=Rangers, WC=Yankees
National League: E=Braves, C=Cardinals, W=Padres, WC=Rockies
This Week's Feature
There was a good amount of discussion last week about various ways to improve the rankings. Fortunately, it's summer, and I just got a big project done Tuesday, so I was able to sit down and implement them yesterday. Let's take a tour of the new features:
1. Offensive runs are now calculated using base runs instead of FanGraphs' wRC. I don't think there's anything particularly wrong with wRC, but there are some advantages to using base runs:
- I have complete control over the equation being used (though I suppose that means I'm responsible for it, which is a downside). I'm using this one (see end of article), which performs well across all major and minor leagues, though I do tweak it to make sure the total runs scored in MLB adds up to exactly the estimated runs scored.
- Base runs works better in team situations, because it gives extra credit to teams that have both good on base ability and good advancement-around-the-bases ability (and penalizes teams that do not) because those two elements of offense can interact.
- I'm now able to include Reached On Errors, which wRC does not include. While ROE's are not traditionally credited to hitters, there is a significant "skill" component to getting them (hitters who hit more grounders, or are fast, get more ROE's; hat tip to @fastballs for the link to the study), and so it's worth it to include them here.
- Calculate component winning percentage for each team.
- Use the log5 method to back-calculate what a team's winning percentage would have been had they played 0.500 teams. Basically, I'm solving for W%(A) in the log5 equation reported here. The result is what I'm calling "cW%s" (for schedule-adjusted component winning percentage).
- Again use the "reverse" log5 method to apply the league adjustment to this total. This is a slight change of methodology, as I applied the league adjustment to run totals. Here, I'm applying the same adjustment, but doing it by providing a second strength of schedule adjustment based on the expected true talent estimate for AL teams. Those numbers are here, though I reduced their magnitude slightly because AL and NL teams do play each other a small amount each season and thus have already affected their performances (this is a tweak I did last year, thanks to @btb_sky for the suggestion). The result is TPI.
Under the Hood
Converting Runs to Wins
Team | G | RS | eRS | RA | eRA | W% | pW% | cW% | SoS | cW%s | xtW | LgQ | TPI |
ARI | 101 | 425 | 425 | 543 | 499 | 0.366 | 0.384 | 0.424 | 0.523 | 0.441 | 63 | 0.482 | 0.424 |
ATL | 100 | 469 | 468 | 391 | 396 | 0.580 | 0.583 | 0.577 | 0.500 | 0.572 | 94 | 0.482 | 0.555 |
BAL | 101 | 361 | 397 | 552 | 539 | 0.307 | 0.310 | 0.360 | 0.530 | 0.382 | 54 | 0.518 | 0.400 |
BOS | 102 | 517 | 523 | 451 | 462 | 0.569 | 0.564 | 0.559 | 0.502 | 0.556 | 91 | 0.518 | 0.574 |
CHW | 100 | 445 | 427 | 401 | 413 | 0.560 | 0.548 | 0.516 | 0.490 | 0.501 | 88 | 0.518 | 0.519 |
CHC | 102 | 413 | 429 | 452 | 437 | 0.451 | 0.459 | 0.492 | 0.477 | 0.464 | 75 | 0.482 | 0.446 |
CIN | 103 | 487 | 494 | 420 | 448 | 0.553 | 0.568 | 0.546 | 0.481 | 0.522 | 88 | 0.482 | 0.504 |
CLE | 101 | 417 | 427 | 494 | 485 | 0.416 | 0.422 | 0.441 | 0.515 | 0.451 | 69 | 0.518 | 0.468 |
COL | 101 | 434 | 440 | 415 | 415 | 0.505 | 0.521 | 0.527 | 0.506 | 0.528 | 83 | 0.482 | 0.510 |
DET | 100 | 437 | 454 | 453 | 452 | 0.510 | 0.482 | 0.501 | 0.490 | 0.486 | 82 | 0.518 | 0.504 |
FLA | 101 | 463 | 453 | 454 | 441 | 0.495 | 0.509 | 0.512 | 0.515 | 0.522 | 82 | 0.482 | 0.504 |
HOU | 101 | 368 | 369 | 500 | 459 | 0.416 | 0.361 | 0.400 | 0.503 | 0.399 | 66 | 0.482 | 0.382 |
KCR | 101 | 420 | 423 | 529 | 525 | 0.416 | 0.392 | 0.398 | 0.511 | 0.404 | 66 | 0.518 | 0.421 |
LAD | 101 | 465 | 459 | 455 | 444 | 0.535 | 0.511 | 0.516 | 0.499 | 0.510 | 85 | 0.482 | 0.492 |
LAA | 104 | 472 | 436 | 495 | 502 | 0.500 | 0.477 | 0.434 | 0.502 | 0.431 | 77 | 0.518 | 0.448 |
MIL | 103 | 491 | 522 | 561 | 521 | 0.466 | 0.436 | 0.501 | 0.488 | 0.484 | 77 | 0.482 | 0.466 |
MIN | 102 | 505 | 501 | 422 | 418 | 0.549 | 0.584 | 0.585 | 0.491 | 0.571 | 91 | 0.518 | 0.588 |
NYY | 100 | 551 | 529 | 415 | 430 | 0.640 | 0.632 | 0.597 | 0.489 | 0.582 | 101 | 0.518 | 0.599 |
NYM | 101 | 443 | 446 | 406 | 450 | 0.505 | 0.540 | 0.496 | 0.518 | 0.508 | 82 | 0.482 | 0.490 |
OAK | 100 | 431 | 428 | 410 | 422 | 0.510 | 0.522 | 0.507 | 0.486 | 0.488 | 82 | 0.518 | 0.506 |
PHI | 101 | 464 | 446 | 413 | 429 | 0.545 | 0.554 | 0.518 | 0.513 | 0.526 | 87 | 0.482 | 0.508 |
PIT | 100 | 358 | 375 | 536 | 518 | 0.360 | 0.319 | 0.353 | 0.499 | 0.348 | 58 | 0.482 | 0.332 |
SDP | 99 | 478 | 453 | 375 | 375 | 0.596 | 0.611 | 0.586 | 0.495 | 0.577 | 96 | 0.482 | 0.559 |
SEA | 102 | 343 | 349 | 452 | 454 | 0.382 | 0.378 | 0.384 | 0.505 | 0.384 | 62 | 0.518 | 0.401 |
SFG | 102 | 459 | 448 | 374 | 425 | 0.569 | 0.592 | 0.524 | 0.496 | 0.516 | 89 | 0.482 | 0.498 |
STL | 101 | 466 | 471 | 390 | 421 | 0.554 | 0.582 | 0.552 | 0.490 | 0.537 | 89 | 0.482 | 0.519 |
TBR | 100 | 517 | 497 | 392 | 402 | 0.620 | 0.628 | 0.599 | 0.500 | 0.594 | 99 | 0.518 | 0.611 |
TEX | 101 | 497 | 491 | 408 | 448 | 0.584 | 0.592 | 0.543 | 0.477 | 0.515 | 91 | 0.518 | 0.533 |
TOR | 102 | 477 | 480 | 446 | 426 | 0.520 | 0.532 | 0.556 | 0.502 | 0.553 | 86 | 0.518 | 0.571 |
WSN | 101 | 405 | 409 | 459 | 451 | 0.426 | 0.442 | 0.456 | 0.505 | 0.455 | 71 | 0.482 | 0.438 |
G=Games
RS = Actual Runs Scored, after a park adjustment
eRS = Estimated Runs Scored, after park adjustment (see table below)
RA = Actual Runs Allowed, after a park adjustment
eRA = Estimated Runs Allowed, after park adjustments (see table below)
W% = Actual Winning Percentage
pW% = PythagenPat Winning Percentage, based on actual runs scored and run allowed totals
cW% = Component Winning Percentage, using estimated runs scored and estimated runs allowed totals. If you don't like the league adjustment, click in the header and sort by this column to get an "unsullied" ranking.
SoS = Strength of Schedule. This is an iterative weighted average of the component-based winning percentages of a team's opponents. Described in this post.
cW%s = Schedule-adjusted Component Winning Percentage. Calculated by applying SoS to cW% with the log5 method, as described in this post.
xTW = Extrapolated wins. Based on current real wins to date, and extrapolated wins over the rest of the season. Extrapolations are based on an average of cW% and cW%s, as justified in this post.
LgQ = League Quality. The AL has superior talent to the NL (justification here and here, and modified most recently here). The number shown is an estimated true talent level (in winning percentage) of the two leagues were they to be able to play one other for a large number of games. It's based on the last two years of interleague, with a small adjustment toward 0.500 to account for the fact that the leagues do play one another and thus have already had a small effect on one another's performance.
TPI = Team Performance Index, a hypothetical winning % based on cW%s, after adjustment for league quality. Think of this as the W% we'd expect teams to have if they were all in one big league and were allowed to play 10,000 games vs. every team.
Team Offenses and Defenses
Team | RS | eRS | wOBA | OBP | SLG | HitRns | EqBRR | RA | eRA | ERA | FIP* | xFIP | PitRns | Field | BABIP | |
ARI | 425 | 425 | 0.318 | 0.328 | 0.418 | 433 | -8 | 543 | 499 | 5.33 | 4.75 | 4.54 | 472 | -9 | 0.318 | |
ATL | 469 | 468 | 0.331 | 0.344 | 0.399 | 466 | 1 | 391 | 396 | 3.61 | 3.82 | 3.97 | 407 | 13 | 0.295 | |
BAL | 361 | 397 | 0.310 | 0.315 | 0.384 | 401 | -4 | 552 | 539 | 5.17 | 4.60 | 4.82 | 499 | -45 | 0.319 | |
BOS | 517 | 523 | 0.347 | 0.345 | 0.460 | 524 | -1 | 451 | 462 | 4.19 | 4.26 | 4.48 | 479 | 13 | 0.294 | |
CHW | 445 | 427 | 0.319 | 0.326 | 0.417 | 427 | 1 | 401 | 413 | 3.93 | 3.56 | 4.11 | 422 | -9 | 0.307 | |
CHC | 413 | 429 | 0.320 | 0.325 | 0.412 | 435 | -6 | 452 | 437 | 4.13 | 4.01 | 4.15 | 435 | 0 | 0.309 | |
CIN | 487 | 494 | 0.338 | 0.338 | 0.439 | 492 | 2 | 420 | 448 | 4.11 | 4.19 | 4.51 | 484 | 28 | 0.292 | |
CLE | 417 | 427 | 0.319 | 0.324 | 0.385 | 427 | 0 | 494 | 485 | 4.43 | 4.54 | 4.67 | 481 | -3 | 0.303 | |
COL | 434 | 440 | 0.323 | 0.336 | 0.421 | 437 | 3 | 415 | 415 | 4.13 | 3.72 | 4.10 | 427 | 2 | 0.303 | |
DET | 437 | 454 | 0.327 | 0.339 | 0.416 | 454 | 0 | 453 | 452 | 4.36 | 4.15 | 4.54 | 466 | 2 | 0.303 | |
FLA | 463 | 453 | 0.327 | 0.322 | 0.400 | 445 | 9 | 454 | 441 | 4.09 | 3.82 | 4.19 | 436 | -16 | 0.313 | |
HOU | 368 | 369 | 0.301 | 0.299 | 0.355 | 364 | 5 | 500 | 459 | 4.44 | 3.81 | 4.17 | 430 | -39 | 0.329 | |
KCR | 420 | 423 | 0.318 | 0.334 | 0.399 | 430 | -7 | 529 | 525 | 5.18 | 5.08 | 4.66 | 483 | -15 | 0.314 | |
LAD | 465 | 459 | 0.328 | 0.330 | 0.394 | 455 | 4 | 455 | 444 | 4.00 | 3.77 | 4.11 | 431 | -22 | 0.305 | |
LAA | 472 | 436 | 0.322 | 0.318 | 0.401 | 450 | -14 | 495 | 502 | 4.46 | 4.32 | 4.38 | 466 | -30 | 0.312 | |
MIL | 491 | 522 | 0.346 | 0.335 | 0.438 | 522 | 1 | 561 | 521 | 4.95 | 4.26 | 4.37 | 464 | -55 | 0.330 | |
MIN | 505 | 501 | 0.340 | 0.353 | 0.434 | 503 | -2 | 422 | 418 | 4.00 | 3.92 | 4.12 | 433 | 14 | 0.308 | |
NYY | 551 | 529 | 0.349 | 0.354 | 0.443 | 528 | 1 | 415 | 430 | 3.88 | 4.00 | 4.25 | 437 | 3 | 0.287 | |
NYM | 443 | 446 | 0.325 | 0.317 | 0.391 | 434 | 12 | 406 | 450 | 3.77 | 4.02 | 4.39 | 464 | 3 | 0.309 | |
OAK | 431 | 428 | 0.319 | 0.324 | 0.384 | 423 | 5 | 410 | 422 | 3.72 | 4.27 | 4.25 | 438 | 26 | 0.284 | |
PHI | 464 | 446 | 0.325 | 0.327 | 0.418 | 447 | -1 | 413 | 429 | 3.96 | 4.32 | 4.14 | 430 | 19 | 0.293 | |
PIT | 358 | 375 | 0.302 | 0.306 | 0.369 | 378 | -3 | 536 | 518 | 4.97 | 4.83 | 4.65 | 472 | -30 | 0.310 | |
SDP | 478 | 453 | 0.327 | 0.324 | 0.377 | 451 | 2 | 375 | 375 | 3.26 | 3.97 | 3.76 | 390 | 36 | 0.287 | |
SEA | 343 | 349 | 0.295 | 0.303 | 0.339 | 353 | -4 | 452 | 454 | 4.00 | 4.18 | 4.45 | 469 | 10 | 0.295 | |
SFG | 459 | 448 | 0.325 | 0.329 | 0.408 | 450 | -2 | 374 | 425 | 3.44 | 3.91 | 4.31 | 460 | 23 | 0.293 | |
STL | 466 | 471 | 0.332 | 0.334 | 0.413 | 475 | -3 | 390 | 421 | 3.36 | 4.11 | 4.08 | 429 | 20 | 0.296 | |
TBR | 517 | 497 | 0.340 | 0.340 | 0.407 | 485 | 12 | 392 | 402 | 3.65 | 4.00 | 4.15 | 432 | 31 | 0.284 | |
TEX | 497 | 491 | 0.338 | 0.342 | 0.424 | 482 | 9 | 408 | 448 | 3.78 | 4.36 | 4.47 | 474 | 29 | 0.282 | |
TOR | 477 | 480 | 0.335 | 0.311 | 0.454 | 483 | -3 | 446 | 426 | 4.13 | 3.86 | 4.19 | 440 | 6 | 0.302 | |
WSN | 405 | 409 | 0.313 | 0.324 | 0.395 | 417 | -8 | 459 | 451 | 4.17 | 4.12 | 4.45 | 458 | -1 | 0.309 |
RS = Actual Runs Scored
eRS = Estimated Runs Scored: HitRns + EqBRR
wOBA = The Book's statistic, but park adjusted, and using data from both HitRns and EqBRR
OBP = On Base Percentage (Times on Base / Plate Appearances)
SLG = Slugging Percentage (Total Bases / At Bats)
HitRns = Base Runs-estimated runs scored, ignoring all base running, using the equation in this post.
EqBRR = Dan Fox's composite baserunning statistics from Baseball Prospectus, minus stolen bases since they are included in wRC.
RA = Actual Runs Allowed, after park adjustment
eRA = Estimated Runs Allowed: PitRns - Field
ERA = Straight-up Earned Run Average
FIP* = Fielding-Independent Runs, based strictly on K-, BB-, and HR-rates. HR/FB rates are park adjusted using these park factors.
xFIP = Expected Fielding-Independent Runs from FanGraphs. Like FIP, but with HR/Outfield Fly Ball rates regressed completely to league average. xFIP is as predictive as any other DIPS-like stat.
PitRns = Pitching Runs Allowed, the average expected runs allowed based on FIP and xFIP. Described in this post.
Field = Described in this post. It is essentially an average of team UZR, DRS (minus rSB since I calculate catcher fielding separately), and BsRFld. BsRFld is just difference between FIP-based runs allowed and park-adjusted Base Runs, and is a less direct approach of measuring fielding. The fielding number also includes a catcher fielding statistic, based on SB's, CS's, WP's, PB's, E's, and this year catcher interference. The catching methods are essentially those described here. But I'm using B-Ref data this year, and so there are slight tweaks to the methodology, generally in ways that should lead to greater accuracy. If you want to know, feel free to ask!
BABIP = Batting Average on Balls In Play. Fluctuates at the team level with fielding, although park effects and chance events can have effects as well.