JvLink To Importer

期待値投票とは? — 回収率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%を安定して超えるなら、その戦略は有効です。


注意点

  • モデルの精度が前提: 勝率推定が不正確なら、期待値計算も間違う
  • オッズは変動する: 締切直前にオッズが変わるので、最終オッズで再計算が必要
  • サンプル数が重要: 少ないレース数では運の要素が大きい。数百レース以上で評価する
  • 分散が大きい: 短期的にはマイナスが続くこともある。資金管理が重要

まとめ

期待値投票は「感覚」ではなく「計算」で馬券を買う方法です。

  1. 予測モデルで各馬の勝率を推定する
  2. オッズと掛け合わせて期待値を計算する
  3. 期待値がプラスの馬券だけを買う
  4. ケリー基準で賭け金を決める
  5. バックテストで戦略を検証する

すべてのステップに競馬データベースが必要です。JvLink To Importer でデータベースを構築して、期待値投票に挑戦してみてください。

この記事をシェア

Post