HorseRacingAI ver1.0
初代・機械学習による競馬予測と自動投票の試作
JRDB の過去レースデータから学習した LightGBM モデルで着順・期待値を予測し、JRA IPAT に自動投票する Web アプリ。GCP・Modal・Cloudflare Access を組み合わせたハイブリッド構成で、Google SSO によるマルチユーザー運用に対応。
Overview
期間
2026.01 - 2026.03
役割
開発者
プロジェクト概要
HorseRacingAI は、JRDB から取得した過去レースデータをもとに LightGBM で各馬の勝率・期待値を予測し、推奨買い目を JRA IPAT に自動投票する Web アプリケーションです。フロントエンドは Next.js static export、バックエンドは FastAPI、推論・学習は Modal の GPU/CPU サーバーレス環境で実行します。Cloudflare Access の Google SSO と JIT プロビジョニングにより、複数ユーザーがそれぞれ暗号化された IPAT 資格情報を安全に保管できる設計です。
開発背景
競馬予想の精度向上には過去データの体系的な活用が欠かせませんが、個人運用ではコスト・セキュリティ・自動化運用のすべてを両立させるのが難しいという課題がありました。そこで、GCP e2-small(常時稼働)と Modal(必要時だけ起動する GPU/CPU)を組み合わせ、Cloudflare Access で認証を外出しにすることで、低コストかつ安全な自動投票基盤を構築しました。IPAT 資格情報はユーザーごとに Fernet で暗号化し、投票時のみ復号する設計で、鍵管理もアプリ側に閉じ込めています。
Features
主な機能
LightGBM による着順予測
JRDB の 26 年分の過去データから学習した LightGBM モデルで各馬の勝率・期待値を計算。Plackett-Luce 分布を用いて複勝・馬連・三連複の確率も導出し、推奨買い目を自動生成します。
JRA IPAT 自動投票
Playwright で JRA IPAT にログインし、推奨買い目を自動購入。二重投票防止ロック・日次/レース別予算上限・最終 EV 悪化チェックなど、安全装置を多層に備えています。
Cloudflare Access 4 層防御
エッジの Google SSO ホワイトリスト、JWT 署名検証、JIT ユーザー特定、Fernet 暗号化資格情報の 4 層で保護。パスワードレスでマルチユーザー運用できます。
週次自動運用パイプライン
土曜朝に出馬表を取得して事前推論、日曜朝に前日結果をマージして再学習、月曜朝に投票を精算する systemd timer を構築。学習時点より未来のデータが特徴量に混入しないリーク防止設計です。
Tech
技術スタック
Frontend
- Next.js 16
- React 19
- Tailwind CSS 4
- TypeScript
Backend
- Python 3.11
- FastAPI
- Pydantic v2
- aiosqlite
ML / 推論
- LightGBM
- Modal (GPU T4 / CPU x4)
- pandas
Database
- SQLite
Browser Automation
- Playwright
Auth / 暗号
- Cloudflare Access (Google SSO)
- PyJWT (JWKS)
- Fernet
Infrastructure
- GCP Compute Engine
- Cloudflare Tunnel
- systemd


