【開発日記・連載中】AIと「9割のレースを“見送る”競馬AI」を本気で作ってみた(バックテスト編)

- 1.AIとゼロから競馬AIのバックテスト(過去データで買い方を検証する仕組み)を開発中。毎回、進捗を追記する連載日記です
- 2.きれいごと抜き。的中率2.5%、回収率149%の“ぬか喜び”、三連単の甘い罠…失敗も数字も全部そのまま書きます
- 3.結論から言うと、まだ1円も賭けていません。“稼げる”とは口が裂けても言えない理由も正直に書きます
この記事は「完成した攻略法」ではなく、進行中の“開発日記”です。姉妹編の『稼ぐ自動売買Bot編』に続いて、今回はAI(Claude Code)に『競馬AIを作って』とお願いしたら、どこまでいけるのか——その過程を、Day 1から順にリアルタイムで追記していきます。うまくいった日も、盛大に転んだ日も、隠さず書きます。プログラミング未経験でも楽しめるように書くので、AIで何かを作ってみたい人はブックマーク推奨です。
上から時系列(Day 1 → 最新)に並んでいます。いちばん下が最新の状況。数字は淡々と、事件が起きた日は熱く。そんな温度差ごと楽しんでください。※これは開発の記録であって、馬券の購入を勧めるものでも、当たる買い目を教えるものでもありません。
Day 1:下心「“期待値のある馬だけ”買えば勝てるのでは?」
きっかけは、いつもの下心です。「AIに過去の競馬データを全部読ませて、“オッズより強い馬”だけ買えば、理論上プラスになるやん?」。指はいつものように希望に満ちていました。ところがAIに『競馬AIのバックテストを作って』と頼むと、返ってきた最初の一言が予想外でした。『まず“買わないレースを決めましょう”』。……買う話をしてるのに、買わない話から始まった。
競馬AIの目的は「当たる馬を探す」ことじゃない。『人気と実力のズレを見つけて、割安な時だけ買い、それ以外は全部見送る』こと。“当てにいく”とだいたい負ける、というのがAIの第一声でした。
Day 2:まず“9割を捨てる”設計から始まった
AIが最初に書いたのは買い目でも予想でもなく、「買わないレースを弾くフィルタ」でした。曰く、条件が読みにくいレースで無理に張るのが一番の負けパターン。というわけで、こんなレースは初期設定でバッサリ除外します。
- 新馬戦・2歳戦(データが少なすぎて読めない)
- 障害レース・ハンデ戦(荒れやすい)
- 8頭以下 / 18頭以上(少なすぎ・多すぎで妙味が出にくい)
- 極端な不良馬場(実力が反映されない)
- 過去データが足りない馬が多いレース
- 1番人気が1.1倍みたいな“買っても旨みゼロ”のレース
"exclude": {
"maiden": true, // 新馬戦を除外
"two_year_old": true, // 2歳戦を除外
"jump": true, // 障害を除外
"handicap": true, // ハンデ戦を除外
"min_runners": 9, // 8頭以下は見送り
"max_runners": 17 // 18頭以上は見送り
}テスト用に用意した約2,500レースにこのフィルタをかけると、実際に“買う候補”に残ったのはおよそ3割。残り7割は「見送り」。『買わない勇気』を、AIは1行のルールで淡々と実行してくれました。人間は、これができないから負けるんですよね。
Day 3:6種類の買い方を、全部いっぺんに土俵へ
複勝・ワイド・馬連・馬単・三連複・三連単。この6種類を、単体で買った場合と、組み合わせた場合で、成績がどう変わるかを一気に比較できるようにしました。『どれが一番おいしいのか』を、感覚ではなく数字で殴り合わせる作戦です。ここまでは順調。問題は次の日に起きました。
Day 4:事件「これ、全然当たってへんやん」
できあがった管理画面を開いて、まず目に飛び込んできたのが『的中率 2.5%』の文字。真顔になりました。100回買って2〜3回。え、これ失敗作では? すかさずAIに詰め寄った時のやりとりが、あまりに“AIと開発する感じ”だったので、そのまま載せます。
的中率と回収率はまったくの別物。当てにいくほど、胴元の取り分(控除率20〜30%)に負けやすい。『当たらないけど、当たった時に大きい』を淡々と積むゲームだと、ようやく理解しました。
Day 5:三連単という“甘い罠”
券種ごとの成績を眺めていて、三連単だけ回収率106%と表示されているのを発見。おっ、プラスやん! また心が躍りました。が、AIが静かに続きを見せてきます。『その106%、最大70連敗・最大の落ち込み16万円です。たまたま大きい配当が1回当たって、良く見えているだけの可能性が高い』。70連敗。心が折れる音が聞こえました。
回収率だけを見て「勝てる」と判断してはいけない。連敗・最大ドローダウン・月別の安定性まで見て、初めて“使える条件か”が分かる。— 開発中のAIの助言より
『一番いい回収率の券種』を探し始めた瞬間、それは分析ではなく自分を騙す作業になる。だからこのシステムは、回収率だけでなく“連敗・最大DD・月別/年別の安定性・買い目の多さ”まで全部並べて表示するようにしました。都合のいい数字ではなく、一番つらい数字を信じる。
Day 6:最大の落とし穴「その数字、ニセモノです」
券種を全部乗せした欲張りセットで、回収率がなんと149%。ベンツの色を選び始めた——のも束の間、AIが冷や水を浴びせます。『念のため言っておくと、今のデータは“合成の練習用データ”です。本物の実力差が存在しない盤面なので、この149%は実際の期待値ではありません』。ベンツが軽自動車を通り越して、自転車になりました。
つまり今のところ、システムは完成しているのに、“食わせている過去データがニセモノ”。だから『これで稼げます!』とは口が裂けても言えません。数字が良く見えても、それが本物のデータで再現できなければ、ただの絵に描いた餅です。
Day 7(次回予告):本物のデータに挑む
というわけで次のステップは、JRA公式データ(JRA-VAN・月2,000円ほど)と契約して、1986年からの“本物”の過去レースを丸ごと読み込ませること。ここで初めて「的中率」も「回収率」も本当の意味を持ちます。
先に釘を刺しておくと、本物のデータで検証しても、控除率20〜30%という高い壁は変わりません。だから方針はシンプルです——『バックテストでプラスを“証明”できなければ、1円も賭けない』。夢は見つつ、足元は冷静に。ちなみにこの記事は、特定の馬券の購入を勧めるものではありません。馬券は20歳以上・自己責任で、余剰資金の範囲で楽しむものです。
▼ ここから下に、最新のDayが追記されていきます
この日記は現在進行中です。次回は『本物のJRAデータを取り込んでみた編』。同じシステムに本物のデータを食わせたら、149%はどこまで下がるのか——たぶん、けっこう下がります。それでも“プラスの条件”は見つかるのか。更新をお楽しみに。
あわせて読みたい

