🛥️

競艇BOTの未来について考える

2023/12/28に公開

皆さんこんにちは。競ラボと申します。機械学習を用いた、競艇の自動投票プログラム(簡単のため競艇BOTと呼びます)を開発している者です。

Advent Calendar の投稿の一部として考えていたのですが、それ自体が12月25日までという運用ルールを失念しており、結果として通常の記事としての投稿になりそうです。

実はこの記事とは別にポエム記事を執筆中だったのですが、その記事の中で紹介する予定だった本内容が思いの外重たくなり、別途こちらで公開する事にしました。

背景

私は2020年から本格的に競艇BOTを開始し、一時期は、その年に得た8割ぐらいのお金を溶かしながらも、何とか本日まで生き延びてきました。

最近は漠然とうまくいっている感じが続いていますが、とはいえ自分のモデルの精度程度では、数年後も同じようにうまくいくとは考えていません。それは何故かと言うと、ある数字のせいです。

!!! 25% !!!

それが、この業界における、賭ける額に応じて徴収される手数料です。この手数料を払った上で、勝ち続けなければなりません。

オッズ(大衆)の確率通りに賭ける事を続けた場合、回収率は75%へと収束していきます。

そのため、大衆を出し抜く形でうまく予想し、より美味いオッズに(期待値の高い出目に)賭けて、勝つ必要があります。

しかし、そんな状況がずっと続くでしょうか?

  • 大衆の予想が洗練され過ぎて、神のみぞ知る競艇の正解へと近づいていく未来
  • 超最強AIが爆誕・乱立し、ただでさえ少ないパイがさらに食い荒らされる未来
  • 客離れが加速し、競艇が無くなる未来(シンガポール競馬のように)※これはどうしようもありませんが

私は気になります。いつまで今の状況が続くのか、現在の大衆予想はどうなっているのか、今後も勝ち続けるにはどうすればいいのか。

今回は、そういった分析について、少し真面目に取り組んでみたいと思います。

競艇の「変化」

競艇における 変化の要素 は何でしょうか。

これは、分析する際に考慮されるべき項目です。他にもあるかもしれませんが、今回は以下を考えます。

  • オッズ(大衆予想)の変化
  • 競技の性質(内容)の変化
  • 主催者側の変化

オッズ(大衆予想)の変化

YouTube や X(Twitter) は昔と比較すると、良くも悪くも競艇に関するコンテンツが増えました。AIによる予想サイトも乱立し、1次情報のアクセスという意味では、昔に比べると簡単に入手しやすくなったと思います。

そして私のような競艇BOTもいくつか参入し、大衆予想は変化していっていると言えるでしょう。

競技の性質(内容)の変化

他の競技でも同様だと思いますが、その競技自体に属する選手全体が平均的に成長しており、競技内の指標や期待される結果が昔とは異なってきている可能性があります。

例えば野球だと、大谷翔平選手の二刀流の登場によってゲームのルール自体が多少変更になったりしているそうですし[1]、将棋なんかもAIの登場によって棋士の研究スタイル自体が変化している事と思います。

競艇にもそういった変化は恐らくあるはずで、例えば選手のボートの操縦技術は年々高くなっているでしょうし、そういった影響で同程度の勝率(競艇選手の技量を表す独自指標)を持った選手を、今と昔で比較する事は、あまり意味がないかもしれません。

技術の向上によって、1コースが昔に比べてさらに勝ち易くなっている、といった事もあるかもしれません。※競艇は基本的に1コースが有利です。

主催者側の変化

私が主催者側の変化として考えているのは、主に出走表の組み方に関するものです。

競艇は企画レースなるものが存在し、例えば1号艇にA1選手(A1, A2, B1, B2 の順で選手のランクが存在します)でそれ以外にB1選手が入る、などのレース()があります。

1号艇はただでさえ勝ちやすいのに、さらに強い選手がその枠に入ったりするわけです。これらは、例えば競艇における1号艇の強さ、みたいな分析を難しくします(バイアスを強めているので)。

