期待値投票とは? — 回収率100%超えを目指す馬券戦略
期待値投票とは? — 回収率100%超えを目指す馬券戦略
競馬で長期的にプラス収支を実現するには、「どの馬が勝つか」ではなく「どの馬券に期待値があるか」で判断する必要があります。この記事では、期待値投票の考え方と、データベースを使った実践方法を解説します。
回収率75%の壁
JRAの控除率は馬券種によって異なりますが、単勝で約20%、三連単で約27.5%です。つまり何も考えずにランダムに買い続けると、単勝の回収率は約80%、三連単は約72.5%に収束します。
この「何もしなければ負ける」仕組みの中でプラス収支を実現するのが期待値投票です。
期待値の計算
期待値の計算はシンプルです。
期待値 = 自分が推定した勝率 × オッズ
- 期待値 > 1.0 → 買うべき(長期的にプラス)
- 期待値 < 1.0 → 買わない(長期的にマイナス)
具体例
| 馬 | 推定勝率 | 単勝オッズ | 期待値 | 判断 |
|---|---|---|---|---|
| A | 30% | 2.5倍 | 0.75 | 見送り |
| B | 15% | 12.0倍 | 1.80 | 買い |
| C | 8% | 8.0倍 | 0.64 | 見送り |
馬Aは1番人気で勝ちそうに見えますが、オッズに対して期待値はマイナスです。一方、馬Bは人気薄ですが、自分の予測では過小評価されており、期待値が大きくプラスです。
なぜ「オッズだけ」ではダメなのか
オッズは市場参加者全体の評価を反映しています。つまりオッズ自体がそこそこ正確な勝率の推定値です。
しかし、市場には非合理な投票が含まれます:
- 人気馬の過大評価: 有名騎手・有名馬に票が集中しやすい
- 穴馬の過小評価: データ分析をしない人は人気薄を買わない
- バイアス: 逃げ馬が不当に嫌われる、前走大敗馬が過度に売られるなど
これらの歪みを見つけて突くのが期待値投票の本質です。
予測モデルで勝率を推定する
期待値投票には「自分なりの勝率推定」が必要です。最も客観的な方法は、機械学習で予測モデルを作ることです。
過去のレースデータを学習して、各馬の複勝率(3着以内に入る確率)を出力するモデルを構築します。モデルの出力値がそのまま推定確率として使えます。
# モデルの出力を確率として使う
df['pred_prob'] = model.predict(X)
# オッズと掛け合わせて期待値を計算
df['expected_value'] = df['pred_prob'] * df['tansho_odds'] / 10
# 期待値1.2以上の馬だけ抽出
bets = df[df['expected_value'] >= 1.2]
閾値を1.0ではなく1.2程度に設定するのは、モデルの誤差を考慮したマージンです。
馬券種の選び方
期待値投票は単勝だけでなく、他の馬券種にも適用できます。
| 馬券種 | 控除率 | 特徴 |
|---|---|---|
| 単勝 | 約20% | 最もシンプル、期待値計算が容易 |
| 複勝 | 約20% | 的中率が高く回収が安定 |
| ワイド | 約22.5% | 2頭選ぶだけで的中、妙味のある組み合わせを狙える |
| 馬連 | 約22.5% | 中配当帯で期待値を取りやすい |
| 三連複 | 約25% | 高配当が狙えるが、控除率も高い |
| 三連単 | 約27.5% | 最も控除率が高く、ハイリスク |
控除率が低い馬券種ほど期待値が取りやすくなります。初めは単勝・複勝から始めるのがおすすめです。
ケリー基準で賭け金を最適化する
期待値がプラスの馬券が見つかったら、次は「いくら賭けるか」です。ケリー基準は、資金を最大化するための最適な賭け金比率を計算する理論です。
ケリー比率 = (期待値 - 1) / (オッズ - 1)
例: 推定勝率20%、オッズ8.0倍の場合
期待値 = 0.20 × 8.0 = 1.6
ケリー比率 = (1.6 - 1) / (8.0 - 1) = 0.086 → 資金の8.6%
実際にはケリー基準のフル適用はリスクが高いため、半分(ハーフケリー)程度にするのが一般的です。
バックテストで検証する
「この戦略で本当に儲かるのか?」はバックテストで検証します。過去のレースに対して投票シミュレーションを行い、回収率を計算します。
# 2025年の全レースでバックテスト
test_bets = test[test['expected_value'] >= 1.2]
total_bet = len(test_bets) * 100 # 1レース100円
# 的中した馬券の払戻
hits = test_bets[test_bets['finishing_pos'] == 1]
total_return = (hits['tansho_odds'] / 10 * 100).sum()
roi = total_return / total_bet * 100
print(f'投票数: {len(test_bets)}')
print(f'的中数: {len(hits)}')
print(f'回収率: {roi:.1f}%')
回収率が100%を安定して超えるなら、その戦略は有効です。
注意点
- モデルの精度が前提: 勝率推定が不正確なら、期待値計算も間違う
- オッズは変動する: 締切直前にオッズが変わるので、最終オッズで再計算が必要
- サンプル数が重要: 少ないレース数では運の要素が大きい。数百レース以上で評価する
- 分散が大きい: 短期的にはマイナスが続くこともある。資金管理が重要
まとめ
期待値投票は「感覚」ではなく「計算」で馬券を買う方法です。
- 予測モデルで各馬の勝率を推定する
- オッズと掛け合わせて期待値を計算する
- 期待値がプラスの馬券だけを買う
- ケリー基準で賭け金を決める
- バックテストで戦略を検証する
すべてのステップに競馬データベースが必要です。JvLink To Importer でデータベースを構築して、期待値投票に挑戦してみてください。
この記事をシェア