상세 컨텐츠

본문 제목

1. KBO 포스트시즌 진출 확률 계산 - 개요

야구-칼럼/KBO 포스트시즌 진출 확률

by 야구고물상 2021. 9. 26. 21:39

본문

반응형

이 프로젝트를 하는 동기

야구팬이라면, 언제나 포스트시즌과 관련된 이야기를 합니다. MLB, NPB에서는 물론 KBO에서도 응원 팀이 포스트시즌을 진출하느냐 아니냐는 아주 큰 관심사입니다. 그렇기 때문에 많은 기사에서 이런 기사들을 찾아볼 수 있습니다. ‘30승 선착 팀 포스트시즌 진출 확률 x%’ 같은 기사들을 말이죠. 그런데 사실 이런 기사들은 제대로 된 확률을 다루는 기사라고 할 수는 없습니다. 그건 과거의 일을 들춰낸 기록일 뿐이지, 진짜로 해당 팀이 포스트시즌에 진출할 거라고 예상되는 확률이라고 할 수는 없습니다. 그렇기 때문에, 몇몇 사람들은 진짜 각 팀별로 포스트시즌 진출 확률이 어느 정도 될지 계산하곤 합니다. 제가 이전에 그런 글을 몇 번 쓴 적이 있고, 황규인 기자님도 그런 글을 쓴 적이 있죠.

MLB에서는 좀 더 적극적입니다. 아예 시즌 시작부터 지금까지 포스트시즌 진출 확률을 계산해서 제공하고 있죠. 팬그래프, 베이스볼 레퍼런스, 그리고 파이브서티에잇 같은 경우가 그렇습니다. 팬그래프의 경우 Steamer와 Zips 프로젝션을 적절히 혼합하여 제공하고 베이스볼 레퍼런스는 이전 100경기 에서의 팀 퍼포먼스를 이용하며 파이브서티에잇의 경우 체스/바둑/테니스 등에서 자주 사용하는 ELO 레이팅을 이용합니다.

제가 여기에서 주목한 건 KBO는 MLB처럼 매일의 포스트시즌 진출 확률을 제공하는 사이트가 없고, 그런 그래프를 제공하는 사이트는 더더욱 없다는 점이었습니다. 그렇기 때문에, 제가 이를 해 보기로 했습니다. 이미 계산 자체는 해 본 적도 있으니까요.

Figure 1. Fangraphs.com에서 제공하는 MLB Playoff Odds의 예시.


간략한 계산 과정

먼저, 시즌 시작 전 모든 팀의 승률과 기대 포스트시즌 진출 확률을 0.500/50%로 설정했습니다. 이렇게 하는 이유는 첫째, 조금이라도 더 이론적인 계산이 되기를 원했기 때문이고 둘째, 어찌 됐든 원론적으로 시즌 시작 전 모든 팀이 포스트 시즌에 갈 확률은 모두 같기 때문입니다. 그러니 시즌 시작 전 계산의 시작점도 모두 같아야 한다는 게 제 생각입니다. 이게 현실성 없다고 생각하실 수도 있겠지만, 저의 생각이 이렇기 때문에 이 부분과 관련해서 바꿀 생각은 추호도 없습니다.

다음은 팀의 기대 승률을 계산할 필요가 있을 겁니다. 사실 이 부분은 팬그래프에서 하듯이 프로젝션을 할 수 있다면 그게 가장 좋을 겁니다. 하지만 프로젝션을 하기에는 우리나라 기준으로는 아직 부족한 면이 있습니다. 훨씬 더 많은 연구가 필요하겠죠. 그래도 걱정할 필요는 없습니다. 우리가 사용할 수 있는 쉬운 방법이 있습니다. 피타고리안 기대 승률을 이용하는 겁니다. 여러 사례에서 보듯이, 팀의 퍼포먼스 수준을 알기에 피타고리안 기대 승률을 이용하는 것은 나쁘지 않은 선택입니다. 그리고 프로젝션을 하지 않는 이상 가장 정확하기도 할 것입니다.

다음은 각 팀별 상대 승률을 계산할 필요가 있겠습니다. 이 승률을 계산하는 것은 Log5 시스템을 사용합니다. 하지만 피타고리안 기대 승률을 그대로 이 계산에 적용할 수는 없습니다. 각 팀 별 상대 팀 승률이 0.500이 아니기 때문이지요. 이 차이 때문에 피타고리안 기대 승률을 그대로 이용하여 각 팀 별 상대 승률을 계산하면 그 팀의 승률을 과대/과소평가하게 됩니다. 그렇기 때문에 이를 조정할 필요가 있습니다. 이 부분을 지금까지 상대했던 상대 팀의 수준을 고려하여 기대 승률을 조정합니다.

