satory074のBlog

チラシの裏

気まぐれ競馬予想 2026.03.21 - 2026.03.22

📝 予想概要

  • 本人の競馬の知識はほぼない
  • JRA-VANのデータを元に競馬予測をするシステムをAI任せで開発中(だいたいClaude Code)
  • どういう仕組みで予測されているかあまりわかっていない(そのうち理解したい)
  • 単勝・馬連はいける、複勝とワイドはちょっとやめておいたほうがいい、三連単・三連複は将来的にもやめておいた方が良いらしい
  • システム的に怪しいし、本人の競馬知識もシステムへの理解もないので、全部は賭けていない

jra-van.jp

✅ 予想結果

📊 全結果

sp.jra.jp

🐨 パース処理はちょこちょこ直してるけど、まだ桁間違えて10倍買ってる扱いになっているのがあるかもしれない...

🎯 的中馬券

✏️ 反省会レポート(Claude(分析) + ChatGPT(文章作成))

🐨 AIの文章を校正することで、どういう変更があって、どういう結果だったか把握している...

🔄 1. 変更点

今回の更新は、

  • データ基盤のBigQuery移行
  • モデルの再学習フロー
  • ストラテジー管理
  • 細かな不具合修正

まで幅広く進みました。

コミット数は27、変更ファイルは114、追加行数は3万7千行超と、この期間ではかなり大きなアップデートです。

(1) BigQuery移行

今回いちばん大きい変更は、これまではローカルで行っていた各種データの読み書きを、BigQueryに段階的に移していく作業を行なったことです。

予測や検証に使う材料を、あとで見返しやすくするために、集計しやすい形で整理を行いました。

  • 予測結果をローカルからBigQuery上で読み書きできるようにした
  • データをBigQueryに書き込むようにした
  • バックテストのBigQuery読み込み対応

(2) モデルの再学習の仕組みを追加

もうひとつ大きい新機能が、モデルの再学習をしやすくする仕組みの追加です。

半自動で再学習を行ってメインモデルの候補として扱い、メインモデルと比較・採用・ロールバックする流れが追加されました。

これは、「新しい予想方法をいきなり本番に出すのではなく、まずテスト候補として置いて、本命モデルと比べてから採用する」という流れです。

この仕組みが入ることで、モデル更新が勘と手作業ではなく、比較と手順に基づいて進められるようになります。

また、staging / champion / archived という状態管理が入ったことで、どのモデルが現役で、どれが試験中で、どれが過去版なのかが分かりやすくなりました。

(3) 戦略の管理も強化

買い方や運用ルールにあたる戦略の管理も強化されています。

新しく追加された検証スクリプトでは、ストラテジーを

  1. backtest(過去データで検証)
  2. holdout(未使用データで検証)
  3. warmup(小さく実運用)
  4. full(全面展開)

という4段階でチェックできるようになりました。

これは、
「新しい買い方を思いついたから、いきなり大きく張る」のではなく、 「まず過去成績で確認し、次に別条件でも確認し、少額で様子を見てから本格投入する」 という堅実な流れです。

この仕組みがあると、戦略の追加や改善をしても、事故的な賭けを防ぎやすくなります。

💬 2. 総評

今回の2日間は、単純な収支だけでなく中身も悪くありませんでした。

  • 回収率はプラス
  • 的中も2本出た
  • 確率と実績が近い値になっている
  • 馬連で予想した片方の馬が好走するケースが多い

このあたりを見ると、モデルが完全に見当違いな予想をしているわけではないと言えます。

一方で、今回のベット数は18件で、統計的にはかなり少なく、まだ再現性を断言できるほどのデータ量ではありません。

競馬はブレが大きいので、2日勝っただけでは結論は出ません。
少なくとも今後50日、60日と回して、200ベット規模のデータを見たいところです。

🌟 3. 良かった点

(1) 2日間トータルではしっかりプラス収支だった

まず一番わかりやすい成果はここです。

  • ベット数:20
  • 的中数:2
  • 払戻合計:3,930円
  • 賭金合計:2,000円
  • 損益:+1,930円
  • ROI:+ 96.5%

