betting

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Betting Analysis

博彩分析

Quick Start

快速开始

bash
sports-skills betting convert_odds --odds=-150 --from_format=american
sports-skills betting devig --odds=-150,+130 --format=american
sports-skills betting find_edge --fair_prob=0.58 --market_prob=0.52
sports-skills betting evaluate_bet --book_odds=-150,+130 --market_prob=0.52
sports-skills betting find_arbitrage --market_probs=0.48,0.49
sports-skills betting parlay_analysis --legs=0.58,0.62,0.55 --parlay_odds=600
sports-skills betting line_movement --open_odds=-140 --close_odds=-160
Python SDK:
python
from sports_skills import betting

betting.convert_odds(odds=-150, from_format="american")
betting.devig(odds="-150,+130", format="american")
betting.find_edge(fair_prob=0.58, market_prob=0.52)
betting.find_arbitrage(market_probs="0.48,0.49")
betting.parlay_analysis(legs="0.58,0.62,0.55", parlay_odds=600)
betting.line_movement(open_odds=-140, close_odds=-160)
bash
sports-skills betting convert_odds --odds=-150 --from_format=american
sports-skills betting devig --odds=-150,+130 --format=american
sports-skills betting find_edge --fair_prob=0.58 --market_prob=0.52
sports-skills betting evaluate_bet --book_odds=-150,+130 --market_prob=0.52
sports-skills betting find_arbitrage --market_probs=0.48,0.49
sports-skills betting parlay_analysis --legs=0.58,0.62,0.55 --parlay_odds=600
sports-skills betting line_movement --open_odds=-140 --close_odds=-160
Python SDK:
python
from sports_skills import betting

betting.convert_odds(odds=-150, from_format="american")
betting.devig(odds="-150,+130", format="american")
betting.find_edge(fair_prob=0.58, market_prob=0.52)
betting.find_arbitrage(market_probs="0.48,0.49")
betting.parlay_analysis(legs="0.58,0.62,0.55", parlay_odds=600)
betting.line_movement(open_odds=-140, close_odds=-160)

Odds Formats

赔率格式

FormatExampleDescription
American
-150
,
+130
US sportsbook standard. Negative = favorite, positive = underdog
Decimal
1.67
,
2.30
European standard. Payout per $1 (includes stake)
Probability
0.60
,
0.43
Direct implied probability (0-1). Polymarket uses this format
Conversion rules:
  • American negative: prob = -odds / (-odds + 100). Example: -150 → 150/250 = 0.600
  • American positive: prob = 100 / (odds + 100). Example: +130 → 100/230 = 0.435
  • Decimal: prob = 1 / odds. Example: 1.67 → 0.599
  • Kalshi prices (0-100 integer): divide by 100 to get probability format
格式示例说明
美式
-150
,
+130
美国博彩公司标准格式。负数代表热门方,正数代表冷门方
欧式
1.67
,
2.30
欧洲标准格式。每1美元的 payout(包含本金)
概率
0.60
,
0.43
直接隐含概率(0-1)。Polymarket 使用此格式
转换规则:
  • 美式负数:概率 = -赔率 / (-赔率 + 100)。示例:-150 → 150/250 = 0.600
  • 美式正数:概率 = 100 / (赔率 + 100)。示例:+130 → 100/230 = 0.435
  • 欧式:概率 = 1 / 赔率。示例:1.67 → 0.599
  • Kalshi 价格(0-100整数):除以100转换为概率格式

Commands

命令列表

CommandRequiredOptionalDescription
convert_odds
odds, from_formatConvert between American, decimal, probability
devig
oddsformatRemove vig from sportsbook odds → fair probabilities
find_edge
fair_prob, market_probCompute edge, EV, and Kelly from two probabilities
kelly_criterion
fair_prob, market_probKelly fraction for optimal bet sizing
evaluate_bet
book_odds, market_probbook_format, outcomeFull pipeline: devig → edge → Kelly
find_arbitrage
market_probslabelsDetect arbitrage across outcomes from multiple sources
parlay_analysis
legs, parlay_oddsodds_format, correlationMulti-leg parlay EV and Kelly analysis
line_movement
open_odds, close_odds, open_line, close_line, market_typeAnalyze open-to-close line movement
命令必填参数可选参数说明
convert_odds
odds, from_format在美式、欧式、概率格式之间转换
devig
oddsformat去除博彩公司赔率中的抽水,得到公平概率
find_edge
fair_prob, market_prob根据两个概率计算优势、期望值(EV)和凯利比例
kelly_criterion
fair_prob, market_prob计算最优投注规模的凯利比例
evaluate_bet
book_odds, market_probbook_format, outcome完整流程:去抽水 → 计算优势 → 凯利比例
find_arbitrage
market_probslabels检测多来源不同结果之间的套利机会
parlay_analysis
legs, parlay_oddsodds_format, correlation多场次串关的期望值和凯利分析
line_movement
open_odds, close_odds, open_line, close_line, market_type分析开盘到收盘的盘口变动

Workflows

工作流

Workflow: Compare ESPN vs Polymarket/Kalshi

工作流:对比ESPN与Polymarket/Kalshi

This is the primary workflow. The agent already has odds from ESPN and a prediction market — no user estimation needed.
  1. Get ESPN moneyline odds for a game (e.g., from
    nba get_scoreboard
    ):
    • Home:
      -150
      , Away:
      +130
  2. Get Polymarket/Kalshi price for the same outcome (e.g., home team at
    0.52
    ).
  3. De-vig the ESPN odds to get fair probabilities:
    devig --odds=-150,+130 --format=american
    → Fair: Home 57.9%, Away 42.1% (removed ~3.5% vig)
  4. Compare fair prob to market price:
    find_edge --fair_prob=0.579 --market_prob=0.52
    → Edge: 5.9%, EV: 11.3%, Kelly: 0.123
  5. Or do it all in one step:
    evaluate_bet --book_odds=-150,+130 --market_prob=0.52
这是核心工作流。工具可对接ESPN赔率和预测市场数据——无需用户自行估算。
  1. 获取某场比赛的ESPN金钱线赔率(例如通过
    nba get_scoreboard
    ):
    • 主队:
      -150
      ,客队:
      +130
  2. 获取同一结果的Polymarket/Kalshi价格(例如主队为
    0.52
    )。
  3. 对ESPN赔率去抽水,得到公平概率:
    devig --odds=-150,+130 --format=american
    → 公平概率:主队57.9%,客队42.1%(去除了约3.5%的抽水)
  4. 对比公平概率与市场价格:
    find_edge --fair_prob=0.579 --market_prob=0.52
    → 优势:5.9%,期望值:11.3%,凯利比例:0.123
  5. 或一步完成全部流程:
    evaluate_bet --book_odds=-150,+130 --market_prob=0.52

Workflow: Arbitrage Detection

工作流:套利检测

Spot guaranteed-profit opportunities when prices across sources don't sum to 100%.
  1. Get the best available price per outcome from different sources:
    • Source A (Polymarket): Home team at 0.48
    • Source B (Kalshi): Away team at 0.49
  2. find_arbitrage --market_probs=0.48,0.49 --labels=home,away
    → Total implied: 0.97 (< 1.0 = arbitrage!) → Guaranteed ROI: 3.09% → Allocation: 49.5% on home, 50.5% on away
  3. For 3-way football markets:
    find_arbitrage --market_probs=0.40,0.25,0.30 --labels=home,draw,away
