Moneyball Labs

Weighted quadratic, delta method

When do KBO players peak?

Birth dates from the record centre against wRC+ and FIP — once as a snapshot, once as the same player a year apart, which is the only honest way to do it.

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

The finding

Plot this season's 155 hitters with 100+ plate appearances against their age and the curve is close to flat: a weighted quadratic explains 0.3% of the spread in wRC+, and in 39% of resamples it has no peak at all. That is the survivor problem in one picture: a 37-year-old is on a KBO roster only because he can still hit, so the old end of the chart is a hand-picked sample.

Comparing the same 109 hitters a year apart removes most of that selection. Their change in wRC+ falls by 1.0 points for every year of age (95% −2.2–+0.2), crossing zero at 26.0 (95% 20–33): younger than that, hitters tend to improve; older, to decline. Hitters 36 and over moved −19.2 points on average (n = 22), those 23 and under −6.2 (n = 14).

For pitchers, the snapshot of 150 arms with 30+ innings has FIP at its best around 33.6 (95% 30–40) — with the same survivor caveat, and more of it: young pitchers are often given innings to develop, not because they are good.

Growth stops at (same hitter)

26.0

20–33

Change per year of age

−1.0

wRC+ points, p = 0.09

Snapshot r² (hitters)

0.003

155 hitters

Pitcher FIP best at

33.6

30–40

Hitters: wRC+ by age, this season

Each faint dot is a hitter, sized by plate appearances. The line is the PA-weighted quadratic with its 95% band; white dots are two-year age-group means with 95% intervals (grey when fewer than 10 hitters).

