AI 경마 예측 서비스 개발기
처음 시작은 경마분석론에 AI를 적용해 베팅을 하면 결과가 어떻게 나올까?로 시작한건데요
경마분석방법이 생각보다 많았고 고려해야할 항목도 많았습니다
그리고 결론을 먼저 말하면 경마는 데이터를 기반으로 하는 방법론들을 참고하되 직접 경마장에서 눈으로 확인하고 본인의 노하우와 합쳐져야 시너지효과가 난다고 말하고 싶습니다.
일단 공공데이터 포털에서 (data.go.k) 마사회의 25개 API를 승인 받아 활용했습니다

한국마사회 경주계획표,출전표 상세정보, 출전 등록말 정보, 경주기록 정보 등입니다.
메타데이터는 10년치를 다운받았는데요 용량이 대용량DB라고 까지 할수는 없었지만 조회할때 풀스캔하지않도록 주의가 필요했습니다
이렇게 과거 데이터를 모으고 여러 방법론을 적용해 분석해보았는데요 10년치를 전체 다 분석한뒤 최근3년치에 가중치를 주어 다시 반영하는게 결과적으로 더 나았습니다
경마예측분석론은
https://pickma.velooga.com/methods
여기 소개한것 처럼 유명한 경마방법론들을 적용시키긴 했는데요
이 29개 방법론중에 마사회에서 제공하는 데이터를 적용할수 있고 또 겹치는 항목들을 분류하다보니 실제로는 10개정도의 방법론내에서 분석을 하게 되는 것 같습니다
현재 활용중인 방법론:
- 종합 전력지수 : 최근 성적과 상대마 사이의 차이를 점수로 정리
- 최근 폼 분석: 최근 경기력의 상승·유지·하락 흐름을 분석
- 보정 속도지수: 경주 기록을 거리·주로 상태·당일 트랙 편차로 보정해 비교 가능한 속도로 바꿈
- 동적 상대전력 레이팅: 함께 달린 상대의 이후 성적까지 반영해 경주마다 말의 잠재 전력을 갱신
- 부담중량 영향: 직전 대비 부담중량 변화와 말별 중량 대응력을 분석
- 게이트·코스 편향: 거리와 경마장별 출발 번호,게이트점수로 주행스타일을 분석
- 2-stage 분석: 1단계 기초 전력 추정 후 2단계에서 오늘의 경주 조건을 반영
- 앙상블 분석: 현재 확보된 전력·최근 폼·거리·편성·기수·조교사·당일 조건 지표를 가중 결합해 0~100 통합 지수를 계산
- 조건부 로짓 경주모형: 현재 조건과 말별 최근 최대 10경기의 착순·거리 적합을 경주 내 상대적으로 표준화해 우승확률을 계산
마사회에서 데이터 미제공으로 인해 적용하지 못한 방법론이 오히려 더 많습니다.
(ex: 마사회에서는 실시간 배당률 정보를 제공하지 않아서 실시간배당률관련된 방법론은 적용할수없고 경주후 확정배당율만 활용하고 있습니다)
Benter 모델 https://datagolf.com/static/blogs/benter_paper.pdf
순위조합 확률모형 (Harville·Henery) https://epubs.siam.org/doi/abs/10.1137/1.9780898718386.ch30
방법론에 마사회 10년치 데이터에 적용해 나온 결과를 분석해서 종합점수를 산정하게 되었지만 항목별로 가중치의 변화를 주는건 매 경주가 끝날때마다 조정이 필요했습니다 (그렇게 가중치를 매번 조정한점수는 다음경주의 AI점수에 반영하게 되었습니다)

처음에는 그날 경주중 순서상관없이 1,2등말을 2번 정도 예측하는게 목표였습니다
분석을 계속하면서 나중에는 그날 경주중 3개, 4개의 1,2등을 예측하게 되어서 자신감이 생겼지만 그 다음주 확률이 확 떨어지는 경험을 하게되었습니다
원인은 그주는 우천관계로 주로상태가 불량했었는데요 과거 동일 주로상태의 데이터를 적용시키고 있었지만 가중치가 문제였습니다 주로,날씨가 정상이 아닌 특이한 상황일때는 그 항목의 가중치를 더 많이 주어야 했습니다
또한 1등마와 그 다음마들의 점수차이가 클때는 예상top5에서 다시 최근,당일 정보를 적용해 2등을 재선정하는게 더 나은 결과를 보여주었습니다.

또한 데이터 기반 분석이기 때문에 보통 그날 경주중 1R 등은 (UFC처럼 메인경기는 뒤에 있고 1R 2R 경주는 처음 출전하는 경주마들이 많습니다) 출전전적이 0인 처음 출전경주마의 경우 데이터가 없으니 기수,조교사의 기록을 많이 반영할 수밖에 없고 그런분석은 신뢰성이 많이 떨어집니다
첫출전마가 많이 포함된 경주는 직접 경마장에 가서 눈으로 확인하는게 더 나을 것 같습니다
다음문제는 이 분석을 바탕으로 실제 베팅을 하면 수익이 날까? 이었는데요
경주일 마다 결과가 틀리기도 했고 연승(3등안에 들어올 한마리)에 예상1등마에 계속 베팅하거나 복연승(등수상관없이 3등안의 2개마) 에서 결과가 좋을때도 있었지만 매경기 베팅하는것보다는 이분석들을 참고하여 자신만의 방법을 찾는게 낫겠다는 생각이 들었습니다.
예측 결과리포트 https://pickma.velooga.com/reports 도 공개하고 있는데요 보통 예측5개마중에 1,2등이 있는경우는 50%정도 되고 그경주일 1,2등 순번상관없이 2경기정도는 맞추는 것 같습니다

데이터 흐름이 좀 나아지고 있고 결과가 좋았던것에 영향을 주지 않는선에서 계속 가중치 수정하며 모의테스트하고 그다음경주에 적용하고를 반복할 것 같습니다.
개발하면서 느낀건 Codex sol 을 이용했는데요 코덱스가 10년치 데이터를 계속 풀스캔 하는경우가 있어서 Disk IO 문제로 DB서버 한계치가 되는경우가 몇번있었습니다
예전 DBA경험이 없었다면 코덱스에 제대로 작업지시를 못했을 것 같다라는 생각이 듭니다 또한 접속할때마다 API가 매번 분석을 하는구조여서 그날 결과값을 프런트에 캐싱하는등은 AI가 해주지않아서 나중에 추가작업이 필요했습니다. AI가 MVP까지는 잘 만들어 주지만 아직은 트래픽이 몰리거나 대용량DB를 염두하고 프로그래밍을 하지는 않는 것 같다고 느꼈습니다.
처음에는 경마를 다 개발한 뒤 경륜 경정에도 적용하려고 했으나 경마에 비해서는 분석할 데이터도 적고 그날의 전략이 더 중요한 것 같아서 이보다는 일본 경마 그리고 나중에는 미국 경마 예측 서비스를 목표로 하기로 했습니다.
두 국가 모두 우리나라 마사회처럼 무료로 API를 제공하지 않고 일본도 상업목적은 B2B로 따로 계약해야되어서 국내보다는 진입장벽이 높은 것 같습니다.
경마정보서비스분야가 좀 레드오션 (게다가 경마산업은 거대하지만 그렇다고 경마정보산업이 크다고 할 수는 없습니다)이기도하고 오래된 방식으로 계속 운영되는곳이 많습니다. 또한 경마정보인쇄물들은 데이터로 가득 채워져서 한눈에 보기도 힘들고 당일 변동사항도 반영이 잘 안되는 것 같습니다. 그래서 경마정보를 시인성좋게 보여주는것 만으로도 어느정도 경쟁력이 생기길 희망하고 있습니다
서비스명은 픽마 PickMa 입니다
픽마: https://pickma.velooga.com
구글플레이(안드로이드): https://play.google.com/store/apps/details?id=com.velooga.pickma
아이폰은 준비중입니다.
그리고 혹시 의견있으신분들 말씀주시면 바로 반영하겠습니다 고맙습니다
승식 맞추기는 진짜 어렵습니다.
단순 마권판매량 마체중 배당이 실시간 집계만 되면 괜찮을거 같더라고요.
저도 그냥 재미로 만들어보고 잇긴합니다 .ㅎㅎ