当不同来源的价格总和不等于100%时,发现保本获利的机会。
  1. 从不同来源获取每个结果的最优价格:
    • 来源A(Polymarket):主队0.48
    • 来源B(Kalshi):客队0.49
  2. find_arbitrage --market_probs=0.48,0.49 --labels=home,away
    → 总隐含概率:0.97(<1.0 = 存在套利机会!) → 保本投资回报率:3.09% → 资金分配:主队49.5%,客队50.5%
  3. 对于足球三结果市场:
    find_arbitrage --market_probs=0.40,0.25,0.30 --labels=home,draw,away

Workflow: Parlay Evaluation

工作流:串关评估

Evaluate multi-leg parlays to see if the offered odds are +EV.
  1. De-vig each leg to get fair probabilities:
    • Leg 1:
      devig --odds=-150,+130
      → fair prob 0.58
    • Leg 2:
      devig --odds=-130,+110
      → fair prob 0.55
    • Leg 3:
      devig --odds=-110,-110
      → fair prob 0.50
  2. parlay_analysis --legs=0.58,0.55,0.50 --parlay_odds=600
    → Combined fair: 15.95%, offered +600 implies 14.29% → Edge: 1.66%, +EV
  3. If legs are correlated (e.g. same-game parlay): add
    --correlation=0.1
    — this increases combined probability since correlated events are more likely to co-occur
评估多场次串关是否具有正期望值。
  1. 对每个场次去抽水,得到公平概率:
    • 场次1:
      devig --odds=-150,+130
      → 公平概率0.58
    • 场次2:
      devig --odds=-130,+110
      → 公平概率0.55
    • 场次3:
      devig --odds=-110,-110
      → 公平概率0.50
  2. parlay_analysis --legs=0.58,0.55,0.50 --parlay_odds=600
    → 联合公平概率:15.95%,提供的+600赔率隐含14.29%的概率 → 优势:1.66%,正期望值
  3. 如果场次之间存在相关性(例如同场串关):添加
    --correlation=0.1
    ——由于相关事件同时发生的概率更高,这会提高联合概率

Workflow: Line Movement from ESPN

工作流:ESPN盘口变动分析

Quantify how a line has moved and what it implies about sharp money.
  1. Get ESPN odds for a game — both open and close lines are available:
    • Open moneyline: -140, Close moneyline: -160
    • Open spread: -6.5, Close spread: -7.5
  2. line_movement --open_odds=-140 --close_odds=-160
    → Probability shift: +3.21% toward favorite → Classification: sharp_action
  3. With spread too:
    line_movement --open_odds=-140 --close_odds=-160 --open_line=-6.5 --close_line=-7.5
    → If ML and spread move same direction: sharp action confirmed → If they move opposite: reverse line movement (public vs sharp split)
量化盘口变动情况及其背后的专业投注者资金流向含义。
  1. 获取某场比赛的ESPN赔率——开盘和收盘盘口均可用:
    • 开盘金钱线:-140,收盘金钱线:-160
    • 开盘让分:-6.5,收盘让分:-7.5
  2. line_movement --open_odds=-140 --close_odds=-160
    → 概率变动:热门方概率增加3.21% → 分类:sharp_action(专业投注动作)
  3. 结合让分盘分析:
    line_movement --open_odds=-140 --close_odds=-160 --open_line=-6.5 --close_line=-7.5
    → 如果金钱线和让分盘变动方向一致:确认专业投注动作 → 如果变动方向相反:反向盘口变动(大众投注与专业投注者意见分歧)

Workflow: De-Vig Sportsbook Odds

工作流:博彩公司赔率去抽水

Strip the vig/juice from DraftKings odds to see the "true" implied probabilities.
  1. devig --odds=-110,-110 --format=american
    → Each side is 50.0% fair (standard -110/-110 spread/total)
  2. devig --odds=-200,+170 --format=american
    → Favorite: 65.2%, Underdog: 34.8%
  3. devig --odds=-150,+300,+400 --format=american
    (3-way football) → Home: 47.3%, Draw: 19.8%, Away: 15.7%