絵にするとこんな感じです。(矢印の粒度や方向はあまり突っ込まないでください)

オッズの変化は、かなり複合的な要素であり、分析が難しいと思われます。当たり前ですが、生きている人たちが予想するので、それは絶え間なく変化し続けています。

分析方針

競艇を含む公営ギャンブルにおいて、一番重要な要素は何でしょうか。

  • 勝つ選手の予測?
  • BOX買いだったりの買い方?
  • 勝ち易いレースの選択?

違います。ずばり、オッズ が一番重要です。

何故なら、大衆予想(オッズ確率)がそこそこ正しくなれば、もはや何をしようが勝てなくなるからです。

それは競艇の控除率という手数料の性質上、そうならざるを得ません。大衆予想がデタラメであるというのは、ある種の前提条件と言えます。

オッズ

競艇のオッズについて、その数値がどう決まるのかを説明しておきます。

全参加者の総投票数を N、それぞれの出目i(例えば三連単の 1-2-3)に集まった票数を N_i と定義すると、出目iのオッズ O_i は以下のように計算されます。0.75 というのは、25% は主催者の取り分となるので、残り 75% をオッズとして配分するという意味です。

O_i=\frac{0.75 \times N}{N_i}

参加者の総意としては、ある出目i が発生する確率 P_{O_i} は以下になり、O_i を使って定式化すると

P_{O_i} = \frac{N_i}{N} = \frac{0.75}{O_i}

となります。この確率を便宜上 オッズ確率 と呼ぶ事とします。

オッズ確率の誤差

書いたものの、使われません

上述で定式化したように投票数 N, N_i に関する箇所は、日によって参加者の票数が変わる箇所だと思います。さらにそれらの誤差を、とりあえず統計誤差として \Delta N=\sqrt{N} を採用します。

オッズ確率の誤差は、それらの誤差が伝搬していると考えます。

\Delta P_{O_i}^2 = (\frac{\partial P_{O_i}}{\partial N_i})^2\Delta N_i^2+(\frac{\partial P_{O_i}}{\partial N})^2\Delta N^2 = (\frac{1}{N})^2\Delta N_i^2+(-\frac{N_i}{N^2})^2\Delta N^2

予測モデルについて

予測モデルは唯一、上述した「競艇の変化」を無視できる存在と考えます。

例えば以下の種類の予想について、「競艇の変化」を無視できるか、考えてみましょう。

  • 個人の人力予想
    日によって、状況によって、資金によって、気持ちによって、予想はブレまくります。競艇の変化どころの騒ぎでは無いです。

  • 大衆の予想
    平均的にはブレなさそうです。しかし、年毎の参加者の属性も変わりそうですし、上述したように、大衆予想の変化は複合的な要因で複雑です。

  • モデルで予想
    予測モデルは単なる関数Fです。x を入力した時に F(x)=y を返却し、その計算式は固定されています。2020年までのデータで学習したモデルは、その時点での良い計算式を学習し、同じ入力には常に同じ出力を返します。常に一定の思考で予想できるため、その予測結果の精度の良し悪しの変化は、モデル以外の環境の変化が直接反映されます。

つまり、競艇の何かしらの変化を分析する際に、予測モデルを基準に分析する事はとても便利です。

分析指標

こちらも特に正解がある訳ではないのですが、やはり確率の「数字」までアプローチした指標が良いと思います。

なのでとりあえず、情報量 としてのエントロピーをうまく使って分析したいと思います。

機械学習の分類タスクでも、主に交差エントロピーを使った学習が行われますし、そう筋の悪い指標では無いはずです。

「大衆の予測精度」を「何」で分析する?

大事なのは、オッズ確率の精度です。これが神様目線の正解に近づいているのなら、どんな最強AIが登場してもどうにもなりません。

大衆の予測精度はオッズに表れます。その時間的な変化を見ても、大衆予測も常に進化しているので、内容は複雑になります。モデルはそういった進化はないので、一定の目線で分析が可能と思います。

