ピナクルのフェアオッズで、ソフトなブックメーカーに対してバリューベットを探す
ピナクルの価格は、ベッティング市場の中で実際の確率に最も近いものです。そこからマージンを取り除くとフェアオッズが得られます。このオッズより高い配当を出しているソフトなブックメーカーがあれば、それは期待値がプラス(+EV)のベットです。PinnFeedはすべてのマーケットでフェアオッズを計算しているため、必要な計算は掛け算だけです。+EVは長期的な統計上の概念であり、勝利を保証するものではありません。
ステップ 1 — フェアオッズを理解する#
小数オッズ d_i のマーケットでは、次のようになります。
implied_i = 1 / d_i
margin = Σ implied_i − 1
fairProb_i = implied_i / Σ implied_j (乗法的な方法)
fair_i = 1 / fairProb_i
APIの各結果には fair と fairProb が、各マーケットには margin がすでに含まれています。生の価格も含まれているので、べき乗法やShin法をご自身で適用することもできます。
ステップ 2 — 期待値を計算する#
公正な確率が p の結果に対して、ソフトなブックメーカーが小数オッズ S を提示している場合:
EV = S × p − 1
S = 2.30、p = 0.488(フェアオッズ2.049)なら、EVは+12.3%です。長期的には、賭け金1ユーロあたり0.123ユーロが期待値となります。多くの人は、ノイズやベットを置くまでの時間を吸収するために1〜3%のしきい値を設定します。
ステップ 3 — 賭け金を計算する#
フル・ケリー((S·p − 1) / (S − 1))は、推定された確率に対しては攻撃的すぎます。4分の1ケリーが一般的な妥協点で、スクリプトもこの値を出力します。
ステップ 4 — スクリプトを実行する#
SOFT に、ソフトなブックメーカーから集めたオッズ(手作業、オッズ比較サイト、別のAPIなど)を、PinnFeedと同じチーム名の表記で入力します。requests をインストールし、python value.py を実行します。
# value.py: ピナクルのマージンなしフェアオッズを使って、ソフトなブックメーカーの+EVな価格を探します。
# pip install requests
import os, requests
BASE = os.environ.get("PINNFEED_BASE", "https://pinnfeed.io")
KEY = os.environ["PINNFEED_KEY"]
# ソフトなブックメーカーで集めた価格: (ホームチーム, アウェイチーム, 結果) -> 小数オッズ
SOFT = {
("Osasuna", "Malaga", "home"): 1.95,
("Colon", "Defensor Sporting", "away"): 2.30,
}
MIN_EV = 0.02 # 2%の優位性
def kelly(price, p, fraction=0.25):
"""資金に対する割合で表したフラクショナル・ケリーの賭け金。"""
return max(0.0, fraction * (price * p - 1) / (price - 1))
r = requests.get(f"{BASE}/v1/odds", headers={"x-api-key": KEY},
params={"sport": "soccer", "market": "moneyline", "main": "true", "limit": 1000}, timeout=20)
r.raise_for_status()
for ev in r.json()["events"]:
for m in ev["markets"]:
for o in m["outcomes"]:
soft = SOFT.get((ev["home"], ev["away"], o["name"]))
if not soft:
continue
ev_pct = soft * o["fairProb"] - 1 # 賭け金1単位あたりの期待値
flag = "VALUE" if ev_pct >= MIN_EV else "no edge"
print(f'{flag:8} {ev["home"]} v {ev["away"]} {o["name"]}: soft {soft} vs Pinnacle {o["decimal"]} '
f'(fair {o["fair"]:.3f}, margin {m["margin"]:.1%}) EV {ev_pct:+.1%} '
f'kelly/4 {kelly(soft, o["fairProb"]):.2%}')
出力は次のようになります。
VALUE Colon v Defensor Sporting away: soft 2.3 vs Pinnacle 1.8065 (fair 2.049, margin 13.4%) EV +12.3% kelly/4 2.36%
RESTの呼び出しはすべてのプランで利用できますが、Freeでは価格が30秒遅れます。ライブでバリューを探すにはライブの価格が必要です。Builderで、PythonとNodeのガイドのWebSocketクライアント内で同じ比較を行ってください。
ステップ 5 — CLVで検証する#
短期的な結果は、ほとんどが分散(運)によるものです。最も早く正直な答えを得る方法は、クロージングラインバリューです。取った価格がピナクルのクロージング時のフェアオッズを上回っていたかどうかを確認します。CLVのガイドで、各ベットを記録して測定します。
よくある質問#
なぜピナクルを基準にするのですか?#
ピナクルは低いマージンと高い上限で運営され、シャープな資金に合わせて価格を動かします。そのため、マージンを除いたピナクルの価格は、実際の確率を最もよく表す公開の推定値として広く使われています。
PinnFeedはどの方法でマージンを除去していますか?#
乗法的(比例)な方法です。各結果には生の小数オッズとアメリカンオッズも含まれているため、別の方法を使うこともできます。
PinnFeedはソフトなブックメーカーのオッズも提供していますか?#
いいえ。PinnFeedが扱うのはピナクルのみです。ご自身で集めたソフトなブックメーカーのオッズや、The Odds APIのような複数ブックメーカー対応のAPIと組み合わせてご利用ください。