← Back to blog

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

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

By ZenHodl. Dataset documentation, research and model evaluations are linked in the article. A separate filtered ledger of bot-attributed trades, including losses and its admission rules, is public 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.

Differences can reflect costs, risk limits, timing or contract rules even when neither quote is a pricing error. Investigate those explanations before interpreting a gap as model evidence.

The Devigging Math

Sportsbook prices include vig (the bookmaker's profit margin). A no-vig estimate can provide a comparison benchmark. Evaluating a sportsbook bet itself still uses its executable odds and payout; normalizing the odds does not change that offered return.

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

One illustrative no-vig estimate uses proportional normalization:

home_estimate = 60.0 / 105.5 = 56.9%
away_estimate = 45.5 / 105.5 = 43.1%

Compare the 56.9% normalized estimate with a hypothetical 58c Polymarket quote: the gap is 1.1c before exchange costs. The proportional method is an assumption about how to allocate the overround, not proof of a true probability or mispricing.

A hypothetical 65c quote would make the gap 8.1c. Its size alone does not make it actionable; matching, freshness, depth and probability evidence still matter.

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

The scanner architecture described in this April article has five components. Polling schedules and provider plans are implementation examples, not a newly verified October runtime:

1. Data collection. Collect timestamped sportsbook quotes from a source such as The Odds API. Choose a polling schedule within its current quotas; inspect its current plans rather than relying on this article’s former $5/100K price claim.

2. Devigging. For each market, we apply multiplicative devig to remove the vig. This produces a normalized benchmark that sums to 100% for an exhaustive two-outcome market. It does not recover the sportsbook’s private probability estimate.

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. The original implementation used an 8c filter; that choice did not establish positive expectation. The September internal fill-study disclosure reported 2,584 eligible fills and negative bought-side calibration across its evaluated sports. That is a dated cohort, not a current aggregate. Use the applicable fee formula, depth and uncertainty for the specific market.

5. Venue selection. When multiple venues show an edge, pick the one with the best price after fees. Use actual exchange fees and executable sportsbook payouts rather than a fixed 2c exchange assumption. Non-fills, limits and rule differences can change which option is usable.

What We Actually See

The original article reported the following illustrative scanner counts for an NBA night with 8–10 games. No current-night or representative-sample claim is made:

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.

Evaluate the particular quote

Check update time, settlement match, available size and limits for each quote. No universal venue hierarchy follows from this article. Multiple venues may share source information or pricing signals, so agreement is not necessarily independent confirmation.

Common Mistakes

Confusing implied and estimated probability. −130 implies 130 / 230 = 56.52% as a gross break-even rate. A no-vig estimate needs the other outcomes’ quotes and a declared method; −130 alone cannot yield 54.2%.

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.

Assuming volume certifies information quality. A quote’s turnover does not by itself validate its probability estimate or make it executable at your size.

Forgetting costs. Apply the current market’s fee schedule, planned order type and fill model. A fixed 2c adjustment is not a universal Polymarket cost.

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 MLB regular-season days of sampled Polymarket/Kalshi capture — the median quoted cross-spread before execution verification 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 regular-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. Check the current access and quotas at The Odds API
  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 creates an evaluation workflow; it does not establish long-term edge.

The Takeaway

Model estimates and venue quotes provide several related observations, often with shared inputs. Disagreement is a research candidate, and agreement does not prove correctness.

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 model/quote comparisons. Check the displayed timestamps and depth before interpreting a gap; a page refresh interval is not proof of fresh underlying data. The course covers the complete devigging pipeline, game matching, and venue selection logic in Module 5.

Related reading

Get ZenHodl Weekly

Dataset releases, research notes, and public results, including corrections.

Research and dataset updates from ZenHodl.

Want the data behind this post?

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