競艇AIが推定するのは、まず「この艇が勝つ確率」です。候補を作るには、そこへ締切前の実オッズと、締切までにオッズが変わるリスクを重ねる必要があります。確率だけで買い目を決めないのは、予測の当たりやすさと収支が別の問題だからです。

1レースを6艇の比較として扱う

モデルには選手の過去成績、モーター・ボート成績、展示情報などを入力します。個別の数値だけでなく、同一レースの平均との差や順位も用いて、今回の6艇の中での相対的な位置を捉えます。出力した確率はレース内で整合するように調整し、オッズと組み合わせられる形に近づけます。

市場の見方を足す

締切前オッズからは、市場が暗黙に見積もる確率を作れます。モデルと市場の確率を組み合わせ、締切までにオッズが不利に動く可能性を保守的に割り引いて候補を判定します。

p_market = (1 / odds) / (1 / odds).sum()
p_blend = normalize(sqrt(p_model * p_market))
live_ev = p_blend * live_odds * drift_discount

高オッズ帯ほど締切時に数字が縮むことがあるため、取得時点のオッズをそのまま期待値とは見なしません。

出力は購入指示ではなく監査ログ

候補CSVやJSONには、race_id、艇番、予測・締切時刻、参照オッズと取得時刻、予測確率、除外理由、候補金額を残します。オッズが足りない場合にモデル単独へ切り替えたこともログに残します。

1点・1レース・1日の上限、連敗時停止、オッズ急変時のスキップ、エラー時停止といった安全策を先に設けます。現在は候補を買わずに追跡する完全ペーパー運用です。

← 第2回:データリーク対策 · 第4回:前方検証と停止条件 →

本記事は個人開発・データ分析の記録です。舟券購入や利益を推奨・保証するものではありません。