wc2026-predictor 모델의 예측 결과를 누구나 볼 수 있게 보여주는 웹 플랫폼. 모델 vs 베팅 시장 정확도 검증 프로젝트의 공개 대시보드다.
🔗 라이브 데모: wc2026-web.vercel.app
⚠️ 실제 베팅용이 아니며, 모델 정확도 검증·학습 목적입니다.
- 🏆 대시보드 — 우승 확률(몬테카를로), 모델 vs 시장 견해차 그래프, Elo Top12, 72경기 확률
- 🔴 라이브 (
/live) — 실시간 스코어 · 경기별 3-way 배당 · 모델 예측 오버레이 · 실시간 조별 순위 (named.com API, 약 5초 폴링) - 🧪 모델 비교 (
/models) — 여러 모델 walk-forward Brier 리더보드 + 모델별 우승 확률 - 🪜 토너먼트 (
/bracket) — 32강~우승 단계별 진출 확률 히트맵 - ➗ 수식 해설 (
/math) — Elo·확률변환·Davidson·Brier·몬테카를로 전 수식
/api/live 라우트 핸들러가 named.com 스포츠 API(sports-api.named.com/v1.0, league.id=639)를
서버에서 호출(CORS 회피)해 월드컵 경기·배당·실시간 순위를 정규화한다. 키 불필요.
클라이언트(/live)는 탭이 보일 때만 약 5초마다 폴링하고, 라우트는 s-maxage=5로 캐싱해 외부 호출을 억제한다.
팀명 매핑은 lib/teams.ts(영↔한 48팀), 조 복원·순위 계산은 lib/groups.ts.
- Next.js 15 (App Router) · React 19 · TypeScript
- 정적 생성(SSG) — 서버리스, 모든 페이지 prerender
- 예측 데이터는
data/*.json(모델 레포 CSV에서 변환한 개막 시점 고정 스냅샷)
npm install
npm run dev # http://localhost:3000
npm run build # 정적 빌드모델 레포의 CSV가 갱신되면 data/*.json 을 다시 생성한다.
(championship.json, matches.json, elo.json, modelVsMarket.json)
.github/workflows/refresh-predictions.yml 가 6시간마다(+수동 버튼) 예측 레포를
clone해 파이프라인을 돌리고 export_web.py 로 data/*.json 을 갱신·커밋한다.
모델은 요청마다가 아니라 이 스케줄로만 돌고(무거운 학습 없음, CPU로 충분),
프론트는 정적 JSON을 읽는다. 커밋되면 Vercel이 자동 재배포한다.
Vercel에 연결되어 main 브랜치 푸시 시 자동 배포된다.
모델·수식 상세: wc2026-predictor / docs/MATH.md
| 항목 | 내용 |
|---|---|
| 기여 비율 | 100% (단독 개발) |
| 커밋 | 43 / 43 (본인 / 전체 사람 커밋) |
| 참여 인원 | 1명 |
| AI 코딩 도구 | Claude Code |
| 자동화 커밋 | 155건 (본인이 구성한 GitHub Actions 자동 수집/갱신 — 집계 제외) |
기여 비율은 커밋 author 이메일 기준 집계이며 봇·자동화 커밋은 제외했습니다.