競馬の回収率115.7%を過剰最適化とOOS検証から分析

回収率115.7%は本物?競馬データの過剰最適化とOOS検証

前回の記事では、2021〜2025年の公開集計データから「1番人気」を調べました。

そこで、かなり気になる数字が見つかりました。

函館ダート1000m・1番人気

単勝回収率115.7%

100%を大きく超えています。

この数字だけを見ると、「函館ダ1000mでは1番人気を買えばいいのでは?」と思いたくなります。

しかし、私はむしろ逆です。

こういう数字を見つけたときほど、まず疑います。

本当に知りたいのは

「過去に儲かったか」ではない。

「未来でも残る可能性があるのか」です。

そこで今回は、競馬データを見るうえで非常に重要な「過剰最適化」と「OOS検証」について考えます。

なお、これは競馬だけの話ではありません。

FXや株のシステムトレードでバックテストをしたことがある人にも、そのまま通じる話です。

回収率115.7%は確かに魅力的

まず、115.7%という数字自体を否定する必要はありません。

対象期間・集計条件の中で実際に115.7%だったのであれば、それは一つの観測結果です。

115.7%とは何を意味するのか

たとえば10万円を賭けて11万5700円が戻ってきたなら、収支はプラス1万5700円です。

したがって、

過去の結果としてはプラス

と言えます。

しかし、ここから一気に、

「今後も回収率115.7%になる」

とは言えません。

過去の回収率と未来の期待値は違う

ここは非常に重要です。

過去の回収率は、すでに起きたレースの結果です。

一方で、私たちが馬券を買うのは未来のレースです。

つまり、本当に欲しいのは過去の成績表ではありません。

過去データから、

「市場が繰り返し間違えている条件が存在するのか?」

を推定することです。

そのため、回収率だけでは判断材料が足りません。

なぜ「115.7%」を疑う必要があるのか

理由の一つが、条件を発見した順番です。

前回紹介した公開集計では、JRA全10場・79コースを比較しています。

そして、その中から函館ダート1000mの115.7%という数字が見つかっています。

最初から函館ダ1000mを狙ったわけではない

つまり、検証の流れは次のようになります。

79コースを調べる

↓

それぞれの回収率を計算する

↓

成績の良いコースが見つかる

この順番は重要です。

なぜなら、最初から函館ダート1000mだけを仮説として検証したわけではないからです。

そこで問題になるのが「偶然」です。

たくさん探せば「すごい数字」は出やすくなる

仮に79コースすべてに本当の優位性がなかったとしても、実際のレース結果にはブレがあります。

そのため、あるコースではたまたま人気馬がよく勝ち、別のコースではたまたま負けることがあります。

さらに、競馬ではさまざまな条件を作れます。

  • 競馬場
  • 距離
  • 芝・ダート
  • 枠順
  • 人気
  • オッズ帯
  • 騎手
  • 馬齢
  • 馬場状態
  • 前走着順

これらを組み合わせれば、数百、数千という条件を試すこともできます。

1000通り探せば「回収率130%」も見つかり得る

たとえば、何百通りもの条件を調べたとします。

すると、その中から、

回収率130%!

という条件が見つかっても不思議ではありません。

しかし、その数字が「本物のエッジ」なのか「偶然の当たり」なのかは、まだ分かりません。

つまり、私が本当に知りたいのは、

未来でもその数字が残るのか?

ということです。

競馬にもカーブフィッティングがある

この問題は、競馬だけの話ではありません。

株やFXのシステムトレードをやったことがある人なら、「カーブフィッティング」という言葉を聞いたことがあるかもしれません。

簡単に言えば、

過去データに合わせすぎて、過去だけ完璧に見えるルールを作ってしまうこと。

です。

条件を追加すればバックテストは改善できる

たとえば、最初は「1番人気」だけだったとします。

回収率が低かった。

そこで「東京だけ」にします。

まだ低い。

次に「芝だけ」にします。

さらに「1600mだけ」にします。

その後、「良馬場」「3〜5枠」「特定オッズ帯」と条件を足していく。

すると最終的に、

過去回収率145%

のようなルールが完成する可能性があります。

条件を足すほどサンプル数は減っていく

ところが、条件を増やすほど対象レースは減っていきます。

その結果、偶然うまくいった少数のレースだけを残している可能性があります。

つまり、

条件が細かい

=

精度が高いとは限らない

ということです。

サンプル数も必ず確認する

