← Back to blog

Multi-Venue Edge Detection: Finding Mispriced Lines Across Polymarket, DraftKings & FanDuel

updated 2026-08-06 arbitrage polymarket sportsbooks betting-math intermediate

By the ZenHodl team — we run the trading bots this blog writes about, and the qualifying live-position record, including losses, is public with its admission rules at /results.

The same NBA game can be priced at -150 on DraftKings, -145 on FanDuel, and 58 cents on Polymarket. The quotes may disagree because of vig, liquidity, timing, limits, or contract rules—not necessarily because one is an executable mistake.

Multi-venue comparison is a measurement system for investigating those disagreements. Prediction markets and sportsbooks price related events through different mechanisms, so exact market matching and executable quotes matter as much as the headline gap.

Why Prices Diverge

Sportsbooks set prices through liability management. DraftKings, FanDuel, and BetMGM use opening lines from a model, then adjust based on bet flow. When too much money flows to one side, they shift the line to balance their book. The price reflects the behavior of their customer base as much as the true probability.

Polymarket prices through a CLOB. A central limit order book where sophisticated traders set bid/ask spreads. Prices reflect the beliefs of a smaller, more technically literate participant base.

These two pricing mechanisms regularly disagree. When they disagree, at least one of them is wrong. Sometimes both.

The Devigging Math

