Excelで競馬の自動予想ツールを作った話

お金が勝手に増える機械を作りたい

「寝てるだけでお金が入ってきたらいいな」「金が成る木が実在すればいいのに」 といったことを、誰もが一度は考えたことがあるのではないでしょうか。

ですが、そうした夢を持ちながらも、実際にそんなことが実現する訳ないと諦めてしまっている方がほとんどでしょう。

私自身も、「お金が勝手に増えればいいな」と考えたことはあったものの、実現は諦めていました。

しかし、ある日私は「お金が勝手に増える機械」の実現方法を思いついてしまったのです。

それは、JRA(日本中央競馬会)が販売する馬券の中から、期待値が100%を超えているものを自動で抽出・購入するプログラムを作成することです。

期待値については以下の記事で詳しく説明していますが、期待値が100%を超えている馬券とは、簡単に言うと、損する確率より儲かる確率の方が大きい馬券ということです。

コインの裏表を予想し、当たったら100円が貰えるゲームの参加料が40円であれば、期待値は100%を超えており、参加した方が良いということになります。(外れたら40円損して、当たったら60円儲かるので、参加した方良い)

売られている馬券の中から、このように期待値の高いものだけを計算で導き出し、それを買い続ければ、理論上は大儲けできるはずです。

こうして私は夢の「金の成る機械」の実現に向けて動き出しました。

Excelで簡単なプログラムが組める

意外と知らない方も多いのではないでしょうか。

Excelには表計算ソフトとしての機能だけでなく、VBAという言語を使って簡単なプログラムが組めるという特徴があります。

ここでは、細かい技術的な話はしませんが、Excelでインターネットに接続してサイトの情報を取得したり、そうしたデータを元に四則演算をすることもできます。

幸い私はITコンサルタントという職業柄、簡単な数学やプログラミングの知識があり、それらを活かして予想ツールを作ることができそうです。

馬の名前や騎手についての知識は全くありませんが、競馬というギャンブルの仕組みは知っていますので、数学とプログラミングの知識だけで十分戦えそうです。

プログラムの内部ロジック

作成したプログラムの処理内容は大きく分けて以下の2つです。

①競馬情報サイトから、各レースのオッズを取得する
②取得したオッズから、期待値が100%を超えている馬券を算出する

②で簡単に期待値の高い馬券を算出すると書いてありますが、ここが一番難しいです。

私が今回考えた方法は、「単勝オッズから、それぞれの馬の勝率を割り出し、その勝率に基づいて馬単オッズを予想し、計算された予想オッズよりも実際のオッズが大きい馬券を抽出する」というものです。

ちなみに単勝とは1着になる馬を予想する買い方で、馬単とは1着と2着の馬を着順も含めて予想する買い方です。

少しわかりづらいと思うので、例を挙げて説明します。

例えば、4頭が出馬するレースがあり、1番の馬の単勝オッズが2倍、2番が4倍、3番が8倍、4番が8倍だったとします。

その場合、単勝オッズはある程度正確な予想であるとの想定の元、1番の馬が1着になる確率は50%(=1/2)、2番が25% (=1/4) 、3番が12.5% (=1/8) 、4番が12.5%(=1/8) となります。(※ここでは還元率の考慮は省いています)

さらに、全ての馬がそれぞれ1着になった場合を仮定し、その馬以外の中のオッズの重みから、再び同様に計算し、2着になる確率も計算します。

例えば、1番が1着になった場合、それぞれの馬が2着になる確率は、2番が50%、3番が25%、4番が25%となります。

このように計算すると、1番が1着の確率は50%であることがわかり、1番が1着だった場合の、2番が2着である確率も50%であることがわかります。

つまり、1着が1番で2着が2番である確率は50%×50%で25%(=1/4)であり、1-2の馬単(1着が1番で2着が2番であった場合に当たる馬券)の倍率は4倍であれば期待値がちょうど100%(=1)ということになります。

言い換えると、実際の1-2馬単のオッズが4倍以下であれば、買わない方が良く、4倍を超えている場合は買った方が良いことになります。

こうした計算を全ての馬単のパターンで実施し、期待値が100%を超えている馬券のみ抽出するというツールを作ったのです。

結果

勝てませんでした。

正確には、実際に馬券を購入した訳ではないのですが、過去500回のレース結果でテストをしてみた結果、勝てないことがわかりました。

プログラムの設計にミスは無いので、恐らく以下2点のどちらかが原因だと思います。

①単勝オッズを100%正しいと仮定し、馬の強さとしたこと
②1着率と2着率の違い(単勝オッズから2着になる確率の計算までしていまったこと)

ちなみに、リターンは83%程度でしたので、何も考えずに馬券を買い続けるよりはマシ、という結論でした。(馬単の馬券を買った場合の還元率は75%)

(2021年10月1日追記)

ツールの最新版として、入力した各馬の勝率を基に、馬連・馬単・三連複・三連単の期待オッズと実際のオッズを比較し、期待値を算出するツールを作成しました。

AIでの勝率予想などと組み合わせて割安な馬券を抽出することが可能です。

このツールを販売していますので、興味のある方は問い合わせフォームまたはTwitterからご連絡ください。

また、私はExcel VBAを使ったオンラインプログラミング講座も開催しています。

Excel VBAでのプログラミングに興味がある方は、以下リンクからお問い合わせください。

プログラミング教室|エクスピッツ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です