もう一つ重要なのがサンプル数です。

同じ回収率115%でも、母数によって数字の見え方は大きく変わります。

20件の115%と2000件の115%は同じではない

条件 サンプル数 回収率
A 20件 115%
B 2,000件 115%

※上記は考え方を説明するための架空例です。

この2つを同じ115%として扱うのは危険です。

20件なら、1頭の高配当馬によって数字が大きく動く可能性があります。

一方で、2,000件あれば偶然の影響は相対的に小さくなります。

もちろん、2,000件あれば必ず本物という意味でもありません。

しかし、少なくとも「何件で作られた回収率なのか」は必ず確認したいところです。

この問題は、 回収率120%でも信用できない?競馬データでサンプル数・収束・再現性を見る方法 でも詳しく解説しています。

年度別回収率を見る理由

サンプル数と同時に見たいのが、年度別の成績です。

たとえば5年間の合計回収率が115%だったとしても、その中身によって評価は変わります。

1年だけの大勝ちで115%になっていないか

2021年 83%
2022年 91%
2023年 76%
2024年 88%
2025年 220%

※説明用の架空データです。函館ダ1000mの実成績ではありません。

このような結果なら、5年間を合計するとプラスでも、実際には2025年の好成績に強く依存しています。

毎年100%前後を維持しているなら意味が変わる

一方で、

2021年 108%
2022年 113%
2023年 104%
2024年 121%
2025年 116%

※こちらも説明用の架空データです。

なら、見え方はまったく違います。

もちろん、この数字だけで未来の優位性を証明できるわけではありません。

しかし、少なくとも一つの年度だけに依存した結果よりは興味深い検証対象になります。

平均より「どう作られた平均か」を見る

そのため、私は5年間合計の回収率だけでは判断しません。

見るべきなのは、

  • 年度別で安定しているか
  • 特定年度だけ突出していないか
  • 一頭の大穴に依存していないか
  • 市場環境が変わっても残っているか

です。

つまり、平均値そのものより「その平均値がどう作られたか」が重要になります。

そこでOOS検証を使う

では、過去に見つけた好条件をどう評価するのか。

そこで使いたいのがOOS検証です。

OOSは「Out of Sample」の略で、条件作成に使っていないデータで検証する方法です。

ステップ1:2021〜2023年で条件を探す

たとえば2021〜2023年を探索期間にします。

この期間だけを使って、競馬場・距離・人気・オッズ・枠順などを調べます。

そして、仮に「条件A」が好成績だったとします。

ステップ2:見つけた条件を完全に凍結する

ここが重要です。

条件Aを発見したら、それ以上変更しません。

2024年で成績が悪かったから条件を追加する。

2025年で負けたからオッズ範囲を変える。

これをやると、後半期間まで最適化に使ったことになります。

そのため、一度条件を決めたら凍結します。

ステップ3:2024〜2025年へそのまま投入する

最後に、2024〜2025年へ条件Aをそのまま適用します。

2021〜2023
条件発見

↓

ルール凍結

↓

2024〜2025
未知データで検証

ここでもプラスが残るのか。

これを見ることで、全期間を使ったバックテストより一歩踏み込んだ検証ができます。

OOSでも勝てば「本物」なのか?

ここでも注意が必要です。

OOSがプラスだったからといって、未来永劫勝てることが証明されたわけではありません。

OOS期間にも偶然は存在する

当然ながら、OOS期間にも偶然はあります。

さらに、騎手、馬、調教、馬場、番組編成、競馬参加者の行動なども変化します。

したがって、

OOS合格

=

未来の利益保証ではない

という点は忘れてはいけません。

それでも、探索期間と検証期間を分けない方法よりは、条件の再現性を厳しく評価できます。

さらに厳しくするなら条件を少しズラす

私なら、OOSだけで終わらせません。

条件の周辺も確認します。

隣の条件でも傾向が残るか

たとえば、

函館ダ1000mだけ好成績

↓

函館ダ1700mでは大きく悪化

↓

札幌ダ1000mでも大きく悪化

なら、「なぜ函館ダ1000mだけなのか」を考える必要があります。

一方で、似た条件でも緩やかに優位性が残るなら、単なる一点の偶然ではない可能性が高まります。

少し条件を変えただけで崩れないか

これはパラメータの頑健性を見る考え方です。

たとえばFXなら、移動平均線49本では大勝ちするのに、48本と50本では負ける。

こういうロジックは少し怖い。

