競艇の予想AIを作りました。動機は単純で、儲けたかったからです。2026年9月12日から全レースの予想を公開していて、9月14日までの3日間で502レース、収支は-40,030円。この連載では、何を作って、どこで見込み違いをして、いま何が分かっているのかを順番に書いていきます。
儲かるはずだった
最初の見込みはこうでした。3連単は120通りしかない。過去のレース結果は公式データから大量に取得できる。機械学習にかければ人間より当たる予想が作れる。当たる予想が作れれば儲かる。
3つ目でつまずきました。舟券には控除率があります。3連単では売上のおよそ75%が払戻に回る仕組みなので、市場全体で見れば購入額に対する払戻率は約75%です。何の優位性もない買い方なら、この控除率を超えるのが最初の壁になります。
しかも的中率を上げるだけなら簡単です。点数を増やせばいい。20点買えば当たりやすくはなりますが、外れた19点も同時に払っています。的中率と回収率は別物だということを、作り始めてから理解しました。
当てにいくのをやめた
そこで設計を変えました。「どの目が来るか」ではなく「配当がいくらになるか」を予測します。
出力は、3連単の払戻金が次のどの帯に入るかの確率です。
以下
1,600円
3,200円
6,400円
12,800円
以上
倍々で区切っているのは、配当が1万円を超えると数十万円まで一気に伸びるからです。等間隔にすると、上のほうの帯だけが極端に広くなってしまいます。
この形にしてから、言えることが変わりました。「1号艇が来そう」ではなく「800円以下に入る確率が62%」。堅いのか荒れるのかを、確率のまま扱えます。
「くそ荒れ」という段階を作った
とはいえ確率分布をそのまま並べても判断しにくいので、1つのスコアにまとめました。6つの帯に0から5の番号を振り、それぞれの確率で重みづけして合計します。堅いレースほど小さく、荒れそうなレースほど大きくなる値です。
これを4か所で区切って、5段階にしました。
いちばん上を「くそ荒れ」にしたのは、自分が一目で分かる言葉にしたかったからです。真面目な名前にしても、結局そう呼ぶので。
オッズは見ないことにした
当日のオッズは特徴量に入れていません。理由は2つあります。
1つは、このモデルでは市場の評価とは別に「データだけでどこまで予測できるか」を見たかったことです。オッズを入れると予測性能が上がる可能性はありますが、そのぶん市場の評価を取り込むことになります。まずは枠順や選手成績など、レースそのものの情報だけでどこまで判別できるかを検証することにしました。
もう1つは運用上の都合です。オッズが十分に固まるころには締切が近づきます。今回は、朝の時点でその日の予想をまとめて公開し、あとから書き換えない形を優先しました。
予想は毎日0時30分に作り、1時に公開します。レースが始まる前に確定させて、あとから書き換えません。結果の取得は予想とは別の経路にしてあります。この話は第5回で書きます。
モデルの学習データは2022年1月から2026年8月までで区切っています。2026年9月以降のレースは、公開後の実運用を確認するためのデータとして扱っています。モデル本体の学習には戻していません。
3日目の現在地
| 対象 | 502レース / 1,918点 |
|---|---|
| 的中 | 158レース(31.5%) |
| 投資 | 191,800円 |
| 払戻 | 151,770円 |
| 収支 | -40,030円(回収率 79.1%) |
市場全体の平均に近い75%は、いちおう上回っています。ただ3日で502レースというのは、優位性を語るには少なすぎます。高配当が1本当たれば回収率は跳ね上がりますし、当たらなければ戻ります。いまの79.1%は、まだ「たまたま」の範囲を出ていません。
それでも全部の数字を出しているのは、あとから都合よく切り取らないためです。当たった日だけ載せる運用になったら、まず自分が自分に騙されます。
これから書くこと
次回は、モデルをどう選んだかを書きます。高配当のレースだけで学習させたモデルを別系統として育てた話と、28通り試して採用できたのが1つだけだった話です。
赤字の報告から始めておいて何ですが、いまのところ「儲かる方法を見つけた」とは一度も言えていません。分かったのは、どこで儲からないかのほうがずっと多いです。それも含めて記録していきます。


コメント