Concrete, verified reference facts about Polymarket’s daily weather (temperature) markets, surveyed live via the Gamma API on 2026-06-07. These are stable API / market-structure facts that ground the weather-bet project — a Rust app that bets on these markets using a blend+calibrate weather-forecasting algorithm. This is the durable substrate; the betting/algorithm design decisions live in separate notes.
For Agents
Everything here was confirmed against live Gamma API responses on 2026-06-07. Numbers tagged “observed” (volume/liquidity/spread) are point-in-time snapshots and will drift; structural facts (bucket layout, neg-risk, ICAO resolution, whole-°C precision, endpoint shapes) are stable. Shared trading infrastructure (CLOB order books, wallet auth, on-chain fill decode, Telegram, deploy) overlaps with the sibling polymarket-fetch project — reuse it, don’t rebuild it.
Product
- Daily “Highest temperature in [city] on [date]?” and “Lowest temperature in [city] on [date]?” markets.
- Run daily across roughly 25–35 global cities.
- Next-day markets open ~1 day ahead — created the evening before the target date.
Event / market structure
- Each event = 11 mutually-exclusive temperature buckets, modeled as a neg-risk multi-outcome group.
- Buckets are 1°C wide with open-ended tails. Example — Seoul, June 8:
"18°C or below","19°C","20°C"…"27°C","28°C or higher". - Each bucket is its own Yes/No market with its own CLOB order book.
- The bucket’s
YesoutcomePrice= market-implied probability of that bucket resolving true. - Yes prices across the 11 buckets form a discrete probability distribution that sums to ~1 — slightly under, due to spread / vig.
Quick Reference
One event → 11 buckets → 11 CLOB books. Read all 11
YesoutcomePrices and you have the market’s full implied distribution over next-day daily max (or min) temperature, in 1°C bins. The edge is your calibrated distribution vs. theirs.
Resolution
- Source: Wunderground, at a specific ICAO airport station per city — NOT the city center.
- Example (Seoul): resolves on Incheon Intl Airport Station (RKSI) —
https://www.wunderground.com/history/daily/kr/incheon/RKSI~50 km from Seoul, coastal. The city↔station gap is structural, not incidental. - Resolves to the temperature range containing the highest temperature recorded at that station for the calendar day (for the “highest” markets; lowest analogously).
Precision
- Resolution measures temperatures to whole degrees Celsius (e.g.
9°C). - That whole-degree value is the precision used to resolve.
- Therefore the resolved bucket = the rounded daily max (or min) temperature at the station.
Timing
- Cannot resolve until the first data point for the following date is published on Wunderground.
- Revisions to recorded temps are considered until that point.
endDateis typically the next day at12:00:00Z.
Liquidity & volume (observed 2026-06-07)
Snapshot — will drift
The figures below are a single 2026-06-07 reading. Use them for sizing intuition, not as fixed parameters.
- Per city/day volume: ~280k. Examples: Seoul 205k, Taipei 148k, NYC high 49k.
- Per-bucket liquidity: ~9k.
- Spreads: ~1¢ near the distribution mode, wider in the tails.
- Markets are flagged
restricted: true, have neg-risk enabled, and carry openInterest in the tens of thousands.
Out of scope (illiquid / unsuitable)
- Rain / precipitation markets exist but are near-zero volume — e.g. “Will it rain in Central Park” = $13 volume.
- Long-range disaster / climate markets (hurricanes, Arctic sea-ice minimum, major volcano) exist but are single-outcome, low-frequency, and climatology-driven — not a daily, skill-rich, repeated-bet surface.
Why this is the edge surface (thesis)
The forecast target is well-defined and skill-rich: next-day daily MAX 2 m temperature at a specific ICAO/METAR station, rounded to whole °C. NWP next-day station Tmax RMSE is roughly 1–1.5°C, right at the 1°C bucket resolution — so calibrated probability mass actually moves between buckets.
Four reinforcing edges:
- Station ≠ city systematic bias — the crowd anchors on the city; resolution is the airport station. The geographic/microclimate gap is exploitable.
- Calibrated predictive distribution — a properly calibrated distribution from NWP ensembles vs. the market’s implied prices.
- Whole-degree rounding + tight buckets — reward calibration; small distribution-shape differences map to tradeable price differences.
- Daily cadence — ~25–35 cities × daily → hundreds of repeated bets → an edge that is statistically validatable rather than anecdotal.
API access notes
- Gamma API is public, no auth for reads.
Keyword search
GET https://gamma-api.polymarket.com/public-search?q=<term>&limit_per_type=100
Returns .events[] (keyword search).
Full event (the useful one)
GET https://gamma-api.polymarket.com/events?slug=<slug>
Returns the full event with .markets[]. Each bucket market exposes: outcomes, outcomePrices, bestBid, bestAsk, spread, clobTokenIds, liquidity, and a description carrying the resolution source (the Wunderground ICAO station + URL).
For Agents — field availability quirk
The event/market
volumefield IS populated in search results. Butliquidity,volume24hr, andvolumeNumare null in search — they are only present on the/events?slug=detail response. Plan two calls: search to discover slugs, then/events?slug=per event for the full book/liquidity picture.
Relationship to polymarket-fetch
The sibling polymarket-fetch Rust workspace already implements the Polymarket plumbing this project can lean on:
- Gamma API client patterns (the same
gamma-api.polymarket.comhost). - CLOB order books +
clobTokenIdshandling. - On-chain fill decode via Polygon
OrderFilledlogs (see copy-trade-lane) — relevant if/when execution moves on-chain. - Telegram lifecycle notifications (telegram) and the deploy path on
ops-vm(polymarket-fetch-deploy).
Wallet auth and order-placement infrastructure for actually betting (vs. polymarket-fetch’s read/copy posture) is a weather-bet design question still being decided — this note only captures the market facts, not those decisions.