Three public methods exist for finding mathematical edge in a public sportsbook market: cross-book arbitrage, positive-EV bets, and middles. Most write-ups treat them as separate strategies. They are not separate. They are three points on the same continuum, and understanding how they relate makes choosing between them obvious.
This post puts the three side by side. ParlayAPI ships free no-auth demos of each at /arbs, /ev, and /middles, so you can read the math here and watch it land in real markets in the same tab.
Every sportsbook price is a vigged implied probability. Heads at -110 means the book is asking you for 52.38% implied probability (110 / 210) on a coin flip whose true probability is 50%. The 2.38% gap is the book's hold per side. Two sides at -110 sums to 104.76%, so the overround (vig) is 4.76%.
All three value-hunting strategies start from the same premise: if you can compose a bet whose effective implied probability sums to less than 100%, or whose effective true probability exceeds the implied probability of the price you took, you've found positive expectation. They differ only in how they compose that effective probability.
Take the highest available price on each side of a two-sided market, across different books. If the sum of the two implied probabilities is below 1.0, bet both sides in inverse proportion to their prices and lock a guaranteed return on every dollar in the position.
Watch this live: /arbs. Backed by the no-auth /v1/try/{sport}/arbitrage endpoint.
Arbitrage requires two books to disagree by enough to overcome the vig of both. A weaker condition: one book's price disagrees with the sharp anchor's vig-stripped price. That gap is your edge against fair value.
Watch this live: /ev. Backed by the no-auth /v1/try/{sport}/ev endpoint, which devigs Pinnacle's h2h price and scans every other book.
Critical reading: no-vig CLV explained. Vigged-vs-vigged double-counts the vig and overstates your edge by the overround. Always devig the sharp first.
Two sides of the same market at different lines across two books. If the game lands between the two lines, both legs win.
Watch this live: /middles. Backed by the no-auth /v1/try/{sport}/middles endpoint.
| Arbitrage | +EV (devig) | Middles | |
|---|---|---|---|
| Bets per opportunity | 2 (both sides) | 1 | 2 (same side, two books, two lines) |
| Variance | Zero | Normal (single bet) | Low (lose-half most times) |
| Edge realization | Immediate | Long-run | Long-run, score-distribution dependent |
| Typical edge size | 0.1-2% | 0.3-3% | Variable; depends on window width and base rate |
| Bankroll need | High (money at both books) | Low (single book) | Medium |
| Detection risk | High (paired off-market) | Low to medium | Medium |
| Best for | Patient ops with many books funded | Bettors with one or two books, optimizing long-run | Sport-specific score-modelers |
The three strategies share a single underlying object: the cross-book price surface. Once you have synced prices for every book on every market on every event, the three strategies are different queries against the same data:
arbitrage := find events where best_home_price + best_away_price implies sum < 1.0
+EV := find (event, side, book) where book_implied < devig(pinnacle).fair_prob
middles := find (event, market) where best_over_low_line and best_under_high_line at different books with low_line < high_line
That's it. All three reduce to "scan the cross-book price surface and flag the geometric configuration that produces edge." This is why ParlayAPI ships all three as no-auth demos: the underlying compute is the same; the output shape is what differs.
Quick recommendations:
Three things that make the public picture incomplete:
Every method described here is exposed in our REST API:
GET /v1/sports/{sport}/arbitrage: full cross-book arb scan, all markets, all sports.GET /v1/sports/{sport}/ev: full +EV scan with configurable sharp anchor and min-edge.GET /v1/sports/{sport}/middles: full middles scan covering totals and spreads.Reference clients in Python, JavaScript, Go, Ruby, Java, PHP, and C# at github.com/JacobiusMakes. Production integration guide at /docs/best-practices.
The math doesn't care which strategy you pick. The math cares about edge × throughput × longevity. Pick the strategy whose throughput and longevity match your operation.
Live odds, player props, and closing lines from the same ParlayAPI feed. Free tier: 1,000 credits a month, no credit card.
Get a free API key →Working the numbers by hand? Free calculators: parlay, odds converter, no-vig, EV, all tools.