2026-05-19 · betting math arbitrage positive ev middling

The value-hunting trifecta: arbitrage, +EV, and middles explained together

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.

The shared mechanism

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.

1. Cross-book arbitrage

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.

Example. DraftKings has Lakers +160 (implied 38.46%). FanDuel has Celtics -140 (implied 58.33%). Sum of implied probabilities: 96.79%. Overround is negative 3.21%, which means there's a 3.21% edge if you bet both sides correctly proportioned. Stake $61.54 on Lakers at DK ($160 if it wins) and $58.33 on Celtics at FD ($41.67 if it wins). Your total stake is $119.87. Whichever side wins, you collect approximately $100 (for the winning side's original stake) plus the profit on that side. Net guaranteed profit: about $3.85, or 3.21% of stake.

Properties

Watch this live: /arbs. Backed by the no-auth /v1/try/{sport}/arbitrage endpoint.

2. Positive-EV (devig method)

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.

Example. Pinnacle (sharp anchor) has Yankees -145 / Rangers +135. Implied probabilities are 59.18% and 42.55%, summing to 101.73% (1.73% Pinnacle hold). Devig: 59.18 / 101.73 = 58.18% for Yankees, 41.82% for Rangers. That's the no-vig fair price. Now look at every other book. FanDuel has Yankees -135 (implied 57.45%). Edge = 58.18% − 57.45% = +0.73%. You'd take Yankees at FD all day if you had to, but it's a small edge.

Properties

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.

3. Middles

Two sides of the same market at different lines across two books. If the game lands between the two lines, both legs win.

Totals example. Book A has Over 7.5 at -110. Book B has Under 8.5 at -105. Bet both. If the final total is exactly 8 runs, Over 7.5 wins AND Under 8.5 wins. You double your money. If the total is 7 or less, the Under wins and the Over loses. If the total is 9 or more, the Over wins and the Under loses. So you "lose half" most of the time and "win twice" sometimes.

Combined hold: implied probabilities of -110 and -105 sum to 52.38% + 51.22% = 103.60%, so you're paying 3.60% in vig per pair when the middle misses. Break-even middle hit rate is roughly 3.60% / (1 + 0.918) ≈ 1.88%. If the integer total of 8 hits more than 1.88% of the time in this matchup, the middle is +EV.

Properties

Watch this live: /middles. Backed by the no-auth /v1/try/{sport}/middles endpoint.

Side-by-side

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 continuum nobody talks about

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.

Which should you chase?

Quick recommendations:

What the public scanners can't see

Three things that make the public picture incomplete:

Build on it

Every method described here is exposed in our REST API:

Reference clients in Python, JavaScript, Go, Ruby, Java, PHP, and C# at github.com/JacobiusMakes/ParlayAPI/tree/main/examples. 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.

All posts · Live arbs · Live +EV · Live middles · Get a free API key