K-AIとは
競馬のAI予想は「どれだけ当たるか」で語られがちです。 K-AIが見ているのは、当たった回数ではなく増えたお金です。
出走する全馬を採点し、実力の割に人気がなさすぎる馬だけを買います。 当たる回数は多くありません。外れが続き、たまに来る高配当でまとめて取り返す—— そういう道具です。毎回当たる魔法ではない、という前提でご覧ください。
できること
予想を出すだけの道具ではありません。1レースを深く読むための画面と、 1頭を追いかけるための画面があります。
※ 表示例です
※ 表示例です
レース
出走する全馬をAIが採点します。予測結果・展開シミュレーション・血統・適性・確定結果・新聞の6つの見方を切り替えられます。
新聞
競馬新聞の馬柱をそのまま画面に載せています。紙を読む感覚のまま、AIの評価が横に並びます。
展開シミュレーション
どの馬が前に行き、どの馬が後ろから伸びてくるかを絵で示します。文字だけのペース予想を、目で見える形にしたものです。
強さ
馬1頭ごとの実力の移り変わりです。「そのとき強いと見えていた値」と「いま振り返るとどうだったか」を2本の線で並べます。
馬ページ・検索
気になった1頭を追いかけられます。戦績・血統・強さの推移をまとめて見られます。
分析
血統は系統別・季節別に、騎手と調教師は成績の傾向を集計しています。
スキャン
開催日の全レースをまとめて評価します。新馬戦と障害戦は対象外です。
履歴
単勝・複勝・馬連それぞれの回収率を、競馬場別・クラス別まで公開しています。良いときも悪いときも、そのまま出しています。ただし実際に賭けているのは馬連だけで、単勝と複勝は参考の集計です。
どう予測しているか
柱は3つ。馬の採点、レースの流れ、そして馬の実力です。
1. 全馬を採点する(AI Rating)
各馬の好走しやすさをAIが計算し、実際の的中率に合わせ込む補正をかけたうえで、そのレースの中での相対的な高さに変換します。 「絶対的な確率」ではなく「このメンバーの中でどれだけ抜けているか」を示す指標です。 値は下限20・上限80に収めていて、 50が平均、60以上で上位評価、70以上は高評価帯になります。 80に張り付くことはめったにないので、70台が出ていればかなり強い評価だと考えてください。
2. レースの流れを読む(展開)
多くの競馬AIは前走のタイムと着順だけで馬を評価しますが、 競馬は「誰と走るか」で結果が変わります。 前に行きたい馬が揃えば激しい流れになって後ろから来る馬に向き、 前に行きたい馬が少なければ楽な流れになって前の馬が止まりません。
さらに、全10競馬場についてスタートから最初のコーナーまでの距離を コースごとに持っています。ここが短いコースでは外枠の馬が前を取りにくく、 長いコースでは枠の不利が薄まります。
3. 馬の実力を測る(強さ)
強さの見方は2つあります。ひとつは1走ごとに勝ち負けで上下する値で、 初期値から始めて、格上の馬に勝てば大きく上がり、格下に負ければ下がります。 芝とダートは別々に集計します。予測に使っているのはこちらです。
もうひとつは全履歴をまとめて較正し直した値です。 「あのとき負けた相手が、その後に活躍した」といった後から分かる情報を織り込んで、 過去にさかのぼって評価を引き直します。読み物として画面に出しているのはこちらで、 予測には使っていません。後から分かる情報は、予想の時点では手に入らないからです。
どう買うか
強い馬を並べるだけなら、オッズを見れば済みます。 K-AIが探しているのは強い馬ではなく、実力の割に人気がなさすぎる馬—— つまり実力に比べて配当がつきすぎている馬です。 条件を満たす馬がいなければ、そのレースは何も出しません。
市場がつけたオッズも予測の材料のひとつとして使っていますが、鵜呑みにはしません。 展開・コースの形・実力値といった他の材料が市場の評価と食い違う馬を拾えるかどうかが、 この買い方の勝負どころです。オッズと同じことしか言わないなら、わざわざAIを使う意味がありません。
馬連 — 実際に賭けているのはこれだけ
人気を落とした大穴のうち、AIだけが2着以内に来ると見ている一部を軸にして、 中位人気の馬へ流します。 「市場が見落とした1頭 × 手堅い相手」という、配当の大きい組み合わせをねらう買い方です。 当たる回数は多くありませんが、当たったときの配当で取り返す設計になっています。
単勝(展開ねらい) — 画面には出しますが、賭けてはいません
レースの流れが向く穴馬を拾う戦略です。過去の検証では回収率100%を超えていますが、 現在自動投票に組み込んでいるのは馬連だけで、 単勝は参考表示にとどめています。 検証を通ったからといって手を広げるのではなく、実弾は一番自信のある馬連ひとつに集中させる—— 資金を分散させないための判断です。 画面に出ているものが全て賭けられているわけではない、という点はご承知おきください。
※ 過去にあったワイド・本命・穴・初ダートの各戦略は、検証で回収率100%を超えられず廃止しました。 差し昇級は、条件を満たす馬がほとんど出ず実質的に機能しなくなったため運用から外しています。 複勝とワイドについては13回の作り直しを経て、回収率に構造的な上限があると判断しています。
数字の正直な話
運用中の馬連は、過去データの検証で回収率 132%(28ヶ月)/ 167%(未来データ10ヶ月)でした。 ただしこれは平均値で、 実際は当たり外れの波がとても大きい戦略です。
- 年単位では一貫してプラス(2024〜2026年すべて黒字)。
- 一方で3ヶ月に1ヶ月ほどは回収ゼロの月があり、 過去には100レース以上続けて外した時期も。
- たまに出る高配当でまとめて取り返す設計のため、短期の負けは想定内です。
何が言えて、何が言えないか
回収率が正確にいくつかは、分かりません。当たる回数が非常に少なく、当たったときの配当が大きい買い方なので、 回収率を意味のある精度で言い切るには数万点の積み重ねが要ります。 いまのペースでは十年以上かかる計算です。これはK-AIが弱いという話ではなく、 大穴をねらう買い方に共通する性質です。
ただし「ふつうに買うより良いか」は別の質問で、 そちらには複数の手がかりがあります。年ごとに見て3年とも黒字だったこと、条件を先に決めてから探索に使っていない期間で試して 数字が落ちなかったこと、期間を半分に割っても両方で黒字だったこと、 一番大きい配当を3本抜いても黒字だったこと。 独立した複数の角度が同じ方向を指しています。
実際に賭け始めてからの成績も公開していますが、 こちらはまだ運と区別できるだけの本数が貯まっていません。 だから実戦の成績で良し悪しを判断せず、事前に条件を決めた検証を規律にしています。
※ 回収率: 投じた100円あたりの払戻倍率(100%が元返し)。未来データ: 学習にも補正にも使っていない先の期間のこと。
どう確かめているか
競馬の予想は、過去データに対してなら後からいくらでも良い成績を作れます。 条件をいじって当たった組み合わせを選べば、成績表はきれいになる。 そこに引っかからないよう、K-AIは順序を固定しています。
一般的な機械学習で使われるランダムな分割は使いません。 データを無作為に混ぜると、未来の情報が学習側に紛れ込み、 実際には知り得なかったことを知っている状態で成績を測ってしまうからです。
そして条件は先に決めます。 決めてから、探索に一度も使っていない期間で試し、 そこで数字が落ちなかったものだけを採用します。 後から条件をいじって良く見せることをしない、という手続き上の縛りです。 実際、この関門を通れずに捨てた戦略の方がはるかに多く、 いま実弾を入れているのは馬連ひとつだけです。
一般的な競馬AIとの違い
| 観点 | 一般的なAI | K-AI |
|---|---|---|
| 展開の読み方 | 前走のタイムと着順のみ | 全10場のコース形状と、出走メンバーの脚質構成からペースを読む |
| 評価の物差し | 当たりやすさ(的中率) | 増えやすさ(回収率)。オッズとの見合いを判定に組み込む |
| 検証の順序 | ランダムK-Fold(未来の情報が混ざりうる) | 時系列3分割。過去で学び、未来で試す順序を崩さない |
| 確率の扱い | モデルの出力をそのまま使う | 実際の的中率に合わせ込んでから、レース内での相対評価に変換 |
| 馬の実力 | なし、または全コース共通の指標 | 芝とダートを分けて算出。画面では全履歴で較正した値も併記 |
| 買い目の出し方 | 推奨馬を並べる | 条件を満たしたときだけ出す。満たさなければ何も出さない |
| 採用の基準 | 過去成績の数字 | 条件を先に決め、探索に使っていない期間で試し、そこで落ちなかったものだけ採用 |
| 説明 | 数値の羅列 | 生成AIが推奨理由を日本語で解説(印つき・戦略別・血統3軸の勝率を引用) |
裏側
ここから先は、興味のある方向けの技術的な話です。
予測に使う材料(特徴量)は7段階で順番に作ります。 すべての段階で時系列を厳守し、 その時点で知り得なかった情報を混ぜません。 最終的に100前後の項目になります。
- 基本 — 前走着順・上がり3F・着差・距離・レース間隔、騎手や調教師の勝率、血統の勝率、脚質。
- 掛け合わせ — 騎手×コース、種牡馬×芝ダート、調教師×騎手、コース×枠順。
- 展開 — コース形状とメンバーの脚質構成から流れを予測し、恩恵を受ける馬に印を付ける。
- 強さ — 芝とダートを分けた実力値。出走経験の浅い馬は変動を大きくする。
- 近走の粒度 — 通算・同コースでの複勝率、2走前・3走前の着順や上がり、着順の変化傾向、前走の人気との比較。
- レース全体 — 出走頭数、メンバーの強弱の散らばりに加え、市場がつけたオッズも材料にする。
- 条件 — グレード・クラス・斤量差・昇級経験の有無・休養明けかどうかを加えて統合する。
3段階目で使うコース形状は、全10競馬場のスタートから最初のコーナーまでの距離を コース・距離ごとに持っています。同じ競馬場でも距離が変われば別物です。
- 東京・芝2000m:約100m(ほぼ直後にコーナー。内枠がそのまま前を取りやすい)
- 中山・芝1800m:約210m
- 阪神・ダート1200m:約340m
- 東京・芝1600m:約550m
- 京都・芝1800m:約910m(余裕があり、枠順の不利がかなり薄まる)
- 新潟・芝1000m:コーナーがなく、全区間が直線
4段階目の実力値は、全馬を1500から始めて1走ごとに上下させます。 変動の大きさは経験で切り替えていて、出走5回に満たないうちは32、5回以上になると16に落とします。 素性の分からない馬は素早く実力の位置まで動かし、 走り慣れた馬は1走の結果で揺さぶられないようにするためです。
用途の異なる3つのモデルを組み合わせています。いずれも入力は7段階すべてを通した最終データです。
好走モデル
AI Ratingの土台。単勝(展開ねらい)の判定にも使います。
連対モデル
2着以内に来る確率を予測します。馬連の軸を選ぶのはこのモデルです。
複勝モデル
3着以内に来る確率を予測します。 「2着以内の確率が3着以内の確率を上回ることはない」という当たり前の関係を守らせるため、 連対モデルの出力に上限をかける役目を持っています。画面上の参考表示にも使います。
このほか、レース単位で「そもそも手を出す価値のある一戦か」を判定する仕組みを併用しています。
レース詳細の予測結果で、馬名の横に「AI 解説」のボタンが出ることがあります。 押すと、その馬の評価に何がどれだけ効いたかを、 押し上げた材料と押し下げた材料に分けた棒グラフで見られます。 連対・複勝・単勝の3つのモデルそれぞれについて切り替えられ、 上位だけを見ることも、全項目を並べることもできます。
このとき、市場のオッズ由来の材料は別枠にまとめて、 それ以外の材料と分けて表示します。オッズ由来の項目はほとんどの馬で上位に来るため、 一緒に並べるとK-AI自身が何を見て評価したのかが埋もれてしまうからです。 なお、この内訳は発走が近づいたレースについて用意されるもので、 早い時点では表示されません。
生成AIによる「AI競馬記者」が、数字だけでは伝わりにくい推奨理由を日本語で解説します。 レース情報・展開予測・強さ・末脚評価・コース適性・道悪適性に加え、 父と母父の勝率を全体 / 芝ダート別 / 当該コース別の 3軸で集計して渡します。
単勝と馬連で章を分け、それぞれ独立に◎○▲△☆の競馬印で見出しを立てます。 流れと脚質の食い違い(例: 楽な流れなのに差し馬を「展開向き」と書く)や、 枠順の定石に反する記述を避ける歯止めを入れ、データと矛盾しない解説を担保しています。 複数のモデルを順に試すフォールバック方式で、応答の速いものから使います。
バックエンド
FastAPI + Uvicorn(Python)
LightGBM / scikit-learn
PostgreSQL + SQLAlchemy
生成AI(コメント生成)
SSE(リアルタイムストリーミング)
フロントエンド
Next.js 16 / React 19(TypeScript)
Tailwind CSS v4
Recharts / Framer Motion
Clerk(ログイン)
Vercel デプロイ
最終更新: 2026-07-31