指標説明

オッズ確率のエントロピー

あるレースのオッズ確率のエントロピーEは次のように計算できます。

E=\sum_{i=1}^{120}-P_{O_i}\log{P_{O_i}}

エントロピーが低いオッズというのは、次のようなレースです。


エントロピーが低いレースのオッズ例. URL

予想という意味では超簡単ですよね。実際に買うだろう舟券候補は多くありません。

逆にエントロピーが高いレースは次のようになります。


エントロピーが高いレースのオッズ例. URL

見事に票が割れています。300倍台が一つもないというレースはかなり珍しいです。こういったレースは、いわゆる着順予想はかなり難しいと言えるでしょう。

エントロピーは情報量です。情報量が多いという事は、言い換えれば、情報が複雑という事です。

オッズ確率の交差エントロピー(CE)

機械学習の分類タスクにおける代表的な損失関数です。

オッズ確率と正解ラベル(三連単)の交差エントロピー(Cross Entropy. 略してCE)は、次のように計算します。例えば三連単の正解を見る場合は、1レースのCEは以下のように

CE=\sum_{i=1}^{120}(-Y_i \log{P_{O_i}}) \\

となります。Y_i10 をとります。例えば、そのレースの正解が 1-2-4(i=2) の場合、Y_2=1でそれ以外は 0 になります。
i=1 ⇒ 1-2-3, i=2 ⇒ 1-2-4, ..., i=120 ⇒ 6-5-4 としています。

仮に 2-3-4 のオッズが75倍でレースが 2-3-4 の決着だった場合

CE=-1 \times \log_{10}{\frac{0.75}{75}}=2

となります。log_{10} としていますが、基底は何でも良いです。以降は自然対数eを使います。

オッズで分析

オッズ確率の交差エントロピー(CE)の変化


オッズ確率の1日平均/1月平均CEの時間変化. 大衆の予測精度の変化を表す

オッズ確率の正解ラベルに対してCEを計算したものを、時間別にプロットしています。

黄線はレース毎のCEを1次関数で fitting したものになります[2]。赤線が2021年から2023年までのデータを使った fitting です。

CEが下がるという事は、予想の精度が上がっている事を指します

黄線では、誤差を考慮してもマイナスの傾き[3]です。つまり、オッズ確率の予測精度は年々上がっています。(ただしここ3年間だけで言うと、予測精度の向上は停滞しています。)

競艇の「変化」に照らせ合わせると、次の事が複合的に起こっていると考えられます。

  1. 大衆が賢くなり、予測精度が上がっている
    AI台頭(弊AIも含む)、コンテンツ拡充。懸念すべきシナリオです。

  2. 競艇が、選手成長に伴い予想が簡易化し、結果が単純化した
    年々前付けが減り、枠番通りの侵入が増えていった、などのシナリオです。穴目がより穴目に、1号艇がより盤石になった、等です。選手が皆サイボーグみたいな精神を獲得し、ランダム要素が減った、みたいな可能性もあります。

  3. 出走表の時点で簡単なレース(低いエントロピー)が多くなった
    昔に比べると、進入固定のレースが増えたり、極端な出走表の企画レースも増えたりしています。

オッズ確率のエントロピーの変化


オッズ確率の1日平均/1月平均エントロピーの時間変化. 出走表の難しさの変化を表す

オッズ確率のエントロピーの変化をプロットしています。縦軸の項目が変わっただけで、それ以外は同じ内容です。

この図から、年々エントロピーの低いレースが増えてきている、という事が言えます。しかしながら、オッズ確率自体が年々アップデートされているため、この結果だからこう、というのは強く言えません。


オッズ確率のエントロピーとCEの相関


横軸はエントロピー, 縦軸はCEの二次元ヒストグラム. 相関係数は約0.33

エントロピーとCEの相関をプロットしています。エントロピーが高いレースになればなるほど、予測精度も悪くなる、という傾向が多少(相関係数が約0.33)見られます。