競馬でも同じです。

条件を少し変えただけで回収率が急落するなら、偶然の一点を拾っている可能性を疑います。

私が「儲かる条件」を見つけたら確認する7項目

ここまでを実戦用にまとめます。

今後、競馬データを見て回収率100%超の条件を見つけたら、私は次の順番で確認します。

① サンプル数は十分あるか

② 一頭の高配当に依存していないか

③ 年度別でも傾向が残っているか

④ 条件を後付けしていないか

⑤ 周辺条件でも極端に崩れないか

⑥ OOSでも成績が残るか

⑦ なぜその優位性が存在するのか説明できるか

最終的には「なぜ勝てるのか」を考える

特に最後は重要です。

数字だけではなく、

「なぜ市場がその条件を過小評価するのか?」

という仮説まで考えたいところです。

理由を説明できれば必ず勝てるわけではありません。

しかし、理由の分からない一点だけの高回収率より、検証する価値は高くなります。

競馬で探したいのは「市場のクセ」

競馬で長期的な優位性が存在するとすれば、市場参加者が繰り返し同じような評価ミスをする場所に現れる可能性があります。

人間が繰り返す評価ミスはあるのか

たとえば、

  • 前走着順を過大評価する
  • 大敗馬を必要以上に嫌う
  • 有名騎手を買いすぎる
  • 人気馬を安心感だけで買う
  • 馬場適性を十分に織り込まない

といった行動がもし存在するなら、そこに価格の歪みが生まれる可能性があります。

ただし、これも現時点では仮説です。

だからこそ、実データで検証する必要があります。

結論:良いバックテストほど疑う

回収率80%の条件を見ても、あまり興奮しません。

しかし、回収率115%や130%を見ると、人は急に信じたくなります。

私はそこが一番危ないと思っています。

高回収率を見つけたら「壊しにいく」

そのため、

回収率が高いほど、

壊しにいく。

サンプル数を見る。

年度別に分ける。

外れ値への依存を見る。

条件を少しズラす。

そして、最後に未知データへ投入する。

それでも残った条件なら、初めて次の検証へ進めます。

探したいのは

「過去に儲かった条件」ではない。

「未来でも残る可能性のある条件」です。

前回の記事で紹介した1番人気の検証については、 1番人気を買い続けたら勝てる?JRA過去5年の勝率・回収率を検証 もあわせて読んでみてください。

また、期待値そのものについては、 的中率80%でも負ける?競馬で勝率より期待値が重要な理由 で詳しく解説しています。

次は実データで「儲かる条件」を探す

ここまでは、データをどう評価するかという話でした。

次はさらに踏み込みます。

探索と検証を完全に分離する

実際の競馬データを使って複数の条件を探索し、その中から回収率100%を超える候補を探します。

ただし、見つけて終わりにはしません。

探索期間でルールを固定し、未知期間へ投入します。

そして、

OOSでも100%を超える条件は存在するのか?

ここまで検証していきます。

馬ではなく、数字を見る。

そして数字すら、一度疑う。

注意事項

本記事は競馬データの分析方法・バックテストの考え方を研究することを目的としています。記事中の115.7%は前記事で紹介した2021〜2025年の公開集計に基づく過去成績であり、将来の回収率を保証するものではありません。また、記事内で例示した年度別回収率などは、明記しているとおり説明用の架空データです。競馬は元本保証の投資ではありません。特定の馬券購入を推奨するものではなく、馬券は無理のない範囲で楽しみましょう。
投資競馬研究所|ウマデシ

AUTHOR

ウマデシ|投資競馬研究所

30代半ば、3児の父。 高校3年生のときに夢破れ、その後は何をやってもうまくいかず、 「俺はもう働かない」と決意。

それでも生きていくにはお金が必要だったことから、 株やFXをはじめとする投資の世界へ。 さまざまな経験を重ねる中で、 感覚や勢いではなく、 価格・確率・期待値・資金管理といった 数字を基準に判断する考え方に行き着く。

現在は、その視点を競馬にも応用。 人気や印だけに頼らず、 オッズ、回収率、期待値、母数、市場心理などから 競馬を研究している。

「馬ではなく、数字を見る」をテーマに、 投資競馬研究所|ウマデシを運営。

記事になる前の考察や検証データ、 NISA・S&P500・FXと競馬をつないだ発信は、 Xでも更新している。

投資競馬研究所|ウマデシのXを見る →

返信を残す

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