競馬AI予測

【競馬AI #17】翌週は全外れ0%。サンプルサイズの罠と、モデルの実力を問い直す

前置き:たった1週間で絶望へ

前回の記事(#16)を投稿してから、わずか1週間。

6月20-21日の実戦では、投資¥900で回収¥8,400、回収率833%、利益¥7,500という驚異の成績を記録した。その直後、SNSやnoteで「このAIはマジで機能している」と確信を持って発信した。

だが、6月27-28日の投資結果は全外れ。投資¥6,000に対して回収¥0。

この1週間の落差は、統計学的に何を意味しているのか。AIの「実力」は本当に有るのか。それとも、前回の成功は単なる「運」だったのか。

本記事は、Data Scientistとしての自己反省と、問題の根本分析である。


実戦成績の推移

【6月20-21日:初実戦】

投資額:¥900(シンプル固定型)
回収額:¥8,400
利益:+¥7,500
回収率:833%

的中レース:函館11R
 ・04番複勝:¥1,080的中
 ・08番複勝:¥2,160的中
 ・04-08ワイド:¥5,160的中

【6月27-28日:第2週】

投資額:¥6,000
回収額:¥0
利益:-¥6,000
回収率:0%

対象レース:4レース
 ・福島4R:全外れ
 ・小倉10R:全外れ
 ・福島1R:全外れ
 ・福島10R:全外れ
 ・福島9R:全外れ

【累計(6月20-28日)】

投資額:¥6,900
回収額:¥8,400
利益:+¥1,500
回収率:121.7%

的中:1レース
外れ:8レース
的中率:11% ← 統計的に信頼できない

第1週と第2週の何が違ったのか

【開催地の変化】

第1週(6/20-21):

函館(北海道):重賞レース中心
阪神(兵庫県):条件戦・重賞
東京(東京):オープン・重賞

特性:大型開催、実績馬が充実、競馬レベルが高い

第2週(6/27-28):

福島(福島県):夏場の開催、ローカル色
小倉(福岡県):西日本の中堅開催

特性:地方色が強い、実績馬が少ない、独特な馬場特性

この開催地の変化が、モデルの予測精度に影響を与えた可能性が高い。

【オッズの推移】

第1週:

函館11Rでの推奨馬のオッズ
 ・04番:34.5倍 (人気:2番人気)
 ・08番:45.2倍 (人気:7番人気)

→ 実際の配当
 ・04番複勝:1,080倍(推定¥34.5 × 6.5 ≈ ¥224)
 ・08番複勝:2,160倍(推定¥45.2 × 6.5 ≈ ¥294)

第2週:

福島4R、小倉10R、福島1Rでの推奨馬のオッズ
 ・推奨馬の人気:多くが5~10番人気
 ・推定オッズ:15~100倍
 
しかし実際は全て外れ
→ オッズ推定と実際の着順に大きなズレがあった可能性

統計学的な問題:サンプルサイズの罠

ここが、最も重要なポイントだ。

【サンプルサイズの重要性】

バックテストとの比較:

バックテスト(Phase 3訓練):
 ・データ量:2022~2024年のJRA全レース
 ・サンプル数:858レース、19,847馬
 ・回収率:83.9%

実戦初日(6/20-21):
 ・サンプル数:1レース(函館11R)
 ・回収率:833%

実戦第2週(6/27-28):
 ・サンプル数:4レース
 ・回収率:0%

実戦累計(6/20-28):
 ・サンプル数:5レース
 ・回収率:121.7%

この現実が、統計学が教えることだ。

統計的に信頼できるサンプルサイズは、一般的に:

最小限:n = 30
推奨:n = 100
確実:n = 1,000以上

現在の9レースは、統計的にはほぼ意味を持たない。

【なぜバックテストと現実に乖離が生じるのか】

  1. バックテストバイアス
    • 過去データに最適化されたモデル
    • 当日の実データでは、訓練データにない変動が存在
  2. 市場の動き
    • 過去2年間(2024~2026年6月)で、競馬市場が変わった
    • 人気度合い、オッズの付け方が異なる
  3. 季節変動への対応不足
    • 6月下旬の福島開催は、訓練データに十分含まれていない可能性
    • 地域特性(福島 vs 函館)の影響を未考慮
  4. 小サンプルの運の影響
    • 9レースでは、運が実力を大きく上回る
    • 1回の大当たり(函館11R)が全体の回収率を支配している

考えられる原因:3つの仮説

【仮説1:オッズ推定ロジックの破綻】

現在のシステムは、CSVに「単オッズ」(実オッズ)がない場合、人気から推定オッズを計算している。

popularity_odds_map = {
    1: 2.5, 2: 4.0, 3: 6.0, ...., 18: 700.0
}

問題:この推定オッズが、福島やローカル開催では精度が低い可能性。

第1週の函館は、大型重賞で人気とオッズの相関が強い。しかし、福島の小さなレースでは、人気と実オッズに乖離がある可能性が高い。

結果:

期待値計算が過度に楽観的になり、
実際には期待値が低い馬を「推奨」していた

【仮説2:モデルの季節・地域適応不足】

訓練データは2022~2024年の全国競馬だが、特に「6月末の福島開催」という特殊条件に対応できていない可能性。

福島開催の特徴:
 ・梅雨の影響で馬場が不安定
 ・ローカル馬が活躍しやすい
 ・大型開催と異なる競馬レベル
 
これらを訓練データから学習していない

前回改善案で「シーズナリティ補正」を導入したが、地域補正はまだない。

【仮説3:スルーロジックの失敗】

最後の可能性として、「新馬戦や未勝利戦」が推奨馬に含まれている可能性。

スルーロジックは「過去データ保有率70%以上」を基準としているが、福島などローカル開催では、この判定が正しく機能していない可能性がある。


モデルの「実力」を問い直す

前回の成功は、実力か運か

正直に答えると:運の要素が大きい。

理由:

1. サンプルサイズが圧倒的に不足
   (9レース vs 858レース)

2. 的中が1回で、かつそれが最初
   (典型的なビギナーズラック)

3. バックテストの83.9%回収率は
   再現されていない
   (現在121.7%は、初回の大当たりに依存)

もし次の9レースが全て外れたら、回収率は 71.4% に低下する。

これは、単なる「運の悪さ」ではなく、「モデルが実力を発揮できていない」ことを示す。

バックテストと実戦の乖離:なぜ起きるのか

Data Scientistとして、これは避けられない現実だ。

バックテスト:環境が固定されている
 ・過去データのみ
 ・市場環境が一定
 ・人気度合いが安定

実戦:環境が動的に変わる
 ・未来のデータ(訓練には含まれていない)
 ・市場環境が時々刻々変化
 ・季節、地域、天候による変動

バックテストが「過去に対して最適化」されたモデルだとすれば、未来では自動的に精度が低下する。

これを「オーバーフィッティング」という。


次のステップ:何をすべきか

【短期:来週を見守る】

来週(7月4-6日)も同じシステムで実行する。

目的:
 ・サンプルサイズを増やす(現在9 → 18)
 ・統計的な信頼性を高める
 ・パターンを確認する

来週の結果次第で:

来週も全外れ → システムの根本的問題の可能性
来週に的中が出る → 単なる「運の波」の可能性

【中期:モデルの改善】

以下の改善を検討する必要がある。

改善案1:オッズ推定ロジックの再検討

現状:人気 → 推定オッズ
改善案:地域・開催地別の補正係数を導入

福島開催での人気-オッズ相関を分析し、
補正係数を計算する

改善案2:シーズナリティ補正の拡張

現状:月別の補正係数のみ
改善案:開催地別の補正係数も追加

北海道(函館): 補正係数 1.10
東海(福島): 補正係数 0.95
西日本(小倉): 補正係数 0.98

改善案3:EV閾値の厳格化

現状:EV ≥ 1.5で推奨
改善案:EV ≥ 2.5に引き上げ

推奨馬を減らし、期待値が高いレースのみに絞る
回収率は低下するが、外れの増加を抑える

改善案4:モデルの再訓練

2026年上半期のデータ(1月~6月)を追加して
再度訓練
最新の市場環境に適応

【長期:統計的検証】

100レース以上のデータを累積し、初めて「実力」を判定する。

現在(9レース):判定不可
30レース到達:「傾向」が見える段階
100レース到達:統計的に有意な判定が可能

これは、Data Scienceの常識だ。短期の成績に一喜一憂してはいけない。


反省:開発者としての過ち

前回の記事(#16)を読み返すと、私は以下の過ちを犯していた:

【過ち1:初回成功による過信】

「初実戦で黒字達成」という1つのデータポイントで、
「システムが完璧に動いている」と判定した

統計学の基本を忘れていた。

1回の成功は、成功ではなく、単なるサンプル である。

【過ち2:バックテストと実戦の混同】

「バックテスト83.9%だから、実戦でも85%程度」
という根拠のない仮定をしていた

バックテストと実戦は、環境が全く異なる。

乖離は、避けられない。

【過ち3:開催地の特性を無視】

「AIは全ての競馬を予測できる」という過信
地域特性、季節変動への対応不足を見落とした

本来なら、福島開催の特性を事前に分析し、 慎重に投資を進めるべきだった。


正直な評価

現在の競馬AIの実力

バックテスト回収率:83.9%
実戦回収率(累計9レース):121.7%
統計的信頼度:極めて低い(n=9)

判定:
「実力があるかもしれない。
 だが、確認には最低100レースが必要」

AIの今後

正直に言えば、このAIが長期的に利益を生むかは、未定 である。

ただし、以下の点は確実だ:

✅ 統計学的に正当なアプローチ
✅ 継続的な改善の余地あり
✅ 短期的な運の影響を受けやすい

❌ 完璧なシステムではない
❌ 短期の成績で判定できない
❌ 地域特性への対応不足

結論:Day 18へ向けて

前回(#16)の記事では、「プロレベルのAIが誕生した」と書いた。

今回、その言葉を取り消す必要はないが、修正する必要がある。

正しくは:

「統計学的に有効性が見込まれるモデルが開発された。 だが、実戦での検証はまだ途上である」

来週(7月4-6日)、サンプルサイズは18に増える。

その時点で、初めて「傾向」が見えてくるだろう。

100レースに到達する頃には、このモデルの実力が、数字で証明される。

それまでの間、我々ができることは:

1. 継続的にデータを集める
2. 仮説を立てて、検証する
3. 失敗から学ぶ
4. システムを改善する

この繰り返しが、真の「プロレベル」を生み出す。


【技術ノート】現在のシステム仕様

モデル:LightGBM + Lambdarank 特徴量:19個 訓練データ:2022~2024年 132,969頭 回収率(バックテスト):83.9% 回収率(実戦、n=9):121.7%

既知の問題

  • オッズ推定精度が地域で異なる
  • シーズナリティ補正が不完全
  • 小サンプル(n<30)では信頼性が低い

次回の改善予定

  • オッズ推定ロジックの再検討
  • 開催地別の補正係数導入
  • EV閾値の厳格化(1.5 → 2.5)
  • 2026年上半期データでの再訓練

次回の記事では、改善版システムと、来週(7月4-6日)の実戦成績を報告予定です。

【競馬AI開発記】シリーズ(予定)

  • #16:Phase 3初実戦 155.6%回収率達成
  • #17:翌週は全外れ0%。サンプルサイズの罠 ← 本記事
  • #18:3週間連続投資。統計的な傾向が見える
  • #19:30レース到達。AIの実力が判明
  • #20:100レース到達。長期的な実力を確立

-競馬AI予測