Skip to content

Repository files navigation

🎯 Betting Edge Finder

Find +EV betting opportunities by comparing Pinnacle's sharp no-vig line against soft books (Hard Rock Bet, DraftKings, FanDuel, BetMGM).

Runs entirely on your local machine. No hosting, no cloud, no monthly infrastructure costs — just your API subscription.


Quick Start

1. Clone and install

git clone https://github.com/YOUR_USERNAME/EdgeManager.git
cd EdgeManager
pip install -r requirements.txt

2. Add your API key

cp config.example.py config.py

Edit config.py and add your SportsGameOdds API key. Get a key at: https://sportsgameodds.com (free 7-day trial on paid plans)

3. Run a scan

python run.py
# or explicitly:
python run.py scan

What It Does

  1. Fetches odds from SportsGameOdds for NBA, EPL, La Liga (configurable)
  2. Strips Pinnacle's vig to calculate the true no-vig probability for each side
  3. Calculates EV% for each soft book's line vs the true probability
  4. Displays edges sorted by EV, with Kelly Criterion bet sizing
  5. Saves everything to a local SQLite database for tracking

Commands

Find edges

python run.py scan

Log a bet you placed

python run.py log-bet \
  --game "Heat @ Lakers" \
  --sport basketball_nba \
  --market Moneyline \
  --side "Lakers" \
  --book hardrockbet \
  --odds -115 \
  --stake 50

See pending bets

python run.py pending

Settle a bet

python run.py settle 1 win    # Bet ID 1, result = win
python run.py settle 2 loss   # Bet ID 2, result = loss
python run.py settle 3 push   # Bet ID 3, push/refund

Check your ROI

python run.py roi

Configuration (config.py)

Setting Default Description
SGO_API_KEY Your SportsGameOdds API key
SPORTS NBA + EPL + La Liga Sports to scan
SHARP_BOOK pinnacle Benchmark book for true line
SOFT_BOOKS HRB, DK, FD, MGM Books to find edges on
MIN_EV_PERCENT 2.0 Minimum EV% to show
MARKETS ML + Spread + Total Markets to analyze
SHOW_TOP_N 20 Max edges to display

Understanding the Output

#01  🏀 Celtics @ Knicks
     Mon Apr 07 07:30PM UTC
     Moneyline  →  Celtics
     Hard Rock: +105  | Pinnacle: +100
     True prob: 50.0%  | EV: +2.4%  | ¼ Kelly: 1.2% of bankroll
  • True prob — Pinnacle's no-vig probability for this outcome
  • EV% — Expected long-run profit per $100 bet (e.g. +2.4% = $2.40 profit/per $100)
  • ¼ Kelly — Recommended bet size as % of bankroll (already at conservative 1/4 Kelly)

Bet Sizing Guide

Using ¼ Kelly is recommended. On a $1,000 bankroll:

¼ Kelly Bet Size
1% $10
2% $20
3% $30
5% $50

Never bet more than 5% of bankroll on a single bet regardless of Kelly.


Data Storage

All data is saved to data/edges.db — a local SQLite database. You can open this with any SQLite viewer (e.g. DB Browser for SQLite) or query it directly:

sqlite3 data/edges.db "SELECT * FROM edges ORDER BY ev_percent DESC LIMIT 10"

Automate with Cron (Optional)

Run a scan every day at 11am and 5pm:

crontab -e
# Add:
0 11,17 * * * cd /path/to/betting-edge-finder && python run.py scan >> logs/scan.log 2>&1

Adding More Sports

In config.py, add to the SPORTS list:

SPORTS = [
    "basketball_nba",
    "americanfootball_nfl",
    "soccer_epl",
    "soccer_la_liga",
    "soccer_bundesliga",
    "soccer_serie_a",
    "soccer_champions_league",
]

Cost

  • SportsGameOdds Rookie plan: ~$99/mo
  • Hosting: $0
  • Database: $0
  • Total: ~$99/mo

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages