☀️ HeatCheck — Today's Yes
Live · runs in your browser — no account, no tracking

☀️ Today's Yes

This page = Yes bets (the model's cheap Yes). The dashboard = No bets.

Today's predicted peak vs what Polymarket charges for Yes.

For each city: the models' predicted peak temperature today, next to the live Polymarket Yes price for the bucket that peak lands in — plus the models' own win chance, so you can see at a glance where the Yes looks cheap and where the market has it right. ← Back to the No-bet dashboard

Bankroll ($) ?
Actions
Cities
Simple shows the essentials; Advanced adds every column.
🔔 agree ⚠ differ recorded ↷ rest of day floored + / − edge 🎯 buy peak in, still <90¢, market agrees near a bucket edge (coin-flip) edge phantom — not fillable / market disagrees ▤ $ order-book depth fillable · ✖ dead empty book

Send a bet to your own local trading server. This button hands the top rule-passing proposal to autotrade.py running on your PC (localhost:8799) — it never talks to Polymarket directly from the browser.

ℹ️ About the Username / Password below: this is the lock on your own local server, which you set yourself with python autotrade.py set-password. It is not your Polymarket login, not your wallet, not any exchange account — it only proves to your own PC that it's you sending the alert. Leave both blank if you haven't set a password (single-user machine).
Live trade
Mode Decided by the 🛡️ Control tab, not here. The server stays in TEST until you arm LIVE there; only then does an alert become a real order.
Server username
Server password
Amount ($)
Max price
Status
The button sends the top proposal that passes the same rules as Auto. In test mode it stops safely; in Go live mode it proceeds to the live execution path.
🤖 How the auto-trading flow works
Step 1

Read the signal

The app compares the forecasted bucket with the live Yes price and the real order-book depth.

Step 2

Apply the rules

Each market must pass the same gates as Auto: edge, win%, price, fillable depth, market-agrees, and daily caps.

Step 3

Build a proposal

The app sizes the surviving candidates and ranks them. This is still a proposal, not an automatic order.

Step 4

Send an alert

The button posts the top rule-passing proposal to the local auto-trade server.

Step 5

Execute or stop safely

In test mode the server stops before any real order; in Go live mode it continues to the live execution path.

The human remains the trigger. The app prepares the signal; the server and your safety settings decide whether that signal becomes a real order.

Edge & Net edge assume the forecast is right.

🧮 How it's calculated
today's predicted peak vs the live Polymarket Yes price. The forecast comes from the model that has hit best at each station; the recorded high is from Wunderground/NOAA.
  • Predicted peak — the day's max from the best-performing model at this station (lowest 14-day error there): its own hourly curve, which the ✓ source link opens so you can verify it, floored at the high already recorded at the settle station (▲ marks a floored value). Falls back to Open-Meteo best_match where there's no skill record yet.
  • Peak: fc vs rec — compares the two sources on when the peak is. Once the recording has peaked, 🔔 agree = both point to the same hour (a strong "it's in" signal); = they disagree; "rec —" until the day peaks.
  • Peak at — the forecast hour of the max (station-local · Norwegian), re-anchored to the clock each refresh: ↷ switches to the rest-of-day peak once the day-max hour passes, then "day over".
  • Yes price · Pays — the live "Buy Yes" ask on that bucket (last trade if the book is empty); Pays = 1 ÷ price.
  • Model win% · Edge · Net edge — win% = share of ensemble members whose (floored) high lands in the bucket; edge = win% − price; net edge subtracts a fee/slippage cost. Buckets the recorded high has already passed are marked dead.
  • Provider detail — the per-city fold shows each forecaster's number + 14-day accuracy at the station (🏆 = most accurate). Informational — it no longer moves the prediction.
  • Freshness — auto-refreshes every 5 min (Yes prices + recorded high live each cycle). Early in the local day the spread is wide and value is possible; late in the day the market has mostly converged.

Informational only — you place any bets yourself.

❓ Column guide — what each field means
CityThe market's city, with its resolution station (airport) in brackets. The two links are the forecast source (Open-Meteo hourly chart) and the settle source (Wunderground / NOAA station) so you can verify both.
RegionGeographic region. Click the header to group cities by region.
Predicted peakThe day's max from the best-performing model at this station (the one with the lowest 14-day error here — its own hourly curve, which the ✓ source link opens), floored at the high already recorded (▲ = floored). Falls back to Open-Meteo best_match if there's no skill record yet. data HH:MM = when the forecast behind it was fetched.
Peak: fc vs recCompares the two sources under the city name — Open-Meteo (forecast) vs Wunderground (recorded) — on when today peaks. 🔔 peak agree = once the recording has peaked, both point to the same hour (a strong "the peak is in" signal — the alert). = they disagree on the timing. "fc HH:MM · rec —" = the recording hasn't peaked yet. (The full all-model temperature spread is in the per-city detail below.)
Peak at (local · NO)The forecast hour of the day's maximum, in station-local and Norwegian time. recorded = the measured high already tops the forecast, so the peak is in practice set (measured time shown). ↷ = the day-max hour has passed; showing when the rest of the day peaks.
TurndownTwo lines. Top = measured (the fact): the first recorded reading at the settle station that came in below today's recorded high — temperature, local clock time, drop size (↓) and Norwegian time. A peak is only a peak once a later measurement is lower, so this is a fact from the source confirming the top is behind us — 🔔 once the day-peak is genuinely confirmed (declined and past the forecast peak, so a pre-dawn dip doesn't count). That confirmation is the buy signal. measured: no drop yet = a high is recorded but nothing below it yet; measured: no live feed = no settle-station readings for this city. Bottom = pred (the forecast): the first forecast hour below the peak — a heads-up for when to expect the measured drop ("exp" = not reached yet). A forecast, not a fact.
High so farThe highest temperature recorded so far today at the settle station — the number the market resolves on.
Yes bucketThe Polymarket temperature bucket the predicted peak lands in — the bucket a Yes bet backs.
Yes priceThe live "Buy Yes" ask on that bucket (falls back to the last trade when the book is empty).
PaysPayout multiple if it wins: 1 ÷ price. 25¢ pays 4× (a $100 bet returns $400).
Model win%The estimated chance the bucket wins — now calibrated: the spread comes from the model's real recent error at this station (not the over-confident raw ensemble), and it tightens as the day peaks (a "nowcast": once the recording has topped out, the outcome is near-certain). A 🎯 buy badge appears when the peak is in, the market agrees on the bucket, and the Yes is still 30–90¢. A next to the prediction means it sits right on a bucket edge — a coin-flip with the neighbour, so the win% is genuinely less sure than it looks.
EdgeModel win% − Yes price, in points. Positive = the models think it's underpriced. Assumes the forecast is right. A struck-through edge is a phantom — it exists on paper but isn't real value: either there's no fillable order book, or the market has settled on a different bucket (so your reading is likely behind). Phantom edges are demoted, never highlighted. The Yes-price cell also flags a ✖ dead or ~ thin book.
Net edgeEdge after a fee/slippage cost (≈2¢, more when the order book is thin). The honest number: a positive edge that turns negative here isn't really worth it.
StakeA bankroll-aware suggested bet size (¼-Kelly). Set your bankroll above the table.
Marketagree = the models' bucket is also the market's favourite (higher confidence). differ = they disagree.
StatusWhere today's peak is relative to the clock: 🔒 locked (recorded high tops the forecast — bucket decided) · 🟠 waiting for lock (forecast peak hour passed, high hasn't topped it yet) · 🔔 ready (peak within ~90 min) · in ~Xh (further out) · day over. The chips above the table count these.
Their clock · last readingThe station's local wall-clock right now, and how long ago its last observation was recorded (⏱ Xm ago) — so you can see how fresh the recorded high is. Turns red past 2h.
Locked atWhen the recorded high first topped the whole forecast curve — the moment the bucket is in practice decided (🔒 time · temp · Norwegian time). "still climbing" = not locked yet.
+1h held?Did the top hold the hour after the locked peak? ✓ survived = readings ~1h later stayed below it · ✗ beaten = matched or exceeded · — = too early.
Lock held?Has the locked high stood? ✓ held = 2h+ past the peak with temperatures clearly below · settling = past the peak but still at the high · — = too early.
Track recordThis station's settled No-bet history from the daily log: win-rate · average price paid · average P&L per $1. From the dashboard's No bets (not this page's Yes bets) — a general read on how the model-vs-market calls settle here. Needs ≥3 settled days.

Covers every location Polymarket runs a daily temperature market for (51 cities, grouped by region — a few, like Jinan & Zhengzhou, have no current daily market and show "no open market"). "Today" = your local date; for Asian cities late in their local day the market is often close to resolved (or already closed). Data: Open-Meteo ensemble + 6 models + yr/MET Norway (+ NWS for US cities), live Polymarket Gamma API, and the recorded high from each market's named resolution source: Wunderground for 44 of the 51 cities, NOAA for Moscow, Istanbul & Tel Aviv (read from the NOAA/IEM feed), and the HK Observatory's own reading for Hong Kong (no live floor there). Yes price = live best ask (falls back to last trade when the book is empty). A Yes bet on one bucket is a narrower, riskier bet than the dashboard's No bets — the models must get the exact bucket right. Informational only, not betting advice.