税理士法人GrowUp / 実践共有

AIで競馬市場に勝てるか、
確かめた記録

結論は「勝てなかった」。
ただし、なぜ勝てないかを自分のデータで確かめられた。

〜 JRA 2021〜2024年・13,316レース・10の検証 〜
2026.09 / takamichi ochi
SLIDE 01 / 13
Section 01GrowUp

CONCLUSION

先に結論

AIは市場と違うものを見ていた。 でも、それは締切までに価格に織り込まれ、控除率の壁を越えられなかった。

予測は「できた」
同じオッズ帯の中で、勝つ馬を並べ替えられた
利益は「出なかった」
どの券種・どの時刻でも回収率は 0.5〜0.8
結論は「信じられる」
判定基準は先に固定。2025年以降は最後まで開けなかった
Section 01 — 準備GrowUp

SETUP

用意したもの

「勝てる」と言うより「勝てない」と言う方が、ずっと多くのデータが要る。

13,316
JRA 平地レース(2021〜2024年)。1頭×1レースで約17万行
2,500万
時系列オッズの行数。前日夕方から発走直後まで5分刻み
23GB
手元の PostgreSQL に貯めた量。JRA-VAN Data Lab から取得
3日
仕様書から最終報告まで。Claude Code と GPT に役割を分けて進めた

データ取得はJRA-VAN Data Lab(月2,090円)→ mykeibadb → PostgreSQL。予測モデルは勾配ブースティング(LightGBM)。すべて自宅PC。

Section 01 — 準備GrowUp

RULES

自分に課した4つのルール

AIは「勝てそうな結果」をいくらでも出せる。だから、結果を見る前に縛った。

仕様書を先に書く
何を測り、何をもって「終了」とするかを、データを見る前に文章にした。変えるときは必ず起票。
未来の情報を混ぜない
学習は2021〜2023、検証は2024。締切後にしか分からない値は自動テストで排除。
2025年以降は開けない
最終テスト用に封印。読み込もうとするとプログラムが拒否し、記録が残る仕組みにした。
判定基準は結果の前に固定
「回収率がいい条件」を後から探さない。閾値も帯も先に決め、通らなければその枝は終了。

この4つを守ると、「勝てた」報告はほとんど出なくなる。逆に言えば、守らない報告は信じない方がいい。

Section 02 — 方法GrowUp

METHOD

進め方:市場の確率に、AIの情報を「足す」

市場(オッズ)を捨ててAIで当てるのではなく、市場を土台にAIで補正する。プロの勝者が使ってきた型。

01
市場の確率
(朝9:15のオッズ)
02
AIの確率
(過去走・騎手・厩舎など147項目)
03
2つを合成
(市場に AI の差分を足す)
04
払戻の予測
(朝→締切の値動きを補正)
05
期待値 ≥ 1 なら
買う
06
実際の払戻で
回収率を確認
AI 単体の精度は市場に届かない(Brier 0.0598 対 0.0582)。市場と混ぜると市場を僅かに上回る(0.0580)。 つまり AI は「市場が知らないこと」を少しだけ持っている。問題は、それをお金に変えられるかだった。
Section 02 — 方法GrowUp

10 TESTS

試したこと(10本)と結果

#仮説結果(回収率=払戻÷投資)判定
1市場より正確な勝率を作れるかAI単体は市場に劣る。混ぜると僅かに上回る。同一オッズ帯で勝馬を並べ替えられる△ 部分的に可
2朝9:15の単勝で期待値1以上を買う0.77 / 0.70 / 1.11(年でぶれ、再現しない)× 終了
3発走10分前の単勝で買う0.10〜0.39。AIの情報は締切までに価格へ吸収× 終了
4複勝なら残るか単勝と同じ吸収。差なし× 終了
5複勝の本命側は価格だけで勝てるか全帯・4年とも 1 未満(最高 0.99)× 終了
6馬連で「AIが嫌う馬」を外す仮説と逆。市場の方が先に割り引いていた× 終了
7馬連で確率の掛け算を効かせる(Benter型)確率は校正できたが、期待値1以上の帯で 0.46〜0.58× 終了
8券種間の価格矛盾を取る(予想なし)13,316レースで無リスクの組み合わせ 0 件× 終了
9頭数・クラス・場などでレースを事前に選ぶ2年連続で改善する属性なし× 終了
10AIの1位馬を毎レース機械的に買う単勝 0.78・複勝 0.81。最終1番人気(0.80・0.85)に劣る× 終了
Section 03 — 分かったことGrowUp

FINDING 1

AIは、市場と違うものを見ていた

同じオッズ帯の馬を、AIの評価順に7段階へ分けると、実際の勝率がはっきり並ぶ。

40倍以上の馬で、AI最低評価群と最高評価群の実勝率の差
8.6
市場が「同じ値段」を付けている馬の中に、AIから見れば当たりやすい馬と当たりにくい馬が混ざっていた。
何を入れたか何を入れなかったか
過去5走の着順・タイム・上がり・斤量・距離当日のオッズ・人気(一切なし)
騎手・厩舎の直近1年の成績(縮約済み)馬・騎手の ID そのもの(丸暗記の防止)
頭数・クラス・距離・コース・年齢・性別当日の馬体重・天候・馬場(時点保証がない)
過去走の当時のオッズ(履歴としてのみ)締切後にしか分からない値(自動テストで排除)
確率の校正(言った勝率と実際の勝率の一致)は、市場と合成した後でほぼ完全になった。予測モデルとしては機能している。
Section 03 — 分かったことGrowUp

