Every July somebody tells me the races feel closer than usual, and every July I decline to take a feeling’s word for it. This year the feeling survives the arithmetic. I took the site’s bundled 2026 standings snapshot — 1,459 games in, an average of 97.3 per team — and measured the league’s spread against the nine final seasons in the bundled 2015–2024 standings file, three yardsticks apiece: the standard deviation of team winning percentage, the top-to-bottom gap, and the count of teams within fifty points of .500. The 2026 spread is .062. Every one of the nine finals landed higher, from .063 (2015) to .096 (2019). And the order matters more than the margin, because a 97-game record carries more random noise than a 162-game one, not less — if talent were equal across years, the partial season should be the wide one. It is the narrowest instead. By every measure these files can produce, 2026 is the most bunched MLB season in at least a decade, and the honest statistical adjustment makes that finding stronger, not weaker.

.0622026’s spread of team win% — below all nine bundled finals (.063–.096)
17 of 30teams within .050 of .500, tying 2024 for the decade’s most — at 97 games
1.222026’s Noll-Scully ratio so far; no bundled final season sits under 1.61

Three yardsticks, one honest bias

The data is the same pair of files behind this site’s earlier balance work: mlb_2026_standings.json, the live standings snapshot from the MLB Stats API (retrieved July 18, 2026), and standings_2015_2024.json, final regular-season records for 2015–2024 from the same API. One honest gap up front: the historical file omits 2020 entirely, because a 60-game season’s spread is not comparable to a 162-game season’s, so the “decade” here is nine final seasons, not ten. For each season I computed the population standard deviation of team win%, the gap between the best and worst records, and how many of the 30 clubs sat between .450 and .550. The 2026 numbers are identical whether I use the API’s win% field or recompute from wins and losses: .0620 either way.

Before any comparison, the bias, stated plainly: mid-season spreads run wide, and comparing one to final spreads tilts the table against parity, not toward it. A team’s observed win% is talent plus luck, and the luck term shrinks like 1/√n as games accumulate — a coin-flip league spreads out to a standard deviation of √(0.25/n), which is .0500 at 100 games but only .0393 at 162. Whatever spread 2026 shows through 97.3 games contains more residual luck than any of the nine final-season spreads it is being compared with. So the fair expectation, if 2026’s talent were spread like a typical recent season, is that its current SD should sit above the final-season numbers and drift down toward them by October. Finding it below all nine — before any correction — is therefore not an artifact of the early reading. It is the finding, with the bias running the other way.

The exhibit: nine finals and one partial season

Bar chart of the standard deviation of MLB team winning percentage for each final season 2015 through 2024, with 2020 omitted, plus a visually distinct red bar for 2026 so far. The nine navy final-season bars run .063 in 2015, .065 in 2016, .070 in 2017, .089 in 2018, a peak of .096 in 2019, then .088 in 2021, .089 in 2022, .080 in 2023, and .076 in 2024. The red 2026 bar, annotated as through roughly 97 games per team, is the shortest on the chart at .062.
Spread of team winning percentage (population SD), each bundled final season against 2026 through an average of 97.3 games per team. A partial season should run wider than a final one, and 2026 is narrower than all nine anyway. Data: MLB Stats API standings, bundled snapshots retrieved 2026-06-21 (finals) and 2026-07-18 (live 2026).

Read the red bar against the two navy bars at the left end first: 2015 (.063) and 2016 (.065) were the most balanced finals in the bundle, and 2026 is currently under both while still carrying a partial season’s extra noise. The rest of the shape is the story this site told in the competitive-balance piece: imbalance climbed through the tanking years to the 2019 peak — the Astros at .660, the Tigers at .292, a spread of 15.6 wins on the 162-game scale — then eased to 12.3 by 2024. On that same scale, 2026’s current spread is 10.0 wins.

The three parity yardsticks per season: population SD of team win% (raw and on the 162-game win scale), top-to-bottom win% gap, and teams within .050 of .500. Final seasons 2015–2024 (2020 omitted from the bundled file) vs 2026 through an average of 97.3 games. Data: MLB Stats API.
SeasonSD of win%SD × 162Top-to-bottom gapTeams .450–.550
2015.063310.3.22816
2016.065110.5.27616
2017.070011.3.24714
2018.088814.4.37711
2019.096315.6.3699
2021.087814.2.34012
2022.089014.4.34612
2023.079612.9.33316
2024.075812.3.35217
2026 so far.062010.0.24517

The secondary yardsticks agree with the headline one. The 2026 top-to-bottom gap — the .633 Dodgers (62–36) down to the .388 Angels (38–60) — is .245, smaller than eight of the nine finals; only 2015’s .228 beat it. There is no 2018 Red Sox (.667) at the top and no 2024 White Sox (.253, 41–121) at the bottom: the worst three records in baseball right now are the Royals (.398), Rockies (.394) and Angels (.388), and none of them is historically bad.

The luck floor, stepped through

