Back to Blog
world-cupsoccercalibrationmarket-analysis

Polymarket Underpriced the World Cup Draw at 22¢ — And It Knocked Germany Out

Across 77 World Cup 2026 matches, Polymarket's regulation 'Draw' closed at 22¢ but hit 29% of the time — a standing edge that cashed when Germany and the Netherlands went out on penalties.

PolymarketData Team
A soccer ball on the penalty spot of a floodlit pitch
Image credit: Emilio Garcia

Polymarket priced Germany at 73.5¢ to beat Paraguay in the Round of 32. The match finished 1-1, Germany lost the shootout, and the token that mattered — "Will Germany vs. Paraguay end in a draw?" — closed at 17.5¢ and paid out at a dollar. Anyone holding the draw got 5.7× their money while the 73.5¢ favorite went to zero.

Germany's 90-minute win price collapses from 73.5¢ to zero as the draw settles at 100¢

That's a good story. What makes it a data story is that it wasn't a fluke. We pulled the closing price and settlement for every regulation-result market on all 93 World Cup 2026 matches with a Polymarket book — 232 resolved binary markets through June 30 — and the draw is the single most consistently underpriced outcome in the tournament. The regulation "Draw" closed at an average of 21.8¢ and hit 28.6% of the time. Back it blindly, every match, and you'd be up +31% gross on turnover.

Why the draw is where the money is

Each World Cup match on Polymarket is a three-way regulation moneyline: Team A wins in 90, Draw, Team B wins in 90. Extra time and penalties don't count — a 1-1 that goes to a shootout resolves the Draw token to YES, no matter who advances. That structural detail is exactly why the knockout round has been carnage for favorites: elimination football grinds toward stalemate, and the market keeps pricing the draw like it's a group-stage afterthought.

Football bettors have a well-documented aversion to backing the draw — it feels like rooting for nothing — and that behavioral discount shows up cleanly in Polymarket's closing lines. The interesting part is that it survives into a liquid, real-money prediction market that's otherwise sharply calibrated.

The market is well calibrated — except on the draw

Here's the calibration curve across all 232 resolved regulation markets. Bucket every market by its pre-kickoff closing price, then check how often those markets actually resolved YES.

Closing priceMarketsAvg impliedActually happened
0–10¢316.0%6.5%
10–20¢4614.6%13.0%
20–30¢6924.4%23.2%
30–40¢1334.6%23.1%
40–50¢1144.9%72.7%
50–60¢1954.4%47.4%
60–70¢1864.1%77.8%
70–80¢973.4%77.8%
80–90¢1384.3%76.9%
90–100¢392.0%66.7%

Calibration scatter of 232 resolved World Cup regulation markets against the perfect-calibration diagonal

The tails are excellent: longshots priced at 6¢ come in 6.5% of the time, and the fat 20–30¢ bucket (where most draws and second-favorites live) is almost perfectly on the line. The mid-table wobble is small-sample noise — only 11 markets ever closed between 40¢ and 50¢. Overall the mean absolute miss is about 5 points, which is genuinely sharp for a sports book.

So the edge isn't "the crowd is dumb." It's specific. When we split the same markets by outcome type, the draw and the teams pull in opposite directions:

BucketMarketsAvg closeHit rateGross ROI
Draw (all matches)7721.8¢28.6%+31.2%
Draw (group stage)7221.5¢27.8%+29.3%
Draw (Round of 32)525.9¢40.0%+54.4%
Any team to win in 9015538.9¢35.5%−8.7%
Favorites > 60¢4374.1¢76.7%+3.5%

Grouped bars showing the draw's average closing price versus its actual hit rate, group stage, Round of 32 and all matches

Read those last three rows together and the mechanism is obvious. The favorites are priced almost perfectly (74.1¢ → 76.7%). Backing teams indiscriminately loses 8.7% because the win-in-regulation tokens are collectively a touch rich — and that richness is the mirror image of the draw being too cheap. The three-way prices sum to roughly a dollar, so every cent the draw is underpriced has to come out of the two teams. The crowd funds its draw-aversion by slightly overpaying for a result.

The knockout round is amplifying it

Five regulation-draw markets have resolved in the Round of 32 so far. Two of them hit — Germany 1-1 Paraguay and Netherlands 1-1 Morocco, both settled on penalties, both eliminating a pre-tournament heavyweight. That's a 40% draw rate against a 25.9¢ average price. Small sample, yes, but it's the expected direction on steroids: win-or-go-home matches between competent sides are draw factories, and the market walked in pricing them like group games.

If the pattern holds through the quarterfinals, the draw is the highest-expectancy standing bet on the board.

Gross closing-line ROI by bet type: backing any team loses 8.7%, the draw returns 29 to 54%

Replicate it with the API

Everything above is two endpoints: list the match markets, then pull each token's closing price and settlement. Here's the full loop with the Python SDK.

from polymarketdata import PolymarketDataClient, Resolution
from datetime import datetime, timedelta
import numpy as np

client = PolymarketDataClient(api_key="YOUR_API_KEY")

# 1. Grab every World Cup 2026 match event (slugs are prefixed `fifwc-`)
events = client.discovery.list_events(search="fifwc", limit=500)
matches = [e for e in events.data
           if " vs. " in e.title and " - " not in e.title]

rows = []
for m in matches:
    kickoff = datetime.fromisoformat(m.slug[-10:])          # date is in the slug
    for market in client.discovery.list_markets(event_id=m.id).data:
        for tok in market.tokens:
            if tok.label != "Yes":
                continue
            px = client.history.get_token_prices(
                tok.id,
                start_ts=(kickoff - timedelta(days=3)).isoformat() + "Z",
                end_ts=(kickoff + timedelta(days=2)).isoformat() + "Z",
                resolution=Resolution.ONE_MINUTE,
            ).to_dataframe_prices()

            pre  = px[px.t < kickoff]          # everything before kickoff
            if pre.empty:
                continue
            close_price = pre.price.iloc[-1]   # last print before the match
            settle      = px.price.iloc[-1]    # 0.001 or 0.999 after resolution
            if not (settle > 0.95 or settle < 0.05):
                continue                        # skip unresolved / live markets

            rows.append({
                "match": m.title,
                "is_draw": "end in a draw" in market.question,
                "implied": float(close_price),
                "won": int(settle > 0.5),
            })

# 2. Measure the draw edge
draws = [r for r in rows if r["is_draw"]]
price = np.mean([r["implied"] for r in draws])
hit   = np.mean([r["won"]     for r in draws])
print(f"Draws: n={len(draws)}  avg_close={price:.3f}  "
      f"hit_rate={hit:.3f}  gross_roi={hit/price - 1:+.1%}")
# -> Draws: n=77  avg_close=0.218  hit_rate=0.286  gross_roi=+31.2%

Swap the outcome filter and you can reproduce the full calibration table, the group-versus-knockout split, or a per-match ledger in a few more lines.

What a trader does with this

Back the regulation draw, size it for the knockout round, and don't kid yourself about the frictions. The +31% is a gross, closing-line number: it assumes you get filled at the last pre-kickoff price and ignores fees and the spread you'll actually cross. Draw markets are thinner than the moneyline, so a live backtest against historical L2 depth — not the mid — is mandatory before you trust the edge net of execution. The knockout sample is five markets; treat the +54% as a direction, not a coefficient.

But the setup is clean: a persistent behavioral discount, a structural reason it widens in exactly the matches everyone's watching, and a market that's otherwise calibrated tightly enough that you can trust the rest of the book. The draw has been the trade all tournament. The bracket is about to get tighter, not looser.

Germany's backers already paid for the lesson. Who's pricing Saturday's draws?


All data from the polymarketdata.co API. Full endpoint reference at polymarketdata.co/docs.