betting
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBetting 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=-160Python 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=-160Python 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
赔率格式
| Format | Example | Description |
|---|---|---|
| American | | US sportsbook standard. Negative = favorite, positive = underdog |
| Decimal | | European standard. Payout per $1 (includes stake) |
| Probability | | 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
| 格式 | 示例 | 说明 |
|---|---|---|
| 美式 | | 美国博彩公司标准格式。负数代表热门方,正数代表冷门方 |
| 欧式 | | 欧洲标准格式。每1美元的 payout(包含本金) |
| 概率 | | 直接隐含概率(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
命令列表
| Command | Required | Optional | Description |
|---|---|---|---|
| odds, from_format | Convert between American, decimal, probability | |
| odds | format | Remove vig from sportsbook odds → fair probabilities |
| fair_prob, market_prob | Compute edge, EV, and Kelly from two probabilities | |
| fair_prob, market_prob | Kelly fraction for optimal bet sizing | |
| book_odds, market_prob | book_format, outcome | Full pipeline: devig → edge → Kelly |
| market_probs | labels | Detect arbitrage across outcomes from multiple sources |
| legs, parlay_odds | odds_format, correlation | Multi-leg parlay EV and Kelly analysis |
| open_odds, close_odds, open_line, close_line, market_type | Analyze open-to-close line movement |
| 命令 | 必填参数 | 可选参数 | 说明 |
|---|---|---|---|
| odds, from_format | 在美式、欧式、概率格式之间转换 | |
| odds | format | 去除博彩公司赔率中的抽水,得到公平概率 |
| fair_prob, market_prob | 根据两个概率计算优势、期望值(EV)和凯利比例 | |
| fair_prob, market_prob | 计算最优投注规模的凯利比例 | |
| book_odds, market_prob | book_format, outcome | 完整流程:去抽水 → 计算优势 → 凯利比例 |
| market_probs | labels | 检测多来源不同结果之间的套利机会 |
| legs, parlay_odds | odds_format, correlation | 多场次串关的期望值和凯利分析 |
| 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.
- Get ESPN moneyline odds for a game (e.g., from ):
nba get_scoreboard- Home: , Away:
-150+130
- Home:
- Get Polymarket/Kalshi price for the same outcome (e.g., home team at ).
0.52 - De-vig the ESPN odds to get fair probabilities:
→ Fair: Home 57.9%, Away 42.1% (removed ~3.5% vig)
devig --odds=-150,+130 --format=american - Compare fair prob to market price:
→ Edge: 5.9%, EV: 11.3%, Kelly: 0.123
find_edge --fair_prob=0.579 --market_prob=0.52 - Or do it all in one step:
evaluate_bet --book_odds=-150,+130 --market_prob=0.52
这是核心工作流。工具可对接ESPN赔率和预测市场数据——无需用户自行估算。
- 获取某场比赛的ESPN金钱线赔率(例如通过):
nba get_scoreboard- 主队:,客队:
-150+130
- 主队:
- 获取同一结果的Polymarket/Kalshi价格(例如主队为)。
0.52 - 对ESPN赔率去抽水,得到公平概率:
→ 公平概率:主队57.9%,客队42.1%(去除了约3.5%的抽水)
devig --odds=-150,+130 --format=american - 对比公平概率与市场价格:
→ 优势:5.9%,期望值:11.3%,凯利比例:0.123
find_edge --fair_prob=0.579 --market_prob=0.52 - 或一步完成全部流程:
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%.
- 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
- → Total implied: 0.97 (< 1.0 = arbitrage!) → Guaranteed ROI: 3.09% → Allocation: 49.5% on home, 50.5% on away
find_arbitrage --market_probs=0.48,0.49 --labels=home,away - For 3-way football markets:
find_arbitrage --market_probs=0.40,0.25,0.30 --labels=home,draw,away
当不同来源的价格总和不等于100%时,发现保本获利的机会。
- 从不同来源获取每个结果的最优价格:
- 来源A(Polymarket):主队0.48
- 来源B(Kalshi):客队0.49
- → 总隐含概率:0.97(<1.0 = 存在套利机会!) → 保本投资回报率:3.09% → 资金分配:主队49.5%,客队50.5%
find_arbitrage --market_probs=0.48,0.49 --labels=home,away - 对于足球三结果市场:
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.
- De-vig each leg to get fair probabilities:
- Leg 1: → fair prob 0.58
devig --odds=-150,+130 - Leg 2: → fair prob 0.55
devig --odds=-130,+110 - Leg 3: → fair prob 0.50
devig --odds=-110,-110
- Leg 1:
- → Combined fair: 15.95%, offered +600 implies 14.29% → Edge: 1.66%, +EV
parlay_analysis --legs=0.58,0.55,0.50 --parlay_odds=600 - If legs are correlated (e.g. same-game parlay): add — this increases combined probability since correlated events are more likely to co-occur
--correlation=0.1
评估多场次串关是否具有正期望值。
- 对每个场次去抽水,得到公平概率:
- 场次1:→ 公平概率0.58
devig --odds=-150,+130 - 场次2:→ 公平概率0.55
devig --odds=-130,+110 - 场次3:→ 公平概率0.50
devig --odds=-110,-110
- 场次1:
- → 联合公平概率:15.95%,提供的+600赔率隐含14.29%的概率 → 优势:1.66%,正期望值
parlay_analysis --legs=0.58,0.55,0.50 --parlay_odds=600 - 如果场次之间存在相关性(例如同场串关):添加——由于相关事件同时发生的概率更高,这会提高联合概率
--correlation=0.1
Workflow: Line Movement from ESPN
工作流:ESPN盘口变动分析
Quantify how a line has moved and what it implies about sharp money.
- 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
- → Probability shift: +3.21% toward favorite → Classification: sharp_action
line_movement --open_odds=-140 --close_odds=-160 - With spread too: → If ML and spread move same direction: sharp action confirmed → If they move opposite: reverse line movement (public vs sharp split)
line_movement --open_odds=-140 --close_odds=-160 --open_line=-6.5 --close_line=-7.5
量化盘口变动情况及其背后的专业投注者资金流向含义。
- 获取某场比赛的ESPN赔率——开盘和收盘盘口均可用:
- 开盘金钱线:-140,收盘金钱线:-160
- 开盘让分:-6.5,收盘让分:-7.5
- → 概率变动:热门方概率增加3.21% → 分类:sharp_action(专业投注动作)
line_movement --open_odds=-140 --close_odds=-160 - 结合让分盘分析:→ 如果金钱线和让分盘变动方向一致:确认专业投注动作 → 如果变动方向相反:反向盘口变动(大众投注与专业投注者意见分歧)
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.
- → Each side is 50.0% fair (standard -110/-110 spread/total)
devig --odds=-110,-110 --format=american - → Favorite: 65.2%, Underdog: 34.8%
devig --odds=-200,+170 --format=american - (3-way football) → Home: 47.3%, Draw: 19.8%, Away: 15.7%
devig --odds=-150,+300,+400 --format=american
去除DraftKings赔率中的抽水(vig/juice),查看“真实”的隐含概率。
- → 双方公平概率均为50.0%(标准-110/-110让分盘/总分盘)
devig --odds=-110,-110 --format=american - → 热门方:65.2%,冷门方:34.8%
devig --odds=-200,+170 --format=american - (足球三结果) → 主队:47.3%,平局:19.8%,客队:15.7%
devig --odds=-150,+300,+400 --format=american
Workflow: Odds Conversion
工作流:赔率转换
Convert odds from one format to another.
- → Probability: 60.0%, Decimal: 1.6667
convert_odds --odds=-150 --from_format=american - → Probability: 40.0%, American: +150
convert_odds --odds=2.50 --from_format=decimal
在不同格式之间转换赔率。
- → 概率:60.0%,欧式赔率:1.6667
convert_odds --odds=-150 --from_format=american - → 概率:40.0%,美式赔率:+150
convert_odds --odds=2.50 --from_format=decimal
Examples
示例
User: "Is there edge on the Lakers game? ESPN has them at -150 and Polymarket has them at 52 cents"
- → Fair home prob ~58%
devig --odds=-150,+130 --format=american - → Edge ~6%, positive EV
find_edge --fair_prob=0.58 --market_prob=0.52 - → Kelly fraction
kelly_criterion --fair_prob=0.58 --market_prob=0.52 - 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"
find_arbitrage --market_probs=0.48,0.49 --labels=home,away- If arbitrage_found: present allocation percentages and guaranteed ROI
- If not: present the overround and explain there's no guaranteed profit
User: "Is this 3-leg parlay at +600 worth it?"
- De-vig each leg to get fair probs (e.g. 0.58, 0.62, 0.55)
parlay_analysis --legs=0.58,0.62,0.55 --parlay_odds=600- Present: combined fair prob, edge, EV, +EV or -EV, Kelly fraction
User: "The line moved from -140 to -160, what does that mean?"
line_movement --open_odds=-140 --close_odds=-160- Present: probability shift, direction, magnitude, classification (sharp action, steam move, etc.)
User: "What are the true odds for this spread? Both sides are -110"
devig --odds=-110,-110 --format=american- Present: each side is 50% fair probability, vig is ~4.5%
User: "Convert -200 to implied probability"
convert_odds --odds=-200 --from_format=american- Present: 66.7% implied probability, 1.50 decimal odds
用户:“湖人这场比赛有投注优势吗?ESPN给出的赔率是-150,Polymarket的价格是52分”
- → 主队公平概率约58%
devig --odds=-150,+130 --format=american - → 优势约6%,正期望值
find_edge --fair_prob=0.58 --market_prob=0.52 - → 计算凯利比例
kelly_criterion --fair_prob=0.58 --market_prob=0.52 - 展示内容:优势、每美元期望值、推荐投注占资金的比例
用户:“这个能套利吗?Polymarket主队是48分,Kalshi客队是49分”
find_arbitrage --market_probs=0.48,0.49 --labels=home,away- 如果发现套利:展示资金分配比例和保本投资回报率
- 如果没有套利:展示总隐含概率并说明无保本获利机会
用户:“这个3场串关+600的赔率值得投吗?”
- 对每个场次去抽水得到公平概率(例如0.58, 0.62, 0.55)
parlay_analysis --legs=0.58,0.62,0.55 --parlay_odds=600- 展示内容:联合公平概率、优势、期望值、正/负期望值、凯利比例
用户:“盘口从-140变成-160,这意味着什么?”
line_movement --open_odds=-140 --close_odds=-160- 展示内容:概率变动、方向、幅度、分类(专业投注动作、资金涌入等)
用户:“这个让分盘的真实赔率是多少?双方都是-110”
devig --odds=-110,-110 --format=american- 展示内容:双方公平概率均为50%,抽水约4.5%
用户:“把-200转换成隐含概率”
convert_odds --odds=-200 --from_format=american- 展示内容:隐含概率66.7%,欧式赔率1.50
Commands that DO NOT exist — never call these
不存在的命令——请勿调用
— 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.get_odds— does not exist. Usecalculate_evorfind_edgeinstead.evaluate_bet— does not exist. Use thecompare_marketsskill for cross-platform comparison.markets
If a command is not listed in the Commands section above, it does not exist.
—— 不存在。本模块仅分析赔率,不获取赔率。如需ESPN赔率请使用nba-data/nfl-data等工具,如需预测市场价格请使用Polymarket/Kalshi工具。get_odds—— 不存在。请使用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)的资金流入。反向盘口变动(金钱线与让分盘变动方向相反)意味着大众投注与专业投注者意见分歧。