去除DraftKings赔率中的抽水(vig/juice),查看“真实”的隐含概率。
  1. devig --odds=-110,-110 --format=american
    → 双方公平概率均为50.0%(标准-110/-110让分盘/总分盘)
  2. devig --odds=-200,+170 --format=american
    → 热门方:65.2%,冷门方:34.8%
  3. devig --odds=-150,+300,+400 --format=american
    (足球三结果) → 主队:47.3%,平局:19.8%,客队:15.7%

Workflow: Odds Conversion

工作流:赔率转换

Convert odds from one format to another.
  1. convert_odds --odds=-150 --from_format=american
    → Probability: 60.0%, Decimal: 1.6667
  2. convert_odds --odds=2.50 --from_format=decimal
    → Probability: 40.0%, American: +150
在不同格式之间转换赔率。
  1. convert_odds --odds=-150 --from_format=american
    → 概率:60.0%,欧式赔率:1.6667
  2. convert_odds --odds=2.50 --from_format=decimal
    → 概率:40.0%,美式赔率:+150

Examples

示例

User: "Is there edge on the Lakers game? ESPN has them at -150 and Polymarket has them at 52 cents"
  1. devig --odds=-150,+130 --format=american
    → Fair home prob ~58%
  2. find_edge --fair_prob=0.58 --market_prob=0.52
    → Edge ~6%, positive EV
  3. kelly_criterion --fair_prob=0.58 --market_prob=0.52
    → Kelly fraction
  4. Present: edge, EV per dollar, recommended bet size as % of bankroll
User: "Can I arb this? Polymarket has home at 48 cents and Kalshi has away at 49 cents"
  1. find_arbitrage --market_probs=0.48,0.49 --labels=home,away
  2. If arbitrage_found: present allocation percentages and guaranteed ROI
  3. If not: present the overround and explain there's no guaranteed profit
User: "Is this 3-leg parlay at +600 worth it?"
  1. De-vig each leg to get fair probs (e.g. 0.58, 0.62, 0.55)
  2. parlay_analysis --legs=0.58,0.62,0.55 --parlay_odds=600
  3. Present: combined fair prob, edge, EV, +EV or -EV, Kelly fraction
User: "The line moved from -140 to -160, what does that mean?"
  1. line_movement --open_odds=-140 --close_odds=-160
  2. Present: probability shift, direction, magnitude, classification (sharp action, steam move, etc.)
User: "What are the true odds for this spread? Both sides are -110"
  1. devig --odds=-110,-110 --format=american
  2. Present: each side is 50% fair probability, vig is ~4.5%
User: "Convert -200 to implied probability"
  1. convert_odds --odds=-200 --from_format=american
  2. Present: 66.7% implied probability, 1.50 decimal odds
用户:“湖人这场比赛有投注优势吗?ESPN给出的赔率是-150,Polymarket的价格是52分”
  1. devig --odds=-150,+130 --format=american
    → 主队公平概率约58%
  2. find_edge --fair_prob=0.58 --market_prob=0.52
    → 优势约6%,正期望值
  3. kelly_criterion --fair_prob=0.58 --market_prob=0.52
    → 计算凯利比例
  4. 展示内容:优势、每美元期望值、推荐投注占资金的比例
用户:“这个能套利吗?Polymarket主队是48分,Kalshi客队是49分”
  1. find_arbitrage --market_probs=0.48,0.49 --labels=home,away
  2. 如果发现套利:展示资金分配比例和保本投资回报率
  3. 如果没有套利:展示总隐含概率并说明无保本获利机会
用户:“这个3场串关+600的赔率值得投吗?”
  1. 对每个场次去抽水得到公平概率(例如0.58, 0.62, 0.55)
  2. parlay_analysis --legs=0.58,0.62,0.55 --parlay_odds=600
  3. 展示内容:联合公平概率、优势、期望值、正/负期望值、凯利比例
