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

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

予測市場の価格とブックメーカーのオッズを比較する

同じスポーツの試合について Polymarket、Kalshi、ブックメーカーの価格を 1 つの API で取得し、インプライド確率に換算して控除なしのラインと比較し、板の厚みを確認する方法。

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

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

要点まとめ

Odds-API.io は Polymarket と Kalshi のスポーツ市場をブックメーカーと同じ形式に正規化しているため、/odds を 1 回呼ぶだけで 3 つを小数オッズで取得できます。60¢ の契約は 1.67 になります [1]。各価格をインプライド確率に換算し、ブックメーカーのオーバーラウンドを除いてから比較し、差を評価する前に板の厚みを確認します。

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

必要なもの

必要なもの: Python でオッズデータを取得の関数、スポーツの試合 id、プランで Polymarket と Kalshi を選択していること [1]。

API キーの入手: Odds-API.io 提携リンク

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

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

1. 価格の対応関係

予測市場では契約が 0〜100 セントで取引され 1 ドルで決済されるため、価格がそのままインプライド確率です。小数オッズ = 1 / (価格 / 100) [1] [2]。Odds-API.io が返すのは最良気配と米ドル建ての厚みの項目で、板全体ではありません [1]。

2. 3 つを 1 回で取得する

/odds に Polymarket、Kalshi、ブックメーカー 1 社を指定します。コードは各ソースのインプライド確率と合計、最良価格での厚みを表示します。

# reuses get() and ml_prices() from the Python tutorial
ev = get("/odds", eventId=EVENT_ID, bookmakers="Polymarket,Kalshi,Bet365", markets="ML")

prices = ml_prices(ev)            # back prices, decimal
for book, p in prices.items():
    implied = {side: 1 / o for side, o in p.items()}
    total = sum(implied.values())
    print(f"{book:11} sum {total:.1%} ", {s: f"{q:.1%}" for s, q in implied.items()})

for book in ("Polymarket", "Kalshi"):          # depth: USD at the best back price
    for m in ev["bookmakers"].get(book, []):
        if m["name"] == "ML":
            row = m["odds"][0]
            print(book, {k: row[k] for k in row if k.startswith("depth")})

ドキュメントのリーズ対アーセナルの例では、Kalshi の買い価格の合計は 103.1%、Polymarket は 102.1% です。100% を超える部分はスプレッドで、ブックメーカーのマージンではありません。

3. 控除なしのラインと比較する

先にブックメーカーのマージンを除き(インプライド確率・控除除去計算ツールと同じ)、差を求めます。小さな差は普通で、厚みの薄い大きな差は実際には成立しないことが多いです。

def no_vig(p):
    s = sum(1 / o for o in p.values())
    return {side: (1 / o) / s for side, o in p.items()}

book_fair = no_vig(prices["Bet365"])
for pm in ("Polymarket", "Kalshi"):
    if pm in prices:
        gap = {side: (1 / prices[pm][side]) - book_fair[side] for side in book_fair if side in prices[pm]}
        print(pm, "minus Bet365 no-vig (percentage points):",
              {s: f"{g * 100:+.1f}" for s, g in gap.items()})

4. 結果を慎重に読む

予測市場の手数料、スプレッド、決済ルール、判定はブックメーカーと異なります [3]。対象はスポーツの試合のみです [1]。研究としては、ブライアスコアとキャリブレーションで両者の予測精度を長期的に比較できます。

よくある質問

選挙や暗号資産の市場も対象ですか?

いいえ。Odds-API.io が対象とするのは Polymarket と Kalshi のスポーツの試合です。

予測市場の価格の合計が 100% を超えるのはなぜ?

買い価格は最良の売り気配なので、100% との差は売買スプレッドと手数料を反映しています。

板の厚みとは?

最良価格で約定できる米ドル建ての金額です。厚みが小さいと、表示価格で大きな金額は約定できない可能性があります。

このガイドについて

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

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

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

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

出典

  1. Prediction Markets guide (Polymarket, Kalshi: back/lay, depth) — Odds-API.io docs, 2026年11月2日閲覧
  2. Prices & Orderbook — Polymarket Documentation, 2026年11月2日閲覧
  3. Resolution — Polymarket Documentation, 2026年11月2日閲覧