Weighted quadratic, 95% bandAge-group mean
0501001502025303540Kim Do-yeong, 22: 187Austin Dean, 32: 191Koo Ja-wook, 33: 188Hilliard, 32: 161Choi Won-joon, 29: 156Park Sung-han, 28: 138Victor Reyes, 31: 156Na Sung-bum, 36: 149Park Min-woo, 33: 131Noh Si-hwan, 25: 134Yonathan Perlaza, 27: 147Han Dong-hee, 27: 147Ahn Hyun-min, 22: 165Lewin Diaz, 29: 141Choi Jeong, 39: 171Kim Ju-won, 23: 112Yang Eui-ji, 39: 113Matt Davidson, 35: 147Heo In-seo, 22: 119Choi Hyoung-woo, 42: 129Castro, 32: 151Han Joon-su, 27: 126Moon Hyun-bin, 22: 126Kang Baek-ho, 26: 135Park Joon-sun, 19: 129Park Geon-woo, 35: 130Ko Seung-min, 25: 116Kim Hwi-jip, 24: 133Kim Ji-chan, 25: 108Heo Kyung-min, 35: 124Song Chan-ui, 27: 131Seo Geon-chang, 36: 115Ryu Ji-hyuk, 32: 102Kang Min-ho, 40: 115Kim Hyung-joon, 26: 103Kim Min-seok, 22: 118Park Chan-ho, 31: 90Park Seung-kyu, 25: 129Park Jae-hyun, 19: 112Park Hae-min, 36: 99Kim Sun-bin, 36: 102Moon Jung-bin, 22: 138Lee Jae-hyun, 23: 112Jeon Byeong-woo, 33: 107Chun Jae-hwan, 32: 116Kim Sung-yoon, 27: 110Cameron, 29: 124Son Sung-bin, 24: 94Park Dong-won, 36: 92Jang Sung-woo, 36: 108Ahn Jae-seok, 24: 100Guillermo Heredia, 35: 113Cho Hyung-woo, 24: 91Ryu Hyun-in, 25: 122Choi In-ho, 26: 127Hwang Sung-bin, 28: 85Moon Bo-gyeong, 25: 98Kim Geon-hee, 21: 87Jeon Min-jae, 27: 85Choi Ji-hoon, 28: 85Oh Ji-hwan, 36: 89Hiura, 29: 119Kim Hyun-soo, 38: 108Ko Myeong-joon, 23: 115Shim Woo-joon, 31: 80Kim Sang-su, 36: 93Na Seung-yeop, 24: 112Kim Woong-bin, 30: 100Kwon Dong-jin, 27: 99Choo Jae-hyun, 27: 99Cho Su-haeng, 32: 118Kim Ho-ryeong, 34: 84Kim Tae-yeon, 29: 108Luis Severino, 26: 137Jung Joon-jae, 23: 84Kim Tae-gun, 36: 88Ahn Joong-yeol, 30: 100Ahn Chi-hong, 35: 87Kim Jae-hwan, 37: 98Park Jung-hyun, 24: 111Jung Su-bin, 35: 80Lim Byeong-uk, 30: 89Chun Sung-ho, 28: 91Kang Seung-ho, 32: 105Lee Jae-won, 26: 122Park Ji-hoon, 25: 87Aderlin Rodriguez, 34: 128Chae Eun-sung, 36: 113Park Jung-woo, 28: 109Kim Sung-uk, 33: 109Jang Joon-won, 30: 88Lee Woo-sung, 31: 93Park Sang-joon, 24: 115Koo Bon-hyuk, 29: 76Kim Do-hwan, 26: 79Jang Du-sung, 26: 74Jeon Ui-san, 25: 97Park Chan-hyuk, 23: 90Han Tae-yang, 22: 72Lee Ji-young, 40: 67Oh Myeong-jin, 24: 87Blaine Hardy, 29: 97Lee Jin-young, 28: 82Oh Jae-won, 19: 75Han Ji-yoon, 20: 94Lee Won-seok, 27: 79Park Ju-hong, 25: 74Kim Heon-gon, 37: 96Ha Ju-seok, 32: 67Ryan Dale, 25: 67Hong Chang-gi, 32: 84Choi Jung-won, 26: 66Kwon Hee-dong, 35: 84Kim Dong-heon, 21: 53Moon Sung-ju, 29: 82Lee Ju-hyung, 25: 65Kim Han-byeol, 25: 63Yeo Dong-uk, 20: 66Oh Tae-gon, 34: 84Han Seok-hyun, 32: 71Han Seung-taek, 32: 53Lee Do-yoon, 29: 65Ahn Sang-hyun, 29: 64Yoo Gang-nam, 33: 42Oh Yoon-seok, 34: 82Kim Min-hyuk, 30: 78Lee Hyung-jong, 37: 69Ryu Seung-min, 21: 55Son Ho-young, 31: 57Lee Ju-heon, 23: 39Kim Kyu-sung, 29: 49Seo Ho-chul, 29: 50Bae Jung-dae, 31: 46Hwang Young-muk, 26: 53Park Seung-uk, 33: 48Shin Min-jae, 30: 59Yoon Joon-ho, 25: 36Han Yu-seom, 36: 62Yang Woo-hyun, 26: 26Choi Jae-hoon, 36: 21Yoon Dong-hee, 22: 70Park Si-won, 25: 53Kim Dae-han, 25: 48Yang Seok-hwan, 34: 57Shin Jae-in, 19: 54Lee Yu-chan, 27: 25Park Min, 25: 32Son Ah-seop, 38: 47Choi Ju-hwan, 38: 68Noh Jin-hyuk, 36: 61Aaron Brooks, 30: 35Kwon Hyuk-bin, 20: 34Kim Young-woong, 22: 14Lee Gang-min, 19: −7Jeon Jun-woo, 40: 3718–22: 106 (n = 20)23–24: 101 (n = 14)25–26: 98 (n = 26)27–28: 110 (n = 16)29–30: 97 (n = 19)31–32: 114 (n = 17)33–34: 108 (n = 11)35–36: 104 (n = 20)37–45: 102 (n = 12)Age on 1 JulywRC+
18–22: n 20 · 23–24: n 14 · 25–26: n 26 · 27–28: n 16 · 29–30: n 19 · 31–32: n 17 · 33–34: n 11 · 35–36: n 20 · 37–45: n 12

The same hitter, one year later

Change in wRC+ from last season to this for hitters with enough plate appearances in both, grouped by age, with 95% intervals and the fitted line. Above zero, the group improved.