用户:“盘口从-140变成-160,这意味着什么?”
  1. line_movement --open_odds=-140 --close_odds=-160
  2. 展示内容:概率变动、方向、幅度、分类(专业投注动作、资金涌入等)
用户:“这个让分盘的真实赔率是多少?双方都是-110”
  1. devig --odds=-110,-110 --format=american
  2. 展示内容:双方公平概率均为50%,抽水约4.5%
用户:“把-200转换成隐含概率”
  1. convert_odds --odds=-200 --from_format=american
  2. 展示内容:隐含概率66.7%,欧式赔率1.50

Commands that DO NOT exist — never call these

不存在的命令——请勿调用

  • get_odds
    — does not exist. This module analyzes odds, it doesn't fetch them. Use nba-data/nfl-data/etc. for ESPN odds, or polymarket/kalshi for prediction market prices.
  • calculate_ev
    — does not exist. Use
    find_edge
    or
    evaluate_bet
    instead.
  • compare_markets
    — does not exist. Use the
    markets
    skill for cross-platform comparison.
If a command is not listed in the Commands section above, it does not exist.
  • get_odds
    —— 不存在。本模块仅分析赔率,不获取赔率。如需ESPN赔率请使用nba-data/nfl-data等工具,如需预测市场价格请使用Polymarket/Kalshi工具。
  • calculate_ev
    —— 不存在。请使用
    find_edge
    evaluate_bet
    替代。
  • compare_markets
    —— 不存在。请使用
    markets
    工具进行跨平台对比。
如果某命令未在上述命令列表中列出,则该命令不存在。

Key Concepts

核心概念

  • Vig/Juice: The sportsbook's margin. A -110/-110 line implies 52.4% + 52.4% = 104.8% total, meaning 4.8% overround. De-vigging removes this to get fair probabilities.
  • Edge: The difference between your estimated true probability and the market price. Positive edge = profitable in expectation.
  • Kelly Criterion: Optimal bet sizing that maximizes long-term growth. f* = (fair_prob - market_prob) / (1 - market_prob). For conservative sizing, multiply the Kelly fraction by 0.5 (half-Kelly) or 0.25 (quarter-Kelly).
  • Expected Value (EV): Average return per dollar bet. EV = fair_prob / market_prob - 1.
  • Arbitrage: When prices across sources don't sum to 100%, you can bet all outcomes and guarantee profit regardless of the result.
  • Parlay: A multi-leg bet where all legs must win. Combined probability = product of individual leg probabilities. Higher risk, higher reward. Check if the offered odds exceed the fair combined odds.
  • Line Movement: How odds change between open and close. Large moves toward one side suggest sharp/professional money. Reverse line movement (moneyline and spread moving opposite directions) suggests a public vs sharp split.
  • Vig/Juice: 博彩公司的利润空间。-110/-110的盘口意味着52.4% + 52.4% = 104.8%的总概率,即4.8%的抽水。去抽水后可得到公平概率。
  • Edge: 你估算的真实概率与市场价格之间的差值。正优势意味着长期来看可获利。
  • Kelly Criterion: 最大化长期资金增长的最优投注比例公式。f* = (fair_prob - market_prob) / (1 - market_prob)。为保守起见,可将凯利比例乘以0.5(半凯利)或0.25(四分之一凯利)。
  • Expected Value (EV): 每投注1美元的平均回报。EV = fair_prob / market_prob - 1。
  • Arbitrage: 当不同来源的价格总和不等于100%时,你可以对所有结果投注,无论最终结果如何都能保证获利。
  • Parlay: 多场次投注,所有场次必须获胜才能盈利。联合概率为各场次概率的乘积。风险更高,回报也更高。需检查提供的赔率是否超过公平联合赔率。
  • Line Movement: 盘口从开盘到收盘的变化情况。大幅偏向某一方的变动意味着专业投注者(sharp)的资金流入。反向盘口变动(金钱线与让分盘变动方向相反)意味着大众投注与专业投注者意见分歧。