How good were we really, and how much was luck?
From the batted balls to the standings
Each record strips out one kind of luck. Warm steps helped Pittsburgh; cool ones hurt. r = how much that step repeats for the same team the next season.
- Results vs. contact +2.5 wins
- Hitters scored 31 more runs than their contact deserved and pitchers allowed 6 more, before the park. A park where results beat contact raises both teams’ gaps in the same games, which nets out in the record but not in this split: PNC Park added about 19 of the hitters’ +31. With each park’s own effect taken out, hitters scored 13 more than their contact deserved and pitchers allowed 13 fewer. Keystone’s fielding model puts the defense at −3.7 runs on balls in play (defense map); it is measured on a different baseline, so it isn’t subtracted here. This step repeats at r = .30 (95% interval .14 to .44): park, speed and defense live in it.
- Sequencing −4.8 wins
- Pittsburgh allowed 739 runs on hits, walks and outs worth 695: 44 extra. Errors (unearned runs vs. the MLB average) account for +14, and everything else (bunched hits, wild pitches, baserunning) for +30 (+ = more runs allowed). The offense scored about what its hits were worth (−3).
- Run timing −1.9 wins
- The record trailed the run differential: 28–21 by 1 run (+7 runs), 27–37 by 2–4 (−26 runs), 27–22 by 5+ (+47 runs). Pythagorean counts every run the same; the runs piled up in lopsided games, which moves run differential more than wins. Year to year, r = .04 (one-run record alone: r = −.10).
Where the runs leaked
wOBA by base state, 2026: Pittsburgh vs. MLB. It shows where runs happened, not why: the table below splits the runs.
Pittsburgh’s pitchers (allowed)
Pittsburgh’s hitters
MLB average Pittsburgh (warm = better than average, cool = worse)
| Runs | Actual | BaseRuns | Contact |
|---|---|---|---|
| Scored | 767 | 770 | 738 |
| Allowed | 739 | 695 | 689 |
| Unearned allowed (MLB avg. 60) | 74 | — | — |
| Wild pitches (MLB avg. 47) | 56 | — | — |
Pittsburgh allowed 44 more runs than BaseRuns, which has no term for errors or wild pitches. Unearned runs ran 14 above the MLB average. Wild pitches ran 9 above it, worth about +2 runs at roughly 0.28 runs each (a standard linear-weights value, not measured here). What’s left, about +28 runs, can’t be pinned on one cause. Hits allowed bunched together repeat at r = .12; unearned runs a little more (r = .21). Fielding by position is on the Defense page; third base has its own brief.
The season, game by game
Games over .500: the real record vs. the pace its run differential set. Hover for any date, or focus the chart and use the arrow keys.
| Month | Mar | Apr | May | Jun | Jul | Aug | Sep |
|---|---|---|---|---|---|---|---|
| Record | 2–3 | 14–13 | 16–12 | 11–15 | 12–13 | 12–15 | 15–9 |
| Runs | 21–23 | 132–118 | 148–129 | 139–146 | 132–121 | 97–106 | 98–96 |
| Pythagorean | 2–3 | 15–12 | 16–12 | 12–14 | 14–11 | 12–15 | 12–12 |
| Luck | −0.3 | −0.9 | +0.2 | −1.4 | −1.6 | −0.4 | +2.8 |
The splits that will get asked about
2026 records. Split records are small samples. Of the ones tested for repeating (5), none repeats for the same team the next year.
| Split | Record | Win % | Behind it |
|---|---|---|---|
| Home | 44–37 | .543 | r = .08 |
| Road | 38–43 | .469 | r = .08 |
| vs. LHP starter | 18–33 | .353 | Team OPS .701 (MLB .711) · r = .07 |
| vs. RHP starter | 64–47 | .577 | Team OPS .749 (MLB .723) · r = .07 |
| Day | 43–27 | .614 | r = .00 |
| Night | 39–53 | .424 | r = .00 |
| One-run games | 28–21 | .571 | r = −.10 |
| Extra innings | 6–10 | .375 | |
| vs. winning teams | 35–40 | .467 | r = .01 |
| Grass | 77–73 | .513 | |
| Turf | 5–7 | .417 | |
| Decided by 5+ | 27–22 | .551 |
18–33 against left-handed starters (64–47 against righties). The hitting behind it: .701 OPS against lefties (MLB .711) and .749 against righties (MLB .723). The record gap between the hands can’t be told from zero year to year (r = .07). The hitting against lefties was about league average, so the record is mostly sequencing and noise. Against its own line versus righties, though, the drop is 48 OPS points to the league’s 12: a handedness question for the lineup, not a hole in the record.
What carries into 2027
Tested on 150 team-seasons, 2021–2026: which record predicts next season, and which luck repeats
Next season’s wins, predicted from…
Error in wins (root-mean-square), lower is better; highlighted records are within a tenth of a win of the best. Against the real record, Pythagorean gains +0.36 (95% interval −0.003 to +0.69) and BaseRuns +0.35 (−0.09 to +0.76), resampling whole clubs: an edge that can’t be told from zero. Fit only on earlier seasons (120 team-seasons), the errors are 9.8 (actual), 9.3 (Pythagorean) and 9.4 (BaseRuns). Valuing batted balls at expected wOBA doesn’t help further, because those gaps partly repeat.
How much each kind of luck repeats
Bars show r; the faint band is its 95% interval. Grey values can’t be distinguished from zero. Contact gaps do repeat (park, speed and defense are partly skill), which is why “all luck combined” isn’t zero.
From 2026 to 2027
- 2026 as played (BaseRuns; actual 82–80)88.7
- What records like it have meant the next season83–86
- The 2026 club brought back (Kirby Yates, Gregory Soto and Brandon Lowe re-signed), projected player by player81.3
- They leave as free agents−2.3
- 2027 as the roster stands79.0
- Winter Plan moves+2.7
- 2027 Winter Plan81.7
The plan’s third-base fix moves Gonzales to second, which exists only because Brandon Lowe is expected to decline the qualifying offer. If he accepts (his choice, not the club’s), the same plan projects 83.5 wins and 51% playoff odds, with Lowe at second and Gonzales on the bench, for $22.4M more 2027 payroll: his leaving costs the plan about 1.8 wins. The Outlook’s bridge splits the change by cause, and the Winter Plan prices every branch.
All 30 teams, 2026
Sorted by wins above or below BaseRuns. Pittsburgh highlighted. Runs columns: + = more runs than the hits, walks and outs imply.
| Team | W–L | Pythag. | BaseRuns | Contact | Scored vs. BaseRuns | Allowed vs. BaseRuns | Wins vs. BaseRuns |
|---|---|---|---|---|---|---|---|
| DET Detroit Tigers | 76–86 | 88.7 | 90.1 | 92.4 | −8 | +5 | −14.1 |
| SF San Francisco Giants | 65–97 | 71.4 | 77.4 | 77.7 | −24 | +33 | −12.4 |
| LAA Los Angeles Angels | 62–100 | 70.7 | 73.0 | 74.3 | +8 | +31 | −11.0 |
| PIT Pittsburgh Pirates | 82–80 | 83.9 | 88.7 | 86.2 | −3 | +44 | −6.7 |
| MIA Miami Marlins | 80–82 | 81.3 | 86.7 | 79.9 | −32 | +20 | −6.7 |
| CHC Chicago Cubs | 89–73 | 95.6 | 93.7 | 80.4 | +2 | −16 | −4.7 |
| NYM New York Mets | 74–88 | 77.6 | 78.7 | 88.4 | +1 | +11 | −4.7 |
| COL Colorado Rockies | 58–104 | 63.2 | 61.9 | 62.8 | −13 | −31 | −3.9 |
| WSH Washington Nationals | 77–85 | 81.6 | 79.4 | 78.0 | +31 | +9 | −2.4 |
| KC Kansas City Royals | 69–93 | 68.8 | 71.4 | 74.6 | −31 | −7 | −2.4 |
| LAD Los Angeles Dodgers | 100–62 | 102.2 | 101.4 | 101.7 | +1 | −6 | −1.4 |
| BOS Boston Red Sox | 87–75 | 89.8 | 88.0 | 84.5 | −29 | −43 | −1.0 |
| TOR Toronto Blue Jays | 79–83 | 75.9 | 79.7 | 74.4 | −9 | +25 | −0.7 |
| SEA Seattle Mariners | 76–86 | 74.7 | 76.4 | 84.0 | −17 | −2 | −0.4 |
| NYY New York Yankees | 93–68 | 95.6 | 92.8 | 93.6 | +17 | −9 | +0.2 |
| MIN Minnesota Twins | 77–85 | 75.2 | 75.8 | 75.7 | +15 | +22 | +1.2 |
| CWS Chicago White Sox | 84–78 | 86.7 | 82.7 | 81.3 | +24 | −15 | +1.3 |
| HOU Houston Astros | 81–81 | 77.7 | 79.6 | 78.1 | −3 | +15 | +1.4 |
| BAL Baltimore Orioles | 79–82 | 78.3 | 77.5 | 87.1 | +15 | +8 | +1.5 |
| TEX Texas Rangers | 80–82 | 76.0 | 77.6 | 75.5 | −25 | −11 | +2.4 |
| MIL Milwaukee Brewers | 103–59 | 103.0 | 100.3 | 97.2 | +40 | +9 | +2.7 |
| STL St. Louis Cardinals | 77–85 | 78.0 | 74.3 | 76.0 | +43 | +9 | +2.7 |
| ATH Athletics | 64–98 | 58.6 | 60.8 | 68.7 | −16 | +8 | +3.2 |
| CLE Cleveland Guardians | 85–77 | 82.2 | 80.9 | 80.2 | −18 | −30 | +4.1 |
| AZ Arizona Diamondbacks | 86–76 | 81.9 | 80.7 | 73.2 | +12 | 0 | +5.3 |
| TB Tampa Bay Rays | 98–64 | 90.3 | 90.9 | 75.1 | +2 | +7 | +7.1 |
| SD San Diego Padres | 91–71 | 85.4 | 83.1 | 84.6 | +4 | −17 | +7.9 |
| ATL Atlanta Braves | 94–68 | 93.6 | 86.0 | 82.9 | +24 | −46 | +8.0 |
| PHI Philadelphia Phillies | 88–74 | 82.6 | 79.0 | 93.5 | +13 | −21 | +9.0 |
| CIN Cincinnati Reds | 75–87 | 64.7 | 65.3 | 68.2 | −26 | −24 | +9.7 |
Pittsburgh: 4th unluckiest of 30 against BaseRuns. Bars share one scale with the history table below.
Pittsburgh, 2021–2026
The same four records each season. Teams drift toward their BaseRuns record.
| Season | W–L | Pythag. | BaseRuns | Contact | One-run | Unearned (MLB avg.) | Wins vs. BaseRuns |
|---|---|---|---|---|---|---|---|
| 2021 | 61–101 | 57.9 | 59.3 | 63.6 | 20–22 | 45 (62) | +1.7 |
| 2022 | 62–100 | 57.3 | 61.3 | 64.4 | 21–27 | 82 (62) | +0.7 |
| 2023 | 76–86 | 70.9 | 72.7 | 72.1 | 22–17 | 59 (57) | +3.3 |
| 2024 | 76–86 | 73.1 | 71.0 | 75.1 | 25–26 | 75 (61) | +5.0 |
| 2025 | 71–91 | 73.7 | 74.8 | 75.1 | 25–35 | 47 (58) | −3.8 |
| 2026 | 82–80 | 83.9 | 88.7 | 86.2 | 28–21 | 74 (60) | −6.7 |