−200+20202530354026.018–23: −6.2 (n = 14)24–26: −0.3 (n = 19)27–29: +2.1 (n = 21)30–32: +4.6 (n = 18)33–35: −3.9 (n = 15)36–45: −19.2 (n = 22)Age on 1 JulyChange in wRC+
18–23: n 14 · 24–26: n 19 · 27–29: n 21 · 30–32: n 18 · 33–35: n 15 · 36–45: n 22

Pitchers: FIP by age, this season

As above, weighted by innings. Lower is better, so the curve's low point is the best age.

4.06.02025303540Kwak Bin, 27: 2.8Ko Young-pyo, 34: 3.2James Naile, 33: 3.7Wes Benjamin, 32: 2.9Adam Oller, 31: 3.7Won Tae-in, 26: 3.3Ryu Hyun-jin, 39: 3.4Jeremy Beasley, 30: 3.7Raul Alcantara, 33: 3.9Choi Min-seok, 19: 3.8So Hyung-joon, 24: 3.6Pedro Avila, 29: 2.7Austin Reilly, 29: 3.7Tolhurst, 26: 4.1Ahn Woo-jin, 26: 3.3Lim Chan-kyu, 33: 4.3White, 26: 4.0Zach Logue, 30: 4.3Ha Young-min, 31: 4.0Elier Rodriguez, 28: 4.3Park Se-woong, 30: 4.3Ariel Jurado, 30: 4.3Koo Chang-mo, 29: 4.5Na Kyun-an, 28: 4.4Fedek, 30: 3.0Choi Won-tae, 29: 4.3Oh Won-seok, 25: 4.0Lee Young-ha, 28: 3.2Dae Ni-el, 29: 2.6Kim Jin-uk, 23: 4.7Bo Schultz, 32: 3.2Taylor, 30: 4.6Kim Min, 27: 3.4Ka Ra-seu-ko, 39: 3.3Logan Allen, 29: 4.3Bae Dong-hyun, 28: 4.2Kim Min-joon, 20: 4.4Wang Yen-cheng, 25: 4.9Kim Jae-yoon, 35: 3.8Bae Je-sung, 29: 4.1Tyler Wells, 29: 4.6Lee Seung-min, 25: 4.0Park Si-won, 20: 3.8Ryan O'Loughlin, 26: 4.4Toda, 25: 5.1Choi Joon-yong, 24: 4.1Cho Byeong-hyun, 24: 3.8Park Sang-won, 31: 3.8Lee Ro-un, 21: 4.3Yuta Sugimoto, 26: 4.4Park Young-hyun, 22: 4.2Jeon Sang-hyun, 30: 3.7Cho Dong-uk, 21: 4.1Yang Chang-seop, 26: 4.9Sung Young-tak, 21: 4.2Yuto Takahama, 26: 4.0Bo Seu, 34: 2.8Won Jong-hyun, 38: 4.0Takada, 23: 4.2Matt Sauer, 27: 5.0Kim Taek-yeon, 21: 4.3Choi Seung-yong, 25: 5.1Park Chi-kook, 28: 4.1Kim Won-joong, 33: 4.4Kim Jung-woo, 27: 4.4Yang Hyeon-jong, 38: 5.2Kim Young-woo, 21: 4.0Cho Sang-woo, 31: 4.6Jang Hyun-sik, 31: 4.3Son Ju-young, 27: 4.2Takeda, 33: 5.1Park Joon-hyun, 18: 5.0Kazuki Iimura, 28: 3.6Park Jung-min, 22: 4.6Lee Tae-yang, 35: 3.6Lee Sang-kyu, 29: 4.6Ryosuke Shirakawa, 25: 5.0Bae Jae-hwan, 31: 4.4Hyun Do-hoon, 33: 4.6Lee Geon-uk, 31: 4.4Zach Rosenberg, 30: 3.6Elieser Hernandez, 27: 5.0Woo Gang-hoon, 23: 4.6Hatch, 31: 4.2Kwak Do-kyu, 22: 3.8Jeon Yong-ju, 26: 4.4Lim Gi-young, 33: 4.7White, 31: 3.7Han Du-sol, 29: 4.1Son Dong-hyun, 25: 4.9Park Jung-hoon, 20: 4.9Song Seung-gi, 24: 5.0Lee Min-woo, 33: 4.8Jung Hae-young, 24: 4.7Lee Joon-hyuk, 23: 4.3Park Jin-hyung, 32: 4.4Kim Tae-hoon, 34: 4.6Lee Seung-hyun, 24: 4.8Kim Jin-su, 27: 5.1Kim Min-su, 33: 4.7Kim Sung-jin, 28: 4.7Woo Kyu-min, 41: 4.7Lee Min-seok, 22: 5.0Joo Kwon, 31: 5.1Lee Byeong-heon, 23: 4.9Lee Jung-yong, 30: 5.1Kim Jin-sung, 41: 5.0Lee Seung-hyun, 34: 4.9Jang Yu-ho, 26: 5.1Son Ju-hwan, 24: 5.0Lim Ji-min, 22: 5.2Jeon Sa-min, 26: 5.4Han Seung-hyuk, 33: 4.9Choi Min-joon, 27: 5.6Chirinos, 32: 5.0Kim Tae-hyung, 19: 5.6Kim Beom-su, 30: 5.3Moon Seung-won, 36: 5.5Cho Young-geon, 27: 5.3Hwang Joon-seo, 20: 5.5Anthony Benigiano, 28: 5.7Shin Young-woo, 22: 5.4Ham Deok-ju, 31: 5.4Jang Chan-hee, 18: 5.7Park Sin-ji, 26: 5.6Han Jae-seung, 24: 5.6Kim Tae-kyung, 25: 5.7Lee Hyung-beom, 32: 5.6Lee Yong-chan, 37: 5.7Jim Meo-maen, 31: 5.7Park Joon-young, 23: 5.9Kim Geon-woo, 23: 5.9Bae Chan-seung, 20: 5.9Kim Yoon-sik, 26: 6.0Jeon Joon-pyo, 21: 6.0Jung Woo-ju, 19: 6.1Jeon Young-joon, 24: 6.0Lee Ui-ri, 24: 6.0Shin Min-hyuk, 27: 6.1Park Si-hoo, 25: 6.1Choi Ji-min, 22: 6.2Hwang Dong-ha, 23: 6.1Park Ji-sung, 19: 6.2Noh Kyung-eun, 42: 6.4Shota Miyaji, 26: 6.7Ryu Jin-uk, 29: 6.7Song Myeong-gi, 25: 6.7Kim Jong-su, 32: 6.9Kim Jin-ho, 28: 6.9Park Joon-young, 24: 7.318–22: 4.8 (n = 24)23–24: 5.1 (n = 19)25–26: 4.6 (n = 24)27–28: 4.5 (n = 19)29–30: 4.1 (n = 21)31–32: 4.2 (n = 18)33–34: 4.1 (n = 14)35–36: 4.4 (n = 3)37–45: 4.5 (n = 8)Age on 1 JulyFIP
18–22: n 24 · 23–24: n 19 · 25–26: n 24 · 27–28: n 19 · 29–30: n 21 · 31–32: n 18 · 33–34: n 14 · 35–36: n 3 · 37–45: n 8

Method

Age is taken on 1 July of the season from the record centre's birth dates (305 players matched). The snapshot fit is weighted least squares, with plate appearances (or innings) as weights:

value = β₀ + β₁(age − 29) + β₂(age − 29)² · peak = 29 − β₁ ÷ (2β₂)

The peak's interval resamples players 800 times; draws where the curve opens the wrong way (no interior peak) are counted and reported rather than hidden. The delta method takes each hitter with enough playing time in both seasons, computes this year's wRC+ minus last year's, weights by the harmonic mean of the two seasons' plate appearances, and fits a straight line in age; the age where that line crosses zero is where improvement turns to decline.

Survivor bias runs through all of it. The snapshot only sees players good enough to be playing; the delta method only sees players who kept a job for two seasons, which leaves out those who declined their way out of the league and makes the late-career drop look gentler than it is. Biographies exist only for players on a current roster. Imported players arrive older and pre-selected for performance. One pair of seasons is a small base for an aging curve; a career-length study would need many more years on disk.