기대 승률을 조정했다면, 이제 앞으로 기대되는 기대 승률을 계산해 줄 필요가 있습니다. 현재 기대 승률을 그대로 계산할 수 없는 이유는 현재 승률이 몇몇 평균에서 많이 벗어난 득점/실점에 의해 과대/과소평가될 가능성이 있고, 또한 미래 기대 승률이 현재의 퍼포먼스를 똑같이 따라가지 않을뿐더러 여러 외부 요인이 있기 때문입니다. 이는 현재까지의 기대 승률과 앞으로의 기대 승률관의 상관 관계인 r 값을 구하고 그 r 값을 이용하여 평균으로의 회귀(Regression to the Mean)를 이용, 계산해 줍니다.

이제 앞으로 기대되는 기대 승률을 계산했다면 상대 팀과 홈, 원정을 고려해 앞으로 기대되는 기대 상대 전적을 계산해 줍니다. 이 또한 Log5 시스템을 통해 계산합니다. 이 때 무승부는 의도적으로 제외했습니다. KBO 리그에서는 엄연히 무승부 제도가 존재하지만 Log5 시스템을 이용할 경우 이를 처리할 방법이 없습니다. 그렇기 때문에 앞으로 기대되는 상대 전적 계산에서 무승부는 제외하도록 했습니다.

바로 앞 문단에 나오는 상대 전적의 경우, 앞으로 남은 경기에 대해 각각의 상대 전적이 기대되는 확률을 계산할 수 있습니다. 예시로, A팀과 앞으로 10경기가 남은 상황을 들도록 하겠습니다. A팀과의 상대 승률이 0.55일 경우, 10경기를 다 이길 확률은 $0.55^{10}$ 이 됩니다. 9경기를 이길 확률은 $\left(\begin {matrix}10\\9\end {matrix}\right)(0.55^{9}) \cdot (0.45)$입니다. 8경기를 이길 확률은 $\left(\begin {matrix}10\\8\end {matrix}\right)(0.55^{8}) \cdot (0.45^{2})$입니다. 이런 식으로 10경기에서 10승, 9승, 8승 ,..., 1승, 0승을 할 확률을 각각 계산할 수 있습니다. 이 모든 경우에 대해 상대 전적 별 기대 확률을 계산할 수 있고, 이를 적용해 각 팀의 승률 별 기대 확률을 구할 수 있고, 기대 순위와 포스트시즌 진출 확률을 구할 수 있습니다. 문제는, 이를 다 계산하기 위해서는 제 컴퓨터가 계산하기에는 한계가 있다는 겁니다. 단적으로, 시즌 시작 전에 기대되는 모든 결과의 가짓수는 $17^{45}$ 가지인데, 이는 약 $2.34 \times 10^{55}$ 가지입니다. 1초에 1000가지의 결과를 계산할 수 있다고 해도 약 $10^{52}$ 초는 걸릴 것이고, 이는 연수로 약 $3 \times 10^{44}$ 년입니다. 이 계산을 하려면 컴퓨터가 뻗거나 제가 먼저 죽거나, 아니면 지구가 먼저 죽을 거라는 결론에 이르게 되었죠. 그렇기 때문에 이를 몬테카를로 시뮬레이션으로 해결하기로 했습니다. 팬그래프는 20000번의 시뮬레이션을 하는데, 저는 10만 번을 하기로 했습니다. 그리고 이 시뮬레이션 결과를 통해 포스트시즌 진출 확률을 계산해 줍니다.

요약하자면, 포스트시즌 진출 확률을 계산하기 위해
1. 팀의 퍼포먼스 수준은 피타고리안 기대 승률로 정의합니다.
2. 지금까지 상대한 상대 팀 별 수준과 홈, 원정 등을 고려하여 기대 승률을 조정해 줍니다.
3. 피타고리안 기대 승률에서 노이즈를 조정해 주기 위해 평균으로의 회귀(Regression toward the Mean) 방법을 이용하여 잔여 경기 기대 승률을 계산합니다.
4. 남은 경기에서 상대 팀과 홈, 원정 등을 고려하여 100000번의 몬테카를로 시뮬레이션을 통해 포스트시즌 진출 확률을 계산해 줍니다.

다음 편은 2. 피타고리안 기대 승률의 적용과 기대 승률 조정입니다.

KBO PS Odds 바로가기

반응형

관련글 더보기

댓글 영역