토이프로젝트 정리 노트. Statcast pitch-level 2015–2024, 전 투구 7.0M개 중 1루에만 주자가 있는 126만 투구. 처리변수는 선행주자 sprint speed. 도루 결과는 Retrosheet 이벤트로 매칭. 코드는 repo.
이 분석은 롯데 황성빈을 보다가 시작했다. 발이 빠르고, 1루에 나가면 큰 리드와 가짜 스타트로 투수를 끊임없이 흔든다. 영리하게 거슬리는 주루다. 보면서 늘 궁금했다. 저 소란이 뒤에 선 타자한테 진짜 도움이 될까. 내 직관으로는 분명히 도움이 된다고 느꼈는데, 그게 데이터에 찍히는지는 다른 문제다.

황성빈 본인을 볼 데이터는 없다. KBO는 pitch-level이 공개가 안 돼서, 전 투구가 다 찍히는 MLB 2015–2024로 같은 메커니즘이 잡히는지 봤다. 질문은 그대로다. 발 빠른 1루주자가 투수의 구종 선택을 바꾸는가, 바꾼다면 그게 뒤 타자한테 득이 되는가.
먼저 통설부터. 발 빠른 주자가 1루에 나가면 투수가 패스트볼을 더 던진다고들 한다. 변화구는 홈까지 느리게 들어와 포수 송구 시간을 못 벌고, 흙에 박히면 도루를 헌납하니까. 빠른 공으로 빨리 꽂아 포수를 돕는다는 얘기다. 말은 그럴듯한데 실제로 찍히는지, 찍힌다면 얼마나 큰지 보자.
1루에만 주자가 있는 표본으로 좁혔다. 2·3루에 주자가 있으면 도루 동기가 섞여 들어와서다. 처리변수는 선행주자의 시즌 sprint speed (Baseball Savant). pitcher와 batter를 FE로 흡수하고, 카운트 내생성을 피하려고 1차 스펙은 0-0 초구만 본다.
빠른 주자는 패스트볼을 부른다
찍힌다. 느린 주자(p10)에서 빠른 주자(p90)로 가면 0-0 초구 패스트볼 구사비율이 +3.6%p 오른다 (t = 13, 베이스라인 약 66%). 전 투구에 count FE까지 넣은 스펙에선 +2.0%p로 줄지만 부호와 유의성은 그대로다. cutter를 패스트볼에서 빼도, 10년을 4년으로 잘라도 안 바뀐다.

FE를 걸기 전 raw 기울기가 +1.0%p/ft/s인데 pitcher·batter를 흡수한 뒤가 +1.04%p다. 거의 안 움직인다. "발 빠른 주자 상대로 패스트볼이 많은 건 그냥 특정 투수나 특정 타자 상황 때문"이라는 설명은 여기서 빠진다. 같은 투수가 같은 타자를 상대해도 1루 주자가 빠르면 패스트볼을 더 던진다.
크기는 온건하다. 통설과 같은 방향이고, 거기에 숫자가 붙는 정도다.
그런데 그냥 패스트볼이 아니다
여기서 멈추면 "패스트볼 비율"만 본 셈이다. 어디로 던지는지를 같이 보면 그림이 달라진다.
빠른 주자가 있을 때 투수는 패스트볼을 존 위, 존 밖으로 뺀다. plate_z가 +0.034 ft 올라가고 (t = 10), above-zone 비율이 +1.3%p 늘고, in-zone 패스트볼은 −1.0%p 줄어든다. 단순히 패스트볼을 더 던지는 게 아니라 하이 패스트볼을 더 던진다.
높은 공을 던지는 이유는 도루 저지 루프를 다시 닫는다. 높은 공은 포수가 일어서면서 받아 곧바로 2루로 던지기 좋다. 빠른 구종에 더해 포구-송구 전환까지 빠른 공을 고른다는 뜻이다. 통설의 "패스트볼"이 사실은 "포수가 빨리 던지게 돕는 패스트볼"이었던 셈.
좌우투 비대칭도 같은 방향을 가리킨다. 좌투수는 1루를 보고 서서 견제가 좋으니 도루 견제 동기가 약하고, 따라서 속도 틸트도 작아야 한다. 실제로 LHP 기울기가 RHP보다 약 22% 작다. 다만 0-0에서 marginal하고 (p = 0.066) 전 투구 스펙에선 유의하지 않아서, 방향의 방증으로만 읽는 게 맞다.
시간 축으로도 한 번 더 누를 수 있다. 2023년 MLB가 베이스를 키우고 견제를 2회로 제한하면서 도루 시도가 30–40% 늘었다. 도루가 더 절실해진 시기라면 속도 틸트도 가팔라져야 한다.

