このプロジェクトでは、各馬が複勝圏に入る確率を推定し、発走前オッズと組み合わせて候補を作ります。目的は必ず買う馬を決めることではありません。どの情報で、いつ、どの条件なら候補になったのかを残すことです。

モデルが出すもの

学習器は二値分類モデルで、正しい着順データを基に複勝圏入りを目的変数にします。出馬表、過去成績の集計、発走前オッズから、馬ごとの確率を推定します。確率をレース内で比較し、複勝オッズの下限と掛け合わせて保守的な指標を作ります。

probability = calibrated_model.predict_proba(features)[:, 1]
place_ev_low = probability * fukusho_odds_low
candidate = (place_ev_low >= threshold) & (place_ev_rank <= 1)

ここで使うオッズは、発走前に取得・記録された値です。確定後の払戻金やオッズで候補を選びません。

なぜCSVを最終出力にするのか

予測は購入処理へ直接渡さず、まずCSVに保存します。レースID、発走時刻、馬番・馬名、使用オッズ、予測確率、候補順位、判定結果を残します。候補になった理由だけでなく、除外されたレースも確認できるためです。

オッズ取得の失敗、締切が近すぎる場合、レース情報の不一致では候補を出さない設計にします。自動化より先に、候補ログ、手動確認、疑似運用、エラー時停止を整えることを優先します。

← 第2回:データリーク対策 · 第4回:高い回収率を掲載しない理由 →

本記事は競馬データを用いた研究・技術解説です。馬券購入や利益を推奨・保証するものではありません。