Here is the √n machinery with real numbers, because it is the whole reason the comparison is fair to make in this direction. Imagine 30 teams of literally identical talent — every game a coin flip. Each team’s win% over n games then has a standard deviation of √(0.25/n). At 100 games that is √(0.25/100) = .0500; at 2026’s actual average of 97.3 games it is .0507; over a full 162 it is .0393. Pure luck spreads a 97-game league out to fifty-one points of win% — that is the floor no league can sit under, and playing out a full schedule lowers it to thirty-nine.

That floor lets you split any observed spread into talent and luck, since the two variances add: talent SD = √(observed² − luck²). For 2026 that is √(.0620² − .0507²) = .0357 of talent spread. Run the identical arithmetic on the nine finals (with the .0393 luck term at 162 games) and the estimated talent spreads run from .0497 (2015) up to .0879 (2019) — every single one above 2026’s. Equivalently, you can restate 2026’s spread as what it would look like with a full season’s smaller luck term: √(.0620² − 0.25/97.3 + 0.25/162) = .0531, about 8.6 wins on the 162 scale — under the decade’s previous floor of 10.3. And in the units of the Noll-Scully ratio — observed spread over the coin-flip floor at the same n — 2026 sits at 1.22, against a nine-season range of 1.61 to 2.45 (2023 was 2.03). However I slice it, the same answer: the compression is in the talent term, not the sample size.

Seventeen teams within fifty points of .500

The yardstick that translates most directly to watchability: 17 of 30 clubs currently sit between .450 and .550 — three of them (the Nationals, Red Sox and Twins) at .500 exactly. The nine bundled finals averaged 13.7 teams in that band; only 2024, with 17, ever matched what 2026 is doing right now. And the two counts are not equivalent, because at 97 games the luck term is still pushing teams out of the middle band, not into it. At the other extreme sits 2019, when just nine teams finished within fifty points of .500 and the league had effectively sorted itself into superteams and scrap heaps by June. The practical consequence shows up in the season tracker: beyond the three runaway division leaders — the Dodgers (.633), Brewers (60–37, .619) and Braves (56–40, .583) — nearly everything else is still a race, which is exactly what a .062 spread looks like from the inside.

Limitations, stated plainly

Four honest problems. First, 2026 is a snapshot, not a result: 1,459 games is about 60 percent of a schedule, the trade deadline had not yet arrived at the July 18 snapshot, and a deadline that sorts buyers from sellers could stretch the spread by October — the fair statement is that 2026 is on pace to be the tightest season in the bundle, not that it has finished as one. Second, the talent-luck split assumes every game is an independent coin weighted only by talent — it ignores schedule imbalance, home-field, and the fact that teams change midseason, so .0357 is an estimate with assumptions attached, not a measurement. Third, the bundle is nine seasons deep. It contains no 2020 (the 60-game year, deliberately) and no 2025 finals, and it cannot speak to expansion-era history — whether .062 would be remarkable against 1985 or 1968 is a question this file simply cannot answer, so “most bunched in a decade” is the full extent of the claim. Fourth, the .050 band around .500 is a convention, not a law of nature; it is the same band this site has used before, but the count is sensitive to where you draw it.

Reproduce it

Both files ship in the site’s data_layer/, and the whole computation is a dozen lines. The SD convention matches the earlier balance piece (population SD on the API’s win% field):

import json, math, statistics as st
from collections import defaultdict

live = json.load(open("data_layer/mlb_2026_standings.json"))
hist = json.load(open("data_layer/standings_2015_2024.json"))

pcts = [t["winpct"] for t in live["teams"]]                # 30 teams
n    = sum(t["W"] + t["L"] for t in live["teams"]) / 30    # 97.3 games
sd   = st.pstdev(pcts)                                     # .0620
gap  = max(pcts) - min(pcts)                               # .633 - .388 = .245
mid  = sum(abs(p - 0.500) <= 0.050 for p in pcts)          # 17 teams
talent = math.sqrt(sd**2 - 0.25/n)                         # .0357

by = defaultdict(list)
for t in hist["teams"]:
    by[t["season"]].append(t["winpct"])
for s in sorted(by):
    print(s, round(st.pstdev(by[s]), 4))
# 2015 .0633 ... 2019 .0963 ... 2024 .0758 -- all nine above .0620

The chart is charts/chart_parity_2026.py; it reads only the two JSONs, so re-running it against any morning’s standings snapshot re-scores the league’s parity against the same nine finals.

Sources & Further Reading

  • Live 2026 standings: MLB Stats API regular-season standings, bundled as data_layer/mlb_2026_standings.json (retrieved 2026-07-18; 1,459 games played at the snapshot).
  • Final standings 2015–2024: MLB Stats API, bundled as data_layer/standings_2015_2024.json (retrieved 2026-06-21; 2020’s 60-game season omitted).
  • Standard deviation as a measure of spread — the machinery behind every number here — is covered in Chapter 6: Numerical Summaries: Center, Spread, and Shape (free, DataField.dev).
  • The coin-flip floor √(0.25/n) and the Noll-Scully framing are worked through in this site’s Noll-Scully explainer.