pip install oddsapi_ev
pandas numpy requests json datetime dateutil.parser pytz typing
該模組從 The Odds API 獲取即將到來的體育博彩賠率,並根據兩個「真實賠率」標準中的一個或兩個標準計算該投注的預期值 (ev)。有關 ev 投注的更多信息,請參閱這篇內容豐富的文章。
ev.py
這是該包中唯一的模組。它包含函數data()
。
data()
這是模組ev.py
中的唯一函數。
參數:參見data()
參數部分
回傳: pandas 資料幀
data()
參數每個參數都是可選的,並且每個參數都有一個預設值。但是,必須傳遞api_key或檔案名稱。
api_key( str
) :
有效的賠率 API 金鑰
檔名( str
):
包含與 Odds API 格式相同的資料的 JSON 檔案的名稱
必須傳遞api_key或檔案名稱(建議使用api_key ),否則函數將退出!
以下參數將傳遞給 API 調用,以指定提取哪種類型的賠率並影響根據配額收取的請求數量。當上傳檔案而不是呼叫API時,以下除regions
之外的所有內容都將用於過濾檔案資料。如果任何 API 參數的輸入錯誤,則函數將退出。
體育( list[str]
):
由 The Odds API 定義的要包含的體育項目列表
區域( list[str]
):
要包含的體育博彩區域清單。必須是以下子集: ['us', 'eu', 'uk', 'au']
市場( list[str]
):
要包含的投注市場清單。必須是['h2h', 'spreads', 'totals']
的子集。欲了解更多信息,請參閱此處
此參數標識要使用哪種類型的預期值。有 2 種方法可以確定某個位置的公平賠率,因此也有 2 種方法可以確定投注的預期價值。
平均值:將某個位置的公平賠率確定為所有體育博彩中該位置的所有賠率的平均值,並刪除體育博彩的邊緣。
Pinnacle(平博):將某個位置的公平賠率確定為去除體育博彩邊緣後的銳利體育博彩公司 Pinnacle(平博)提供的賠率。
如果給出錯誤的輸入,則函數將退出。
ev_type( str
):
要使用的計算預期值的方法。必須是以下之一: 'avg' 、 'pinnacle'或'both'
這些參數用於過濾賠率。如果給出錯誤的輸入,則函數將繼續,但不會根據該值過濾賠率。
推薦( bool
):
如果建議為 True,則所有過濾器值都將被建議值覆蓋,以找到最有利可圖的投注。
days_from_now ( int
或float
):
未來回歸賠率的最大天數
書籍( list[str]
):
賠率中包含的體育書籍列表。請參閱此處以了解有效的體育書籍密鑰。
min_odds( int
或float
):
返回賠率的最小賠率線(美國格式)。
min_odds( int
或float
):
返回賠率的最大賠率線(美式格式)。
如果min_odds > max_odds ,函數將傳回一個空的 DataFrame
最大寬度( int
或float
):
返回賠率的最大寬度。 (有關寬度的更多信息,請參閱計算資料幀字段)
max_vig_pct( int
或float
):
體育博彩賠率中的最大“vig”或“edge”
min_ev_pct( int
或float
):
賠率的最小期望值百分比
min_num_books( int
或float
):
每行提供的體育書籍的最少數量
pref_ev_filter( str
):
用於過濾值的 ev 計算的首選方法。必須是以下之一: 'avg' 、 'pinnacle'或'both' 。
注意: ev_type和pref_ev_filter不能互相矛盾(例如,如果'avg'是ev_type ,則'pinnacle'不能是pref_ev_filter 。在這種情況下, pref_ev_filter將預設為ev_type )。
這些參數用於對 DataFrame 進行排序
排序( str
):
對 DataFrame 進行排序的值。
必須是下列其中一個值: 'commence_time' 、 'line' 、 'width' 、 'ev_pct' 、 'kelly_pct'或'default' 。
'default'根據預設的欄位組合對 DataFrame 進行排序。
升序( bool
):
True 時會依升序對所選值進行排序,False 時會依降序對所選值進行排序
pref_ev_sort( str
):
用於對值進行排序的 ev 計算的首選方法。必須是'avg'或'pinnacle' (不是'both' )。
注意: ev_type和pref_ev_sort不能互相矛盾(例如,如果'avg'是ev_type ,則'pinnacle'不能是pref_ev_sort 。在這種情況下, pref_ev_sort將預設為ev_type )。
此參數控制傳回的 DataFrame 是包含所有資料欄位還是僅包含基本欄位。預設為 False。
擴展( bool
):
如果 Expanded 為 True,則傳回的 DataFrame 中將包含額外的欄位。其中許多欄位是計算更重要欄位的中間欄位。
如果 Expanded 為 False,則 DataFrame 僅傳回最重要的欄位。
如果未指定,則預設為 False。
from oddsapi_ev import ev # get all of the most profitable bets odds1 = ev.data(api_key=YOURKEY, recommended=True) # get all odds from DraftKings, sorted by ev percentage with respect to the average odds odds2 = ev.data(api_key=YOURKEY, regions=['us'], ev_type='avg', books=['draftkings'], sortby='ev_pct', ascending=False, pref_ev_sort='avg') # get all head to head odds at eu book makers for UEFA champions league games with maximum odds of +110 and the ev calculated with respect to Pinnacle odds odds3 = ev.data(api_key=YOURKEY, sports=['soccer_uefa_champs_league'], regions=['eu'], markets=['h2h'], ev_type='pinnacle', min_odds=110, pref_ev_filter='pinnacle')
以下是透過data()
計算出的 Odds API 資料中不存在的附加欄位(不包括擴充欄位)的說明。
書數:
為給定位置發布賠率的體育書籍數量。這對於使用平均值進行的計算非常重要,因為貢獻平均值的書籍數量越多,它就越可靠
公平線:
這是如果體育博彩公司為保證利潤而在賠率中建立的“維權”或“優勢”被刪除,則給定頭寸的賠率。
它們表明根據體育博彩結果的實際機會是多少
寬度:
市場雙方賠率低於公平賠率的總點數 (+100/-100)
例如,如果市場的兩側分別為 +105 和 -125,則寬度將為 20,因為 -125 為下方 25,+105 為上方 5,因此淨數將為 20。
在這裡閱讀更多內容
維格_pct:
內建「vig」或「edge」的體育博彩公司給定賠率組的隱含勝率與去掉 vig 的同一體育博彩公司相同賠率組的勝率之間的百分比差異公平的勝率。它衡量賠率的不公平程度。
ev_pct:
預期值 (ev) 百分比是刪除 vig 之前某些體育博彩中給定位置的隱含勝率與更準確的體育博彩(如平博)或平均值中相同位置的隱含勝率之間的百分比差異刪除vig後的多個體育書籍。
更簡單地說,它代表您投注的賠率與贏得投注的真實機會之間的差異。
大多數投注的 ev 百分比為負。少數具有正百分比的賭注是有利可圖的。
在這裡閱讀更多內容
凱利_pct:
根據 ev 百分比和整體獲勝機率得出的統計上最佳下注資金百分比。