Moneyball Labs

Least squares, game bootstrap

Fitting the KBO's Pythagorean exponent

Bill James squared runs to predict wins. The game log lets us fit the exponent this league actually uses.

Computed on request from the record book (Oct 13, 2026) and 720 finals in the game log.

The finding

Fitted to the 720 finals so far, the exponent that best turns this season's runs into wins is 1.84, with a 95% bootstrap interval of 1.37–2.36. Bill James's original 2 sits inside that range, so ten clubs and one season cannot tell the two apart. Pythagenpat, which the standings page uses, implies 1.94 for a league scoring 10.14 runs a game between the two sides; that is inside the interval too.

The exponent matters less than the curve suggests: across the plausible range, the error barely moves — 5.0 wins per club at the fit against 5.1 at a flat 2. What matters more is what is left over. LG have won 6.8 more games than their runs predict; Hanwha 11.9 fewer. One standard deviation of pure luck over a season this long is about 5.9 wins, so 2 clubs sit outside ±1 SD where about 3 would by chance. Carried to the 2025 table without refitting, the fitted exponent misses by 4.0 wins per club, against 4.6 for 2 and 4.3 for Pythagenpat.

Fitted exponent

1.84

95% interval

1.37–2.36

1000 resamples

Pythagenpat implies

1.94

10.14 runs a game

Error, wins per club

5.0

exponent 2: 5.1

Small sample. 10 clubs is 10 data points for one parameter: treat the interval, not the point, as the result.

Runs ratio against wins ratio, on a log scale

On log axes the Pythagorean formula is a straight line through the origin, and its slope is the exponent. The shaded wedge is the 95% interval on that slope.

−1.0−0.50.00.5−0.40−0.200.000.20LG 78–65, 723–726LGKT 90–49, 825–649KTSSG 65–74, 706–797SSGKiwoom 50–90, 565–817KiwoomSamsung 83–58, 806–669SamsungLotte 64–77, 679–742LotteKIA 79–63, 769–664KIADoosan 73–66, 688–630DoosanNC 64–78, 719–772NCHanwha 57–83, 821–835Hanwhalog(runs scored ÷ runs allowed)log(wins ÷ losses)
Least-squares line through the origin: slope 1.83 (SE 0.29), r² 0.82. Dashed: exponent 2.

How the error changes with the exponent

Root-mean-square error in wins per club for every exponent from 1 to 3. The flat bottom is the honest result: a wide band of exponents fit the table almost equally well.

Error at each exponent95% bootstrap interval
5.06.07.08.01.01.52.02.53.02PythagenpatExponentError (wins)

Wins above the fitted expectation

Each club's actual wins minus the wins its runs predict at the fitted exponent. The bar is one standard deviation of binomial luck at that club's expected record: a dot inside it is ordinary.

−10−50+5+10LG78–65KT90–49SSG65–74Kiwoom50–90Samsung83–58Lotte64–77KIA79–63Doosan73–66NC64–78Hanwha57–83Wins above expectation

Method

W% = RS^k ÷ (RS^k + RA^k)

Each club's runs scored, runs allowed, wins and losses are totalled from the game log (720 regular-season finals; 17 ties are left out of the win-loss record). The exponent k is the value that minimises the squared error in wins, Σ(W − (W + L)·W%)², found by golden-section search. The interval comes from resampling the season's games with replacement 1000 times, rebuilding every club's totals and refitting: it reflects how much the answer depends on which games happened to be played.

As a check, the same exponent can be read as the slope of log(W/L) on log(RS/RA) through the origin: 1.83, 95% interval 1.19–2.48. The two methods weight the clubs differently and agree within their intervals.

Ten clubs and one season is a thin base for a curve; the interval is the headline, not the point estimate. Runs and wins come from the same games, so the residual folds together sequencing, bullpen use in close games, and plain luck — the data cannot separate them. Postponed games are not in the record until they are played.