FINDING 2

でも、その情報は締切までに価格へ吸収される

朝に見えた「AIと市場の差」は、発走10分前には半分以下になり、最終オッズでは消えている。

朝 9:15 に判断する

  • AIの情報の重み(β)は 0.31。市場に無いものを持っている
  • ただし朝→最終で価格が動く。中央値で +32%、20倍以上の馬は +41%
  • AIが好む馬ほど締切までに買われ、払戻が縮む
  • 期待値1以上を買った回収率:0.77 / 0.70 / 1.11(再現せず)

発走 10 分前に判断する

  • AIの情報の重みは 0.13 まで低下。市場が同じことを知っている
  • 価格の動きは小さいが、残った差も締切前10分で埋まる
  • 期待値1以上と出た馬の回収率:0.10 / 0.39 / 0.30
  • 複勝・馬連でも同じ現象を確認

「自分の確率 − 市場の確率」が大きい順に買うと、選ばれるのは推定誤差が上振れした馬になる(勝者の呪い)。これが控除率 20〜22.5% の壁を越えられない構造。

Section 03 — 分かったことGrowUp

FINDING 3

一番わかりやすい比較:AIの1位馬 対 最終1番人気

2022〜2024年の9,082レース。閾値も選別も一切なし、毎レース100円ずつ機械的に買った場合。

買い方AIの1位馬(前情報のみ)最終1番人気(市場)
単勝 100円回収率 0.777(勝率 28.6%)回収率 0.798(勝率 33.8%)−0.021
複勝 100円回収率 0.809(複勝率 57.9%)回収率 0.849(複勝率 64.8%)−0.040
単複 100円ずつ回収率 0.793(年 −11.5〜−13.7万円)回収率 0.824−0.031
一致率AIの1位馬と1番人気が同じ馬:59%。違うときのAIの1位馬は中央値で2番人気、回収率 0.75 前後
AIの1位馬は的中時の払戻が高い(単勝 272円 対 236円)が、的中率の差を埋められない。 3戦略 × 3年の全9セルで1番人気に負けた。市場の最終価格は、私のAIより精度の高い予測器だった。
Section 03 — 分かったことGrowUp

FINDING 4

予想を使わない道も、閉じていた

「モデルの誤差で選ぶから負ける」なら、モデルを使わなければいい。それも確かめた。

券種間の価格矛盾(裁定)

  • 単勝・複勝・馬連の最終価格で、どの着順でも払戻が投資を上回る組み合わせを全レース走査
  • 13,316レースで 0 件。最も近いレースでも投資の 3.4% 不足
  • 先行研究(地方競馬で 175 レース中 2 件)と違い、JRA の3券種は互いに整合していた

レースの事前選別

  • 頭数・クラス・競馬場・レース番号・芝ダ・距離を、結果を見る前に固定して層別
  • 2022〜23 で良かった属性が 2024 でも良い、という再現は 1 つもなし
  • 唯一残ったダートも、上位3件の大穴に払戻の 77% を依存。偶然の範囲

残っているのは外部データ(調教・パドック評価など)と、馬単・三連単の薄い市場。どちらも費用と手間に見合う見込みが立たず、ここで止めた。

Section 04 — 持ち帰りGrowUp

TAKEAWAY

本業に持ち帰るもの:AIの出力を検証する型

競馬は題材にすぎない。「AIが良さそうなことを言う」場面は、仕訳の自動化でも面談メモでも同じ。

先に基準を書く
「何が出れば採用、何が出れば不採用」を、結果を見る前に文章にする。
時間の向きを守る
後で分かる情報を混ぜない。過去で作り、未来で試す。テストで機械的に守らせる。
最後の検証用を封印する
一度も見ていないデータを残しておく。それがなければ「良かった」は信じられない。
止める基準を持つ
「もう少し工夫すれば」を禁じる。通らなければ枝を閉じ、記録して次へ。

AIに「勝てましたか」と聞くと、勝てた気になる答えが返ってくる。「勝てないことを、どう確かめるか」を聞く方が、実務では役に立つ。

Section 04 — 持ち帰りGrowUp

COST

費用と時間

仕様書から最終報告まで
3
2026年9月6日〜8日。データ取得の待ち時間を含む。私の作業は、仕様を書く・結果を読む・次の判断をする、の3つ。
項目内容金額
JRA-VAN Data Lab公式データ配信。1か月で解約2,090円
PostgreSQL・Python・LightGBMすべて無料。自宅PCで動く0円
AI(Claude Code・GPT)普段の契約の範囲内追加なし
馬券1円も買っていない(すべて過去データの検証)0円
成果物は仕様書1本、設計文書15本、報告書31本、プログラム29本。データ23GBは検証が終わったので削除する。
AIは市場に勝てなかった。
その理由を、自分のデータで確かめられた。
予測は少しできる。利益にはならない。市場はそれだけ効率的だった。
「勝てた」と言う人がいたら、判定基準をいつ決めたかを聞くといい。
この検証の型は、そのまま本業のAI活用に使う。
税理士法人GrowUp / GrowUp Lab / takamichi ochi