풀드 DiD로 0-0 기울기가 +1.53%p/spread 가팔라진다 (t = 2.6, p = 0.008). 점프가 2024에 몰려서 즉각 반응이라기보다 지연 적응에 가깝고, 평행추세 검증이 약식이라 인과로 못 박진 않는다. 그래도 룰변경이 빠른 주자 견제를 더 절실하게 만든 그림과는 맞는다.
부산물 하나. 빠른 주자일수록 패스트볼 구속은 오히려 살짝 내려간다 (−0.03 mph/ft/s, t = −7.6). 4-seam 단독에서도 같으니 구종 구성 탓이 아니라 슬라이드스텝 때문으로 보인다. 견제용 빠른 딜리버리가 레그드라이브를 깎는다. 더 많은 패스트볼을 던지되 그 공은 조금 느려진다. 볼넷과는 무관하다 (corr ≈ −0.05).
황성빈이 투수를 흔든다는 인상은 적어도 여기까진 데이터에 있다. 구종이 바뀌고, 같은 패스트볼도 조금 느려지고, 던지는 위치가 올라간다. 빠른 주자는 투수의 선택을 분명히 움직인다.
그래서 다음 타자는 이득을 보나
여기까지면 타자에게 좋은 소식처럼 들린다. 내 직관도 여기였다. 빠른 동료가 1루에 있으면 더 예측 가능한 패스트볼이, 그것도 존 위쪽으로 온다. 노려 칠 만하지 않나.
wOBA는 안 움직인다. 느린→빠른 주자로 가도 +2.4 pts, p = 0.32다. 고정 가중치가 의심스러워 연도별 공식 woba_value로 다시 돌려도 +3.5 pts, p = 0.147로 똑같이 비유의다. PA 단위 wOBA 분산이 커서 ±5 pts 밖 효과는 배제되지만, 탐지되는 이득은 없다.
투수를 흔드는 데까진 내 직관이 맞았다. 다만 그 흔듦이 타격 결과로는 새지 않는다. 왜 없을까. 한 가지 선택이 두 가지 결과를 동시에 만든다. 투수가 하이 패스트볼로 스트라이크존을 내주면, 타자는 볼넷을 조금 더 얻지만(이득) 칠 공이 없다(무이득). 존 위·밖으로 빠진 공은 받아서 볼넷으로 가는 게 전부지 드라이브를 걸 수 없다.
| 결과 | 느린→빠른 | t |
|---|---|---|
| 볼넷% | +0.66 %p | 5.2 |
| 출루% | +0.54 %p | 2.5 |
| 삼진% | −0.38 %p | −2.1 |
| 헛스윙% (per-pitch) | −0.29 %p | −3.8 |
| 안타% | −0.16 %p | −0.8 |
| wOBA | +2.4 pts | 1.0 |
볼넷과 출루는 유의하게 오르고, 헛스윙과 삼진은 줄고, 안타·장타로는 안 이어진다. 채널을 분해하면 볼넷이 wOBA에 +4.6 pts를 보태는데, 유일하게 안정적으로 남는 채널이 이거다. 파워 쪽은 약하다. HR이 p = 0.06로 걸칠 뿐 2루타·단타는 유의하지 않다. 그래서 "볼넷 이득과 장타 손실이 정확히 상쇄된다"고는 못 쓴다. 상쇄의 파워 leg가 검정력이 약해서, 그 상쇄가 강제된 건지 우연인지 데이터로 못 가른다. 확실한 건 볼넷이라는 작고 저가치인 이득 하나, 그리고 탐지되지 않는 net wOBA다.
per-pitch 득점가치(delta_run_exp)로 보면 더 분명하다. 빠른 주자 상황의 공은 타자 관점 +0.004 runs/PA, 사실상 0이다. N이 126만이라 겨우 유의할 뿐 (t = 1.99), 패스트볼% 쪽 t = 13과는 자릿수가 다르다. 효과크기로 읽으면 0이다.
예측 가능한데 왜 못 챙기나
예측 가능한 루틴이면 어떤 타자는 챙겨야 정상 아닌가. 적극적으로 노리는 타자, 파워 있는 타자, 하이 패스트볼을 잘 치는 타자라면.
타자 특성과 주자 속도의 상호작용은 전부 null이다. 적극성과 p = 0.81, 파워와 p = 0.83, 하이 패스트볼 처리력과 p = 0.99. 그룹을 나눠 speed→득점가치 기울기를 봐도 타입과 무관하게 다 0 근처다. 스킬갭은 아닌 것 같다. 구조적 제약에 가깝다. 이용에 가장 유리한 타입조차 더 못 뽑는다면, 그건 누구도 이용할 수 없는 루틴이라는 뜻이다. 예측 가능성이 무가치한 건 그 공이 애초에 칠 수 없는 공이라서다.
그 패스트볼은 정말 도루를 막나
루프가 거의 닫혔다. 빠른 주자 → 하이 패스트볼 → 포수 송구 유리 → 도루 저지. 마지막 화살표만 아직 검증 안 됐다. 정말 막나.
Statcast 투구 피드만으로는 도루 그 순간의 구종을 깨끗하게 못 본다. PA 종료구만 라벨이 붙고, base-state 전이로 도루를 추정하면 폭투·보크·수비 무관심이 섞여 2015년만 봐도 실제 2루 도루의 3배 넘게 오염된다. 그래서 Retrosheet 이벤트(SB2/CS2 라벨)를 Statcast에 매칭해 도루 시도 28,071건의 그 투구 구종을 복원했다.
도루 시도가 패스트볼류일 때 저지(CS)율이 비패스트볼보다 +8.1%p 높다 (raw 27.9% vs 19.8%). count·연도 FE, 주자 속도, pitcher FE를 넣어도 +8–9%p로 견고하고, 룰변경 이후엔 +9.3%p로 더 크다. 구속을 통제하면 빠른 공 자체가 CS를 +0.5%p/mph 올려서, time-to-plate 채널이 실재함을 보여준다.
다만 이건 상관이다. 인과로 읽으면 안 된다. 배터리가 도루를 예상하고 패스트볼을 콜하는 투구 선택 내생성이 깔려 있고, CS의 최대 교란인 포수 어깨는 통제하지 못했다 (이 Statcast 서브셋에 fielder_2가 없다). 더 곤란한 건 도루 시도 투구의 52%가 볼이라는 점이다. 흙에 박히는 브레이킹볼은 송구가 물리적으로 불가능하니, +8%p의 상당 부분은 전략이 "통한" 증거라기보다 주자가 브레이킹볼을 노려 뛴 선택성일 수 있다. 게다가 빠른 주자는 애초에 잡기 어려우니, 빠른 주자 케이스의 net 효과는 더 모호하다.
포수 어깨를 넣고, 도루 투구의 plate_z를 보존해서 하이 패스트볼이 실제로 더 잡는지를 보는 게 다음이다. 지금 말할 수 있는 건 여기까지다. 투수는 빠른 주자에게 존을 내주고 견제를 산다. 타자는 그 거래에서 볼넷 하나를 줍지만 칠 공은 못 받는다. 그 견제가 실제로 도루를 막아주는지는, 절반이 흙바닥인 공들 앞에서 아직 잘 모르겠다.
Data: Statcast pitch-level (pybaseball) 2015–2024, 1루-only 1,259,498 투구 + 도루 28,071 시도 (Retrosheet ⋈ Statcast). 식별: linearmodels AbsorbingLS, cluster (pitcher, runner). 도루 저지 회귀는 association — 투구 선택 내생성·포수 미통제. n(0-0) = 350,506, n(PA) = 352,540.