Sportsbook prices include vig (the bookmaker's profit margin). To compare them to Polymarket prices, you have to remove the vig.

A -150 line implies:

implied_prob = 150 / (150 + 100) = 60.0%

But that's the raw implied probability with vig included. Both sides of the market sum to more than 100%:

home_raw = 60.0% (from -150)
away_raw = 45.5% (from +120 on the other side)
total = 105.5%  ← the vig

To get the true probability, devig multiplicatively:

home_true = 60.0 / 105.5 = 56.9%
away_true = 45.5 / 105.5 = 43.1%

Now you can compare to Polymarket. If Polymarket is at 58 cents (which already implies 58% probability with no vig), your devigged DraftKings number says the home team has a 56.9% true probability. Polymarket is overpricing the home team by 1.1 cents according to DraftKings.

That's a small disagreement — probably noise. But when you see Polymarket at 65 cents and devigged DraftKings at 56.9%, that's an 8.1-cent disagreement. That's actionable.

The Three Types of Multi-Venue Edges

Type 1: Model vs Market. Your win probability model says X, all venues say less than X. The more venues that independently agree with each other (and disagree with you), the more seriously you should investigate model error. A feature-backed disagreement is still a hypothesis until it survives out-of-sample calibration and executable-price tests.

Type 2: Venue vs Venue. DraftKings prices a game at 62% implied. Polymarket prices it at 55 cents. That is a 7-cent observed gap before fees, depth, matching, and timing checks. During live games, apparent venue lag can also mean your own score or quote feed is stale.

Type 3: Closing Line Value (CLV). A consistently captured pregame close is a useful market-relative diagnostic. If one venue moves while another has not, the discrepancy may reflect new information—or merely latency, different settlement rules, liquidity, or a non-executable quote. For in-play markets, a near-terminal close can encode the outcome and must not be treated as proof of skill. See our CLV retraction.

Building a Multi-Venue Scanner

Our scanner architecture has five components:

1. Data collection. We poll The Odds API every 2 minutes for sportsbook prices from DraftKings, FanDuel, BetMGM, Caesars, and others across NBA, MLB, NHL, NFL, and NCAAMB. The Odds API costs $5/month for 100K requests, which gives us ~3,000 requests per day during game hours.

2. Devigging. For each market, we apply multiplicative devig to remove the vig. This gives us each sportsbook's true assessment of win probability, normalized so home + away = 100%.

3. Game matching. This is the hardest part. ESPN calls them "Cavaliers." DraftKings calls them "Cleveland Cavaliers." Polymarket calls them "clevelandcavaliers" in the token slug. We built a normalizer that handles all the team name variations. It's tedious but it has to be exact — wrong matches generate fake signals.

4. Edge calculation. For each game, compare your model's fair probability against every venue's price. Emit a signal when the edge exceeds your threshold. We use 8 cents minimum (covering 2-cent Polymarket fee + safety margin) — this is a risk-control filter, not a measured positive-expectation floor. A study of 2,584 of our own eligible live fills found no edge threshold in the 0-30 cent range that clears zero expected value in 9 of 11 sports we trade, and our own bought-side calibration is currently negative across sports.

5. Venue selection. When multiple venues show an edge, pick the one with the best price after fees. Polymarket has 2-cent taker fees. Sportsbooks have vig built into the line. The optimal venue depends on the specific game.

What We Actually See

During an NBA game night with 8-10 games, our scanner produces:

The most dangerous pattern is an apparent post-score lag. A market may already have repriced while your scoreboard or local snapshot still reflects the old state; orders then fill preferentially when you are stale. Require fresh timestamps, executable depth, and a post-event stabilization rule before treating a discrepancy as tradable.

The Venue Quality Hierarchy

Not all venues are equally informative:

Best for finding mispricings: Polymarket. Thin books, retail flow, slow updates during live games.

Useful reference prices: liquid regulated sportsbooks can add an independent comparison, but no single book is ground truth and prices include operator-specific risk and limits.

Useful for confirmation: Agreement across independent venues makes a discrepancy worth investigating; it does not establish which venue is wrong or guarantee an executable edge.

Least useful: Smaller offshore books (Bovada, BetOnline). Wider spreads and stale lines that look like edges but aren't executable at meaningful size.

Common Mistakes

Ignoring the vig. A -130 line is not 56.5% probability. After devigging, it's closer to 54.2%. The 2.3% difference is the margin between a real edge and a phantom one.

Not normalizing team names. "NY Knicks" on one venue, "New York Knicks" on another, and "newyorkknicks" on a third. If your matcher fails, you're comparing wrong games.

Treating all sportsbook lines equally. DraftKings with $10M handle on an NFL game is much more informative than a small offshore book with $50K handle. Weight your signals accordingly.

Forgetting Polymarket fees. The 2-cent taker fee means a 5-cent edge is really a 3-cent edge after fees. Your threshold needs to account for this.

Cross-venue arbitrage assumptions. Pure arbitrage (guaranteed profit from both sides) is worse than rare. On the one venue pair we have measured end to end — three off-season days of synchronized Polymarket/Kalshi capture — the median executable edge after crossing both spreads was about −1 cent, a positive quoted opportunity above a 3–5 cent round-trip cost floor appeared in only 0.39% of time-weighted exposure, and 92.8% of those windows had closed by the next ~30-second sample (full study). That is prediction market against prediction market on a small off-season sample, not Polymarket against a sportsbook, so read it as direction of travel rather than a constant. What it does rule out is treating a displayed gap as free money.

This post previously finished that point with "the opportunities are in informed directional bets, not riskless arb." The second half is right; the first half was a promise we cannot support, and we are correcting it here rather than deleting it. Directional betting is where the remaining hypothesis lives, not where profit has been demonstrated.

Correction (2026-09-25): this section previously hardcoded our live directional record as "−$217.75 over 2,214 resolved trades at −1.87 cents mean settlement CLV, beating the close 47.6% of the time." Hardcoded figures go stale, so we no longer repeat one here: see /clv-evidence for the current honest aggregate and /results for the full trade-by-trade record, including losses.

Getting Started

The simplest version of a multi-venue scanner takes about a weekend to build:

  1. Get an API key from The Odds API (free tier gives 500 requests/month — enough to test)
  2. Build a devigging function (10 lines of Python)
  3. Build a team name normalizer (annoying but one-time)
  4. Compare devigged sportsbook lines to Polymarket prices
  5. Alert when the gap exceeds your threshold

The more sophisticated version adds your own WP model as a third opinion, tracks CLV over time, and optimizes which venue to trade on for each specific edge. That's where the real long-term edge lives — not in finding individual mispricings, but in being able to execute on the right venue with the right size at the right time.

The Takeaway

Multi-venue edge detection isn't a single trading strategy. It's a measurement system that gives you three independent opinions on every game (your model, prediction markets, sportsbooks). When they disagree, you have an opportunity. When they agree, you have confirmation that you're not the one who's wrong.

Multi-venue scanners give you additional observations. Whether those observations improve decisions is an empirical question that should be tested on synchronized, executable data with non-fills and costs included.


Our Edge Finder shows live multi-venue edges across Polymarket and major sportsbooks, updated every 5 seconds. The course covers the complete devigging pipeline, game matching, and venue selection logic in Module 5.

Related reading

Get ZenHodl Weekly

One weekly email with live results, one model insight, and product updates.

Tuesday mornings. No spam.

Want the data behind this post?

Historical sports prediction-market datasets with measured coverage, documented schemas, and disclosed gaps.