Pred-Data 取得賠率數據

實作教學

用 Odds-API.io 找套利與 +EV 價格

在 Python 使用 Odds-API.io 的 /arbitrage-bets 與 /value-bets 端點,自行驗算利潤率、在博彩公司上限內縮放金額,並了解限制。

最後更新: · 撰寫與審閱: Ken Lin

合作連結 合作連結 — 我們可能因此獲得佣金,詳見聯盟行銷揭露。

快速解答

Odds-API.io 兩者都幫你算好:/arbitrage-bets 回傳跨博彩公司的套利、利潤率與金額分配,/value-bets 回傳高於精明盤公平線的價格與其期望值 [1] [2]。本教學取得兩者、驗算數學並列出限制。

你需要準備

你需要準備: 用 Python 取得即時賠率中的 get() 函式,以及至少選定兩家博彩公司的金鑰 [3]。

取得金鑰: Odds-API.io 合作連結

合作連結 — 我們可能因此獲得佣金,詳見聯盟行銷揭露。

程式碼測試狀態: 本教學的 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. 縮放金額分配

optimalStakes 以 totalStake(預設 1,000)計算;每一注乘上相同倍數,並維持在各注的 maxStake 以下 [1]。可用套利計算機交叉驗證。

def scale_stakes(arb, bankroll):
    """Scale optimalStakes to a bankroll, keeping every leg under its maxStake."""
    factor = bankroll / arb["totalStake"]
    for st in arb["optimalStakes"]:
        leg = next(l for l in arb["legs"]
                   if l["bookmaker"] == st["bookmaker"] and l["side"] == st["side"])
        if leg.get("maxStake"):
            factor = min(factor, leg["maxStake"] / st["stake"])
    return [{**st, "stake": round(st["stake"] * factor, 2),
             "potentialReturn": round(st["potentialReturn"] * factor, 2)}
            for st in arb["optimalStakes"]]

3. 取得價值投注(+EV)

/value-bets 需要一個 bookmaker;公平賠率來自精明盤組合,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%}')

4. 了解限制

套利結果只限賽前,價格一變就會移除 [1];博彩公司可能限制做套利的帳戶 [4]。價值是相對於精明盤共識的估計;請追蹤收盤線價值看它是否站得住 [5]。

常見問題

機會多久更新一次?

價值投注每 5 秒、套利每幾秒重新計算一次,但請依方案允許的頻率輪詢。

為什麼我驗算的利潤率略有不同?

四捨五入:API 的 netOdds 是四捨五入後的字串,差個百分之零點零幾是正常的。

+EV 價格一定賺錢嗎?

不一定。EV 是長期平均,取決於公平機率的估計,個別結果會有起伏。

關於本指南

Pred-Data 發布關於預測市場及相關 AI 工具的獨立解說,所有事實陳述都附上一手或可信的二手來源連結,並於上方日期查核。我們不經營交易平台、不接受投注,也不提供個人化建議。

作者:Ken Lin · 更正:如發現錯誤,我們會審核並標註修正日期。

聯盟行銷揭露

本站部分連結(標示「合作連結」)可能是聯盟行銷連結:若你透過這些連結註冊,我們可能獲得佣金,你無須支付額外費用。合作連結使用 rel="sponsored nofollow",且不會影響我們的評估。比較表中的平台連結均為官方網站的一般連結,並非聯盟連結。

資料來源

  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. What Is Arbitrage Betting? Definition & Example — Odds-API.io glossary, 2026 年 11 月 2 日查閱
  5. Value Bets API: Track Closing Line Value in Python — Odds-API.io blog, 2026 年 11 月 2 日查閱