本文へスキップ
株式会社オールベッドALL BED INC.
活用例·

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

#AI活用#開発日記#バックテスト
【開発日記・連載中】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のバックテストを作って』と頼むと、返ってきた最初の一言が予想外でした。『まず“買わないレースを決めましょう”』。……買う話をしてるのに、買わない話から始まった。

Day 1の学び

競馬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と開発する感じ”だったので、そのまま載せます。

実際のやりとり(一部抜粋・要約)
的中率2.5%て…全然当たってへんやん。壊れてる?
AI(Claude)
壊れていません。その2.5%は全券種の“平均”で、当たりにくい三連単を4,485点も買っているのが平均を下げています。三連単の的中は0.6%——これはプロでも1〜3%で、正常な数字です。
じゃあ当たってる券種もある?
AI(Claude)
複勝は18%、ワイドはレース単位で21%当たっています。ただ、そもそもこのAIは“人気の本命”を買わず、割安な馬だけ狙う設計です。だから的中率が低いのは仕様。狙いは『当てる』ではなく『トータルでプラス』です。
なるほど…当たらへんのが正解ってこと、初めて腹落ちしたわ
Day 4の学び

的中率と回収率はまったくの別物。当てにいくほど、胴元の取り分(控除率20〜30%)に負けやすい。『当たらないけど、当たった時に大きい』を淡々と積むゲームだと、ようやく理解しました。

Day 5:三連単という“甘い罠”

券種ごとの成績を眺めていて、三連単だけ回収率106%と表示されているのを発見。おっ、プラスやん! また心が躍りました。が、AIが静かに続きを見せてきます。『その106%、最大70連敗・最大の落ち込み16万円です。たまたま大きい配当が1回当たって、良く見えているだけの可能性が高い』。70連敗。心が折れる音が聞こえました。

回収率だけを見て「勝てる」と判断してはいけない。連敗・最大ドローダウン・月別の安定性まで見て、初めて“使える条件か”が分かる。開発中のAIの助言より
Day 5の学び

『一番いい回収率の券種』を探し始めた瞬間、それは分析ではなく自分を騙す作業になる。だからこのシステムは、回収率だけでなく“連敗・最大DD・月別/年別の安定性・買い目の多さ”まで全部並べて表示するようにしました。都合のいい数字ではなく、一番つらい数字を信じる。

Day 6:最大の落とし穴「その数字、ニセモノです」

券種を全部乗せした欲張りセットで、回収率がなんと149%。ベンツの色を選び始めた——のも束の間、AIが冷や水を浴びせます。『念のため言っておくと、今のデータは“合成の練習用データ”です。本物の実力差が存在しない盤面なので、この149%は実際の期待値ではありません』。ベンツが軽自動車を通り越して、自転車になりました。

つまり今のところ、システムは完成しているのに、“食わせている過去データがニセモノ”。だから『これで稼げます!』とは口が裂けても言えません。数字が良く見えても、それが本物のデータで再現できなければ、ただの絵に描いた餅です。

Day 7(次回予告):本物のデータに挑む

というわけで次のステップは、JRA公式データ(JRA-VAN・月2,000円ほど)と契約して、1986年からの“本物”の過去レースを丸ごと読み込ませること。ここで初めて「的中率」も「回収率」も本当の意味を持ちます。

先に釘を刺しておくと、本物のデータで検証しても、控除率20〜30%という高い壁は変わりません。だから方針はシンプルです——『バックテストでプラスを“証明”できなければ、1円も賭けない』。夢は見つつ、足元は冷静に。ちなみにこの記事は、特定の馬券の購入を勧めるものではありません。馬券は20歳以上・自己責任で、余剰資金の範囲で楽しむものです。

▼ ここから下に、最新のDayが追記されていきます

この日記は現在進行中です。次回は『本物のJRAデータを取り込んでみた編』。同じシステムに本物のデータを食わせたら、149%はどこまで下がるのか——たぶん、けっこう下がります。それでも“プラスの条件”は見つかるのか。更新をお楽しみに。

株式会社オールベッド
ABOUT US

この記事は「株式会社オールベッド」が運営しています。

AIを武器に、一人で千人分。株式会社オールベッドは、LINE集客の自動化・コンテンツの大量生成・ファネル設計まで、自分たちで毎日まわしている運用をそのままお渡しするマーケティング会社です。「AIを何から始めればいいか分からない」段階から、あなたの隣で一緒に走ります。

会社について詳しく →

AIを「読む」から「使う」へ。

記事だけでは動けないときは、AI導入の伴走コンサルでお手伝いします。まずは2分のAI診断か、LINEでの無料相談からどうぞ。あなたの事業のどこからAIを使えるか、その場でお伝えします。