【開発日記・連載中】AIと本気で「稼ぐ自動売買Bot」を作ってみた(毎週更新)
「Claude Code(AI)に頼めば、自動でお金を増やすBotが作れるのでは?」——そんな下心マシマシで始めた開発記を、リアルタイムの連載日記でお届けします。夢を見て、バグに泣き、数字に騙されかけ、少しずつ前に進む。完結していない“進行中”の記録です。この記事は開発の進捗に合わせて、下へ下へと追記していきます。
学習塾・教室のAI活用:問い合わせ対応と情報発信を自動化する手順
学習塾・教室のAI活用:問い合わせ対応と情報発信を自動化する手順
AIを使えば、塾の問い合わせ対応やSNS投稿を半自動化できる。今日からコピペで使えるプロンプトと実際の設定手順を完全解説。

AIで仕事を自動化する:何から始める?手順と失敗しない注意点
「AIで自動化」と言われても何から手をつければ…という人へ。向いている仕事の見分け方、小さく始める3ステップ、コピペで使える例、そして必ず押さえたい注意点までまとめました。

この記事は「株式会社オールベッド」が運営しています。
AIを武器に、一人で千人分。株式会社オールベッドは、LINE集客の自動化・コンテンツの大量生成・ファネル設計まで、自分たちで毎日まわしている運用をそのままお渡しするマーケティング会社です。「AIを何から始めればいいか分からない」段階から、あなたの隣で一緒に走ります。
会社について詳しく →AIを「読む」から「使う」へ。
記事だけでは動けないときは、AI導入の伴走コンサルでお手伝いします。まずは2分のAI診断か、LINEでの無料相談からどうぞ。あなたの事業のどこからAIを使えるか、その場でお伝えします。