的中率だけ見ると10.0%なので、一見すると「そんなに当たっていない」と感じるかもしれませんが、競馬では、少ない的中でも配当が大きければプラスになることがあります。

今回まさにそうで、3月22日に

  • 中山6R 馬連 2-9
  • 阪神12R 馬連 1-8

の2本をしっかり当てて、トータルで利益を残せました。

競馬は「何本当てたか」だけでなく、どの配当を取れたかがとても大事です。
その意味では、この2日間は結果として成功と言ってよさそうです。

🐨 うれしい、ありがとう。


(2) 予測確率と実際の結果が、全体でかなり噛み合っていた

今回の分析で面白かったのは、キャリブレーションが良かったことです。

キャリブレーションというのは、簡単に言うと

「10%で当たる」と言った予測が、本当にだいたい10%くらい当たっているか

を見る考え方です。

今回の2日間では、

  • 予測平均:10.2%
  • 実際の的中率:10.0%

となっていて、かなり近い数字でした。

これは、モデルが少なくともこの2日間では「当たる確率」を大きくズラさずに出せていたと読めます。

競馬予測では、「たまたま当たった」だけでは再現性がありませんが、予測した確率と実績が近いなら、モデルの土台は悪くない可能性があります。

(3) 馬単体の見立てはかなり良かった

今回の結果で特に注目したいのがここです。

20ベットのうち、少なくとも1頭が3着以内に入ったケースが11件(55%)ありました。

これはつまり、馬連としては外れていても、

  • 片方の馬は1着
  • 片方の馬は2着
  • 片方だけ好走

といったケースがかなり多かったということです。

たとえば、

  • 3月21日 阪神11Rの単勝 #9は2着
  • 3月21日 阪神5Rの馬連 6-15は、15番が1着
  • 3月22日 阪神10Rの馬連 7-11は、7番が2着

というように、「見当違い」ではなく、あと一歩で的中という場面が何度もありました。

モデルが全然走らない馬ばかり選んでいるなら、こういう“惜しい外れ”はあまり起きないため、これは大きな前向き材料です。

(4). 馬連戦略がしっかり仕事をした

戦略別に見ると、今回の利益を支えたのはほぼ馬連でした。

  • 2日間で17ベット
  • 2的中
  • 損益:+2,230円
  • ROI:+131%

日ごとの出力数も8〜9件と安定していて、 「毎日ほぼ何も買えない」タイプではないのも良い点です。

競馬の予測戦略はモデルが良くても、ベット機会が少なすぎると評価をしにくい**ですが、この馬連戦略はデータをためやすく、今後の検証もしやすい形になっています。


💔 4. 悪かった点

(1) 的中率はまだ低く、2頭同時に走る予測は難しさが残る

今回の全体的中率は2/20で10.0%**でした。

全体では予測平均と実績が近かったとはいえ、実際の買い目として見ると「当たりがポンポン出る感じ」ではまだないのも事実です。

特に馬連は、

  • 1頭だけ好走する
  • もう1頭が崩れる

というパターンで外れやすい券種です。

今回も「片方は来たのに、もう片方が来ない」がかなり多く、モデルの馬単体評価は良さそうでも、2頭セットで1-2着に来る確率の見積もりにはまだ改善余地がありそうです。

2. 単勝戦略はサンプルが少なすぎて評価しにくい

単勝は、2日間で

  • 3ベット
  • 0的中

でした。

しかも3月22日は0ベットです。

1件しか買えていないと、良い戦略なのか悪い戦略なのか判断がかなり難しいです。 2着で惜しかったベットはありますが、それでもサンプル不足は否定できません。

予測モデルの評価では、「当たったか外れたか」より前に、十分な試行回数があるかが大切です。

この戦略は、現状だとオッズ条件やEV条件が厳しく、出力頻度が低すぎる可能性があります。

(4) 技術的な不具合があり、分析結果を少し信用しにくくしている

今回いちばん気になるのはここです。 予測内容そのものではなく、記録基盤の不整合が見つかっています。

  • Big Query上でのデータが重複して登録されている
  • 予測結果の戦略名が食い違っている