Claude-skill-registry betting-strategy
Details the core betting strategy, including edge calculation, sport-specific thresholds, Kelly Criterion sizing, and portfolio optimization.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/betting-strategy" ~/.claude/skills/majiayu000-claude-skill-registry-betting-strategy && rm -rf "$T"
manifest:
skills/data/betting-strategy/SKILL.mdsource content
Betting Strategy
Edge Calculation
edge = elo_probability - market_probability
A bet is recommended when:
(high confidence)elo_prob > threshold
(5%+ edge over market)edge > 0.05
Sport Thresholds
| Sport | Threshold | Min Edge | Notes |
|---|---|---|---|
| NBA | 73% | 5% | High-scoring, predictable |
| NHL | 66% | 5% | High variance sport |
| MLB | 67% | 5% | Lower home advantage |
| NFL | 70% | 5% | Small sample size |
Confidence Levels
def get_confidence(elo_prob, threshold): if elo_prob > threshold + 0.10: return "HIGH" elif elo_prob > threshold: return "MEDIUM" return None # Don't bet
Lift/Gain Analysis
Validate model quality by decile:
from lift_gain_analysis import analyze_sport overall, current = analyze_sport('nba') # Key metrics: # - Lift > 1.0: Better than random # - Top decile lift > 1.3: Strong signal # - Gain %: Cumulative wins captured
Interpretation:
- Decile 10 (highest prob): Should have highest lift
- If lift < 1.0 in high deciles, model is miscalibrated
- Set threshold where lift starts exceeding 1.2-1.3
Kelly Criterion
Optimal bet sizing:
def kelly_fraction(win_prob, odds): """Calculate Kelly bet fraction.""" # odds in decimal format (2.0 = even money) q = 1 - win_prob b = odds - 1 return (win_prob * b - q) / b # Use fractional Kelly (25-50%) to reduce variance bet_fraction = kelly_fraction(prob, odds) * 0.25
Portfolio Optimization
from portfolio_optimizer import optimize_bets # Optimize across all opportunities optimized = optimize_bets( opportunities=bets, bankroll=1000, max_exposure=0.10, # 10% max per bet correlation_penalty=0.5 # Reduce correlated bets )
Bet Tracking
All bets saved to
placed_bets table:
default_db.execute(""" INSERT INTO placed_bets (bet_id, game_id, sport, ticker, side, amount, price, elo_prob, edge, placed_at) VALUES (...) """)
CLV (Closing Line Value)
Track if we beat the closing line:
from clv_tracker import calculate_clv clv = calculate_clv(bet_id) # Positive CLV = consistently beating market
Files to Reference
- Kelly and optimizationplugins/portfolio_optimizer.py
- Model validationplugins/lift_gain_analysis.py
- CLV trackingplugins/clv_tracker.py
- Threshold analysisdocs/VALUE_BETTING_THRESHOLDS.md