競馬の予想って、考える時間そのものが楽しいんです。
オッズの付き方から展開を読んで、馬柱を眺めながら自分の勝ち筋を組み立てる。昔からそうやって、自分の頭で予想してきました。土日の昼が待ち遠しくて、JRAとNetkeibaを行ったり来たりするのが週末の習慣みたいなものです。
でも最近、仕事が忙しくなってきて、予想に割ける時間がどんどん減ってしまいました。
「出馬表は見た、オッズも見た、でも読みきれてない」
そんな状態で馬券を買うと、当然精度も下がる。悔しいし、もったいない。
予算は月1万円以内。回収率は競馬歴12年でトータルで170%ほど。
勝てそうなときしか買わないからこそ、それなりの結果も出せていると思っています。
なので、予想が中途半端な状態で週末を迎えるのが、だんだんとストレスになってきました。
そのとき思ったんです。
「自分が予想する時間を取れないなら、自分の予想ロジックそのものをAIにしてしまえばいいんじゃないか」
思考をコードに落とすという発想
私はもともと自動化系の仕事をしていて、C#とPythonは日常的に使っています。VBAやPADでの業務処理も組んでいるので、ロジックの分解や構成はある程度慣れている方です。
だから、競馬の予想を自動化するとなったときも割と自然に、
- PythonでJRA-VANとNetkeibaのデータを集める
- C#で自作の予想画面を組む
- 自分の“買わない癖”“買いたくなる感覚”を判定条件としてロジック化する
という手順が頭の中で展開されました。
- 外枠に入った1番人気の逃げ馬は怖い
- 前走馬体減+調教時計速すぎ(メイチかそうじゃないか)
- 調教が微妙なのに、騎手コメントがやたら強気
- 函館札幌内枠前丹内は買い
- 中央ローカルの逃げ武史は買い
- だまってルメール買っとけ!(これは罠、ダートルメールは信用できない)
- 母父ディープは買えない
- 父ディープは宝塚は来ない
- 短距離の津村はとりあえず買っとけ
- 府中・マイルの三浦は強い(ダートなら地方も買える)
などなど
こういう条件を一つひとつ言語化してコードに落としていきました。
最初のアウトプットで気づいたこと
初回の予想AIが出した本命は、東京芝1400で出走する7番人気の差し馬。
展開スコアは悪くない。脚質的にも流れが向きそうだし、オッズの付き方にも妙味はある。
でも、正直に言えば、私だったらその馬を「軸にはしない」。
買い目に入れる可能性はあるけれど、中心にするタイプの馬ではない。
このとき思ったのは、
「ロジックは正しいが、自分の感覚とは少し違う」
AIに“私の癖”はある程度教え込める。でも、“その日の気分”や“直感的なハズし方”までは再現できない。それでも、このズレを埋めていくことこそが、今後のアルゴリズム改善の中心になるだろうと感じました。
開発時の構成
ざっくり言うと、こういう形です:
-
Python
・JRA-VAN APIで過去5走のラップ/通過順/脚質などを取得
・Netkeibaのスクレイピングで調教評価と最新オッズを収集
・予測用スコアリングと罠フィルターを構築 -
C#
・UI設計。買い目候補/スコア/除外理由などを見やすく表示
・自分で買うかどうかを判断できる「手動修正モード」も搭載
とりあえず、私の“買わない判断”はある程度実装できていて、今は“買いたくなる条件”の精度調整をしている段階です。
第1回のまとめ
予想する時間が取れなくなった。だからAIを作ろうと思った。
きっかけはシンプルですが、競馬が“自分の頭を使って勝負する趣味”だからこそ、「思考をコード化する」という選択肢に価値を感じました。
もちろん、人間の予想とアルゴリズムの間には差があります。
でもその差をどう縮めるか。どう納得できる出力にするか。そこに“趣味としての技術”の面白さがあります。
次回予告:第2回「私の競馬スタイル:勝てるときしかやらない」
次回はもう少し私自身のことを話します。
子供の頃に親と一緒に競馬場でディープインパクトの走りを観た日から始まり、どうして“買わない勇気”を持つようになったのか。予算は月1万円、勝てそうなレースしかやらない、そのスタイルがどう形成されたのかを振り返ります📘🐎✨