Pred-Data オッズデータを取得

データ分析チュートリアル

価格差(裁定機会)と期待値をデータで分析する

Odds-API.io の /arbitrage-bets と /value-bets のデータを Python で取得し、利益率と期待値を自分で検算して、市場間の価格のずれをデータとして分析する方法。

最終更新: · 執筆・監修: Ken Lin

提携リンク 提携リンク(広告)— 当サイトが報酬を得る場合があります。アフィリエイト表記を参照。

要点まとめ

Odds-API.io は、市場間の価格差(裁定取引)を /arbitrage-bets、シャープなフェアラインを上回る価格と期待値を /value-bets で返します [1] [2]。このチュートリアルでは、市場の効率性を調べるデータとしてそれらを取得し、計算を検算します。日本国内から賭けを行うことを勧めるものではありません。

日本の方へ: 本チュートリアルはデータ取得と分析の解説であり、利用を勧めるものではありません。日本国内から海外のブックメーカーや予測市場で金銭を賭けることは、刑法の賭博罪に当たるおそれがあります(警察庁)。日本語版では賭けや取引ができるサイトへのリンクを掲載していません。

必要なもの

コードの検証状況: このチュートリアルの Python コードは、Odds-API.io のドキュメントに掲載された例のレスポンス(2026年11月3日確認)で実行して検証しました。実際の API キーでは実行していません。実際のレスポンスには項目が追加されている場合がありますが、コードはドキュメントに記載された項目だけを読みます。

1. 価格差のデータを取得して検算する

bookmakers は必須、minProfit はパーセント、includeEventDetails=true でチーム名が付きます。取引所や予測市場の手数料がある脚は netOdds で計算されます [1]。コードは各脚から利益率を再計算して確認します。

# reuses get() from the Python tutorial
arbs = get("/arbitrage-bets", bookmakers="Bet365,SingBet,Betano",
           minProfit=1, includeEventDetails="true", limit=50)

for a in arbs:
    # re-check the margin ourselves from the legs (netOdds where fees apply)
    s = sum(1 / float(l.get("netOdds") or l["odds"]) for l in a["legs"])
    mine = (1 - s) / s * 100
    ev = a.get("event", {})
    print(f'{ev.get("home")} v {ev.get("away")} | {a["market"]["name"]} {a["market"].get("hdp", "")}'
          f' | API {a["profitMargin"]:.2f}% vs recomputed {mine:.2f}%')

ドキュメントの例(Betfair Exchange のオーバー 2.102(ネット)と Bet365 のアンダー 2.05)では、再計算値は 3.78%、API の値は 3.79% で、差は丸めによるものです。

2. 期待値のデータからフェア確率を逆算する

/value-bets は bookmaker を 1 社指定します。フェアオッズはシャープな会社群から求められ、EV = フェア確率 × オッズ − 1 です [2]。expectedValue は小数なので、フェア確率を逆算できます。期待値(+EV)計算ツールで検算できます。

vbs = get("/value-bets", bookmaker="Bet365", sport="football",
          includeEventDetails="true")

for vb in sorted(vbs, key=lambda v: v["expectedValue"], reverse=True)[:10]:
    side = vb["betSide"]
    odds = float(vb["bookmakerOdds"][side])
    fair_p = (vb["expectedValue"] + 1) / odds      # from EV = p x odds - 1
    ev = vb.get("event", {})
    print(f'{ev.get("home")} v {ev.get("away")} | {vb["market"]["name"]} {side} @ {odds}'
          f' | EV {vb["expectedValue"]:.2%} | implied fair p {fair_p:.1%}')

3. 分析上の注意点

価格差のデータは試合前のみで、価格が動くとすぐに削除されます [1]。期待値はシャープな合意価格に対する推定にすぎません。推定の妥当性はクロージングライン・バリューやキャリブレーションで長期的に評価します [4]。

よくある質問

データはどのくらいの頻度で更新されますか?

期待値は 5 秒ごと、価格差は数秒ごとに再計算されますが、取得はプランの枠に合わせてください。

再計算した利益率がわずかに違うのはなぜ?

丸めのためです。API の netOdds は丸められた文字列なので、0.01% 程度の差は想定内です。

このデータで確実に利益が出ますか?

いいえ。期待値は長期の平均で、フェア確率の推定に依存します。本サイトは日本からの賭けを勧めるものではありません。

このガイドについて

Pred-Data は、予測市場とその周辺で使われる AI ツールについて、出典付きで解説する独立系サイトです。本ページの事実に関する記述は、上記の日付に確認した一次情報または信頼できる二次情報に基づいています。取引所の運営、賭けの受付、個別の助言は一切行っていません。

著者:Ken Lin · 訂正:誤りを見つけた場合は確認のうえ、修正日を明記して訂正します。

アフィリエイト(広告)表記

本サイトの一部のリンク(「提携リンク」と表示)はアフィリエイトリンクです。リンク経由で申し込むと、当サイトが報酬を受け取る場合がありますが、利用者の負担が増えることはありません。提携リンクには rel="sponsored nofollow" を付けており、評価内容には影響しません。提携先はオッズ等のデータ API 事業者のみで、賭博サービスとは提携していません。

出典

  1. Arbitrage Bets guide (formula, response format, limitations) — Odds-API.io docs, 2026年11月2日閲覧
  2. Value Bets guide (EV formula, response format, limitations) — Odds-API.io docs, 2026年11月2日閲覧
  3. Quickstart (get a key, first calls, example responses) — Odds-API.io docs, 2026年11月2日閲覧
  4. Value Bets API: Track Closing Line Value in Python — Odds-API.io blog, 2026年11月2日閲覧