betting

Betting analysis — odds conversion, de-vigging, edge detection, Kelly criterion, arbitrage detection, parlay analysis, and line movement. Pure computation, no API calls. Works with odds from any source: ESPN (American odds), Polymarket (decimal probabilities), Kalshi (integer probabilities). Use whe

By machina-sports · 1,401 installs

npx skills add machina-sports/sports-skills --skill betting

Source repository · Upstream listing

Betting Analysis Before writing queries, consult references/api reference.md for odds formats, command parameters, and key concepts. Quick Start Python SDK: CRITICAL: Before Any Analysis CRITICAL: Before calling any analysis command, verify: Odds format is correctly identified (american, decimal, or probability). ESPN odds are de vigged with devig before computing edge vs prediction market prices. This module computes — it does not fetch. Obtain odds from sport specific skills or polymarket/kalshi first. Workflows Compare ESPN vs Polymarket/Kalshi 1. Get ESPN moneyline odds (e.g., from nba get scoreboard ): Home: 150 , Away: +130 2. Get Polymarket/Kalshi price for the same outcome (e.g., home at 0.52 ) 3. De vig: devig odds= 150,+130 format=american → Fair: Home 57.9%, Away 42.1% 4. Compare: find edge fair prob=0.579 market prob=0.52 → Edge: 5.9%, EV: 11.3% 5. Or all in one step: evaluate bet book odds= 150,+130 market prob=0.52 Arbitrage Detection 1. Get best price per outcome from different sources (Polymarket home at 0.48, Kalshi away at 0.49) 2. find arbitrage market probs=0.48,0.49 labels=home,away 3. Total implied 0.97 (< 1.0) → arbitrage found, guaranteed ROI: 3.09% Parlay Evaluation 1. De vig each leg: Leg 1 → 0.58, Leg 2 → 0.55, Leg 3 → 0.50 2. parlay analysis legs=0.58,0.55,0.50 parlay odds=600 3. Returns combined fair probability, edge, and Kelly fraction Line Movement Analysis 1. Get ESPN open and close lines: Open 140, Close 160 2. line movement open odds= 140 close odds= 160 3. Returns probability shift, direction, and classification (sharp action, steam move, etc.) Examples Example 1: Edge check using ESPN and Polymarket prices User says: "Is there edge on the Lakers game? ESPN has them at 150 and Polymarket has them at 52 cents" Actions: 1. Call devig(odds=" 150,+130", format="american") → fair home probability ~58% 2. Call find edge(fair prob=0.58, market prob=0.52) → edge ~6%, positive EV 3. Call kelly criterion(fair prob=0.58, market prob=0.52) → optimal bet fraction Result: Present edge percentage, EV per dollar, and recommended bet size as % of bankroll Example 2: Arbitrage opportunity detection User says: "Can I arb this? Polymarket has home at 48 cents and Kalshi has away at 49 cents" Actions: 1. Call find arbitrage(market probs="0.48,0.49", labels="home,away") 2. Check arbitrage found in result Result: If arbitrage: present allocation percentages and guaranteed ROI. If not: present overround and explain no guaranteed profit Example 3: Parlay evaluation User says: "Is this 3 leg parlay at +600 worth it?" Actions: 1. De vig each leg to get fair probabilities (e.g., 0.58, 0.62, 0.55) 2. Call parlay analysis(legs="0.58,0.62,0.55", parlay odds=600) Result: Present combined fair probability, edge, EV, +EV or EV verdict, and Kelly fraction Example 4: Line movement interpretation User says: "The line moved from 140 to 160, what does that mean?" Actions: 1. Call line movement(open odds= 140, close odds= 160) Result: Present probability shift, direction, magnitude, and classification (sharp action, steam move, etc.) Example 5: De vig a standard spread User says: "What are the true odds for this spread? Both sides are 110" Actions: 1. Call devig(odds=" 110, 110", format="american") Result: Present each side as 50% fair probability, vig is ~4.5% Example 6: Odds format conversion User says: "Convert 200 to implied probability" Actions: 1. Call convert odds(odds= 200, from format="american") Result: Present 66.7% implied probability and 1.50 decimal odds Commands that DO NOT exist — never call these ~~ get odds ~~ — does not exist. This module analyzes odds; it does not 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 references/api reference.md , it does not exist. Troubleshooting Error: ValueError: unknown format when calling convert odds Cause: The from format parameter is not one of american , decimal , or probability Solution: Use exactly american , decimal , or probability as the format string Error: find edge returns negative EV when a positive edge is expected Cause: Fair probability and market probability may be reversed, or de vigging was skipped Solution: Run devig on sportsbook odds first, then pass the de vigged fair prob to find edge Error: find arbitrage shows no arbitrage even when prices seem low Cause: Prices may sum to more than 1.0 when all outcomes are correctly included Solution: Verify you are using the correct probabilities for all outcomes; check total implied in the result Error: Kelly fraction is very high (greater than 0.5) Cause: Edge estimate is very large — often from a miscalculated fair probability Solution: Use half Kelly or quarter Kelly for conservative sizing. Re verify fair probability via devig