Overview
Sportsbooks constantly disagree with each other, and sometimes the disagreement is large enough that a set of opposing bets locks in a profit no matter the outcome. arbedge is the math and data layer for finding those spots: true arbitrage, middles, and positive-EV bets where one book’s line beats the market consensus. The core is decimal-odds math done carefully. Removing the bookmaker’s margin to recover true probabilities is a modeling choice, not a formula, so arbedge implements four devig methods (multiplicative, additive, power, and Shin) and treats their disagreement as information.
The piece that matters most in practice is the structural same-market guard. The classic way scanners lose money is matching two bets that look like the same market but are not: a different line, a different period, the women’s match, game one of a doubleheader. arbedge refuses any pair it cannot structurally verify as identical, which kills the phantom arbs before staking math ever runs. Stakes themselves are rounded worst-case, so rounding error can never flip a locked profit into a loss.
Around the math sits a working pipeline: a pre-match scanner over The Odds API free tier with a credit guard and a --mock mode that runs the whole system offline, plus a SQLite bet log, a float ledger across books, and P&L that reports ROI on turnover and execution drag against the detected edge. Alerts dedupe by arbitrage group so one opportunity does not page me five times.
The scope boundary is deliberate and hard. arbedge detects and logs. It never places bets, and it contains no identity, IP, or geolocation evasion of any kind. Account limiting is treated as a structural cost of the activity, not something to engineer around. Stdlib only, no framework, 48 tests. The repo also hosts the start of a demo-first Kalshi trading layer, since a CFTC-regulated prediction market is the one venue where algorithmic trading is actually permitted.
Key Features
- Arbitrage, middle, and +EV detection over decimal odds
- Four devig models: multiplicative, additive, power, Shin
- Structural same-market guard against mismatched line, period, gender, doubleheader
- Worst-case stake rounding so profit survives real bet sizes
- Odds API scanner with credit budget guard and a fully offline mock mode
- SQLite bet log, cross-book float ledger, ROI on turnover, execution drag
- Hard boundary: no bet automation, no identity or location evasion, ever
Tech Stack
- Python, standard library only
- SQLite for the ledger
- The Odds API (free tier) for pre-match lines