なので、オッズ確率のCEが下がっている要因のひとつに、エントロピーが高いレースが多くなった(「1.」と「2.」と「3.」の複合)は、全体要因の3割程度は当てはまるのではないでしょうか。


オッズ確率の分析まとめ

分析しておいてなんですが、オッズ確率だけでは特に何も言えない気がします。とりあえず、オッズ確率はリアルタイムに変化するので要因が複雑、という事が言いたいです。

モデルで分析

学習に2021年まで利用しているので、2022年以降で評価します。

モデル予測の交差エントロピー(CE)の変化


モデル予測確率の1日平均/1月平均CEの時間変化. モデルの予測精度の変化を表す

モデル予測確率と正解ラベルのCEの変化をプロットしています。

モデル予測確率では、ここ2年だけで言うと、CEが上がっています。つまり、予想が外れてきている傾向にあります。

これは同様に、以下に事象が複合的に発生しています。

  1. モデルがバカになり、予測精度が下がっている
  2. 競艇が、選手成長に伴い難しくなり、結果も複雑になった
  3. 出走表の時点で難解なレース(高いエントロピー)が多くなった
1. モデルがバカになった

モデルは変わりません。

2. レース結果が複雑になった

モデルにとって、2021年以前までのレースしか知りませんので、競技自体の変化はダイレクトに反応します。

つまり、競技結果が複雑になった分は予測値との乖離が発生します。

しかし同様に、出走表がより複雑になり、例えば2021年以前では珍しい選手の組み合わせのレースが多くなると、そこは学習できていない可能性が高いため、精度は悪くなります。

そのため恐らく、「2.」と「3.」は分離できません

ただ少なくともCEが悪くなっているので、2022年と比べるとレース予測は難しくなっているのかなと思われます。

3. 出走表が難しくなった

モデルは、一定のルールに基づいて予想しており、レース結果の複雑さに関する情報は、2021年当時のままです。

そして、エントロピーという指標は、レース結果が考慮されません(自分の予測確率だけで計算されるので)。つまり、レース結果の確率分布の変化の影響は無視できます。

そのため、モデルのエントロピーは(そのモデル視点での)こんなレース過去に見たことない(学習していない)! という指標(出走表の難しさ、もしくは新規性)になっていると思います。

※学習できていれば予測精度は良くなり、エントロピーは下がります。エントロピーが高いという事は、見た事が無いサンプルだ、という事です(予想)。


モデル予測のエントロピー(CE)の変化

モデル予測確率のエントロピーの変化を見てみます。


オッズ確率の1日平均/1月平均エントロピーの時間変化. 出走表の難しさの変化を表す

モデル予測確率のエントロピーの変化をプロットしています。2022年に比べると、最近は難しいレースが多くなっているようです。


モデル予測のエントロピーとCEの相関

同様にエントロピーとCEの相関を確認してみます。


横軸はエントロピー, 縦軸はCEの二次元ヒストグラム. 相関係数は約0.32

モデル予測の分析まとめ

まとめると、(おそらく)こうなります。(少なくともオッズ確率で見るよりは単純化します)

モデルとオッズで分析

オッズ期待値の変化

うだうだ書きましたが、要は、勝てればいいのです!!!

気になるのは、オッズの期待値がどう変化しているか です。単に期待値の合計を数えても意味がありませんので、まずは単純な閾値の元、実際に舟券を買ったテイでの収支を確認しましょう。


期待値に対する閾値別の資金変動. 横軸はレース数. 閾値1.7が一番良い成績

ぱっと見、後半になるにつれて、勝ち辛そうな挙動をしています。

とりあえず一番良い閾値で、1レースにどれだけ期待値の(閾値以上の出目の数)があるかを見てみます。


1レースあたりの期待値1.7以上の数の変化

数が徐々に減っています。良くないです。1レースあたりの数が多い方が、当然収支は安定するはずなので、数が多いに越した事はありません。


オッズ確率とモデル予測確率の距離の変化

自分の予測がオッズ確率に対してユニークであれば嬉しいので、その距離を測ってみます。勿論、距離が大きい確率分布は捏造できるので、まっとうに予測をした上で、オッズと異なる事 が重要です。

KLダイバージェンス

オッズ確率とのKLダイバージェンスを見てみます。一般的に、確率分布同士の距離に相当する指標を数値化できます(厳密には距離の公理を満たしていないようです)。


モデル予測確率とオッズ確率のKLダイバージェンスの時間変化

数字が大きい方が、異なり度合いが大きいので、基本的に嬉しいです。

オッズ確率と私のモデル予測確率が似てきている傾向があり、良くないです。私のモデル予測確率がオッズと同等になると、私のモデルでは何をやっても勝てません。

cos類似度
書きましたが、余計なプロットに思えます

cos 類似度でも見てみましょう。※KLダイバージェンスとどっちがどう良いんですかね...?


モデル予測確率とオッズ確率のcos類似度の時間変化

こちらは、数値が小さい方が、異なり度合いが大きいため、嬉しいです。


距離の考察


エントロピー別のKLダイバージェンスの時間変化. エントロピーの大小で5段階にグループ化している

エントロピー別のKLダイバージェンスの時間変化をプロットしました。エントロピーの大きさで並べ替えた時に、全体の0~12.5%(very low), 12.5%~37.5%(low), 37.5%~62.5%(middle), 62.5%~87.5%(high), 87.5%~100%(very high) の範囲でグループを分けています。

low の範囲で(相対的に予想が簡単そうな出走表)、私のモデル予想と似ている傾向がより顕著です。

距離の絶対量として、low の範囲が一番小さいというのも面白いです。もっと小さい very low の範囲で見た際(つまり、もっと予想が簡単なレース)は、私のモデル予測確率はオッズ確率よりも相対的に優位である、という事です。

モデルとオッズの分析まとめ

自分のモデルの寄与を排除していないとはいえ、寄与は時間に関わらず一定と考えると、KL距離の時間変動が見られた、という事はやはり何かしら起こっているのかなと思われます。

モデルは2022年以降の「競技の変化」や「主催者の変化」を学習していませんが、そこを大衆予想が日々学習していると考えると、その変化を学習した分については、KL距離が離れる気がします(多分...)。しかし、KL距離は近づいていますので、

結論としては、自分のモデルと似た予想の人/AIが若干増えたのかなと。

結論

なんか色々やりましたが、結局よく分かりません!

多分、色んな仮定を外していけば、結論はよりシンプルになる気はするのですが、それは自分の知りたいものと違っている気がして、でも色々詰め込んだ結果、結局よく分からなくなりました。

1問1答スタイルで潔くまとめてみます。

  • 大衆の予測精度は?
    年々上昇中。近年は相対的に停滞。複合的な要因

  • 大衆は賢くなった?
    不明。大衆の予測精度は、レースが簡単になった事などと複合しているため、切り離しが難しい。賢さは不明だが、少なくとも自分と似た予想をする人/AIは増えたかも。自分にとっては良くない

  • 出走表は難しくなった?
    2022年から見ると、最近は難しくなった。2021年以前は不明

  • レース結果の傾向は変わった?
    2022年から見ると、最近は複雑に(予測が難しく)なったと思われる。2021年以前は不明

  • まだまだこれからも勝てる?
    期待値の数は減っている傾向にある。まずい

  • オッズに対してモデルはユニーク?
    ユニークさは徐々に減っている。上述したが、自分と似た予想をする人/AIは増えたかも

最後に

結局、弊AIの影響を排除しきれていないのが気持ち悪いです。票数推定して自身の投票数を差っ引いて確率計算し直して、出直します。

良いお正月を。

脚注
  1. https://pacificleague.com/news/47848 ↩︎

  2. 参考: http://www.cc.u-ryukyu.ac.jp/~fukami/p0.pdf ↩︎

  3. 各傾きの大きさと誤差は図内に表記しています ↩︎

Discussion