경마 AI로 ROI 177%를 달성하고, 그것이 환상임을 증명하는 데 2년이 걸렸다
요약
경마 AI 모델을 이용해 높은 ROI를 달성했으나, 이 결과가 통계적 오류(multiple testing)와 데이터 누수(data leak), 오염(contamination) 등 네 가지 환상에 기인함을 밝혀낸 경험담입니다. 결론적으로 공개된 특징량만으로는 시장 배당률보다 추가적인 예측 정보량을 얻기 어렵다는 점을 강조합니다.
핵심 포인트
- 공개 데이터의 특징량은 시장 배당률 대비 추가 정보량이 제로일 수 있다.
- 높은 ROI는 multiple testing, data leak 등 통계적 오류에 의한 환상일 가능성이 높다.
- 백테스트 결과가 실전에 재현되지 않는 원인은 누수, 다중 비교, 데이터 오염 중 하나일 수 있다.
- 실제 시장의 확률 예측력은 모델보다 집단지성(배당률)이 더 정확할 수 있다.
요약 (TL;DR)
- 2020년부터 2026년까지의 JRA 전체 경주(18,777경주・약 25만 출주)를 자동 수집하여 LightGBM으로 예측 모델을 만들었다.
- 백테스트 결과 최고치는 **ROI 177%**였다. 그러나 자세히 살펴보니 이는 환상이었으며, 이후에도 '이겼다고 보이는 결과'에 총 4번 직면했고, 4번 모두 스스로 기각하게 되었다. - 최종 결론: 공개 데이터의 특징량(feature)이 시장(배당률/odds)에 추가할 수 있는 정보량은 제로다. 애초에 JRA의 마감 배당률은 18만 마리 실측을 기반으로 오차 ±1 포인트로 보정된 예측기였다.
- 본 글에서는 네 가지 환영(multiple testing・데이터 누수(data leak)・데이터 오염(data contamination)・후견지명 편향(hindsight bias))이 각각 어떤 모습으로 나타났는지를 실제 수치와 함께 소개한다.
환상 ① ROI 177% — 299개의 모델 중 고른 '최강'
한 시기, 내게는 299개의 모델이 있었다. 알고리즘 차이, 특징량 차이, 시드(seed) 차이(rs00부터 rs99까지 전수 조사). 그중 가장 좋은 것은 2025년 중상급 경주 백테스트에서 ROI 163~177%를 기록했다.
하지만 로그를 자세히 살펴보니 다음과 같았다.
- 상위 5경주를 제외하자 회수율(回収率)은 104.8%
- 최대 연속 패배는 19회
같은 평가 데이터로 299번 시도하면, 에지(edge)가 없어도 몇 개는 우연히 150%를 넘는다. 나는 299명에게 동전을 10번 던지게 하고, 모두 앞면이 나온 사람을 '동전 던지기 천재'라고 부르는 것과 같은 일을 하고 있었다. multiple testing, 기계 학습으로 말하자면 테스트 세트에 대한 과적합(overfitting)이다.
대책으로, 그 이후 모든 실험은 장부에 기록하고(실험 ID・조건・결론), 시도할 변종은 착수 전에 선언하는 사전 등록제(pre-registration system)로 만들었다.
환상 ② ROI 800% — 미래를 아는 모델
다른 시기, 백테스트가 ROI 800% 이상을 기록했다. 공제율 20%의 시장에서 8배의 수익률이다. 아무래도 의심하여 파고들자, 두 곳에서 데이터 누수(data leak)가 발생하고 있었다.
- 말의 이력 정보 취득이 '전체 이력'을 반환하며,
예측 대상 경주 자체의 결과가 특징량에 섞여 들어갔다. - '기수의 승률' 같은 집계 특징량이
전 기간에 걸쳐 계산되어, 2023년 예측에 '2024년까지의 성적'이 사용되었다.
결론적으로, 시장 자체를 예측기로서 검증했다. 배당률의 역수를 정규화하여 '시장 승률 예측'을 만들고, 188,399마리의 실제 승패와 비교한다.
| 시장 예측 승률 | 실제 승률 | 차이 |
|---|---|---|
| 0.8% | 0.7% | −0.1pt |
| ... | ||
| 거의 모든 구간에서 오차는 ±1포인트 이내였다. 수십만 명의 베팅 자금이 모인 것은, 내 모델은커녕 아마도 어떤 공개 데이터베이스의 모델보다 정확한 확률 예측을 매 경주마다 무료로 제공하고 있었다. 내가 패배한 상대는 누군가의 모델이 아니라, 바로 이 집단지성이었다. |
얻게 된 것들
금전적 수익은 마이너스다. 그럼에도 불구하고 4가지 환영을 모두 밟고 스스로 무너뜨린 경험은 그대로 업무 ML 검증에 사용할 수 있는 근육이 되었다. '백테스트에서는 좋았는데 실전에 재현되지 않는다'는 원인은 대개 이 네 가지 중 하나 때문이다.
- 너무 좋은 결과의 3대 원인: 누수(Leak), 다중 비교(multiple testing), 데이터 오염(data contamination)
- Top-N 제외 지표를 반드시 병기할 것
- 평가 데이터를 볼 때마다 평가 데이터는 죽어간다
- 항등식 체크(identity check)는 최강의 데이터 검증기
- 신호 정의에 미래가 포함되어 있지 않은지, 그 가격으로 실제로 체결 가능한지
자세한 내용은 — 각 환영의 완전한 해부, α라는 KPI 설계, 7개월 동안 조용히 죽어있던 수집 파이프라인 이야기, 재판 기록에 남는 '진짜 승리한 사람'의 조건 정량 분석 — 을 책으로 정리했습니다.
📘 경마 AI는 시장에 이길 수 있을까 — 18,777경주로 검증하고 진 이야기(¥500)
당신의 평가 데이터가 미래를 알지 못하기를 바랍니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn ML의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기