☀️ 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
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.
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).
🤖 How the auto-trading flow works
Read the signal
The app compares the forecasted bucket with the live Yes price and the real order-book depth.
Apply the rules
Each market must pass the same gates as Auto: edge, win%, price, fillable depth, market-agrees, and daily caps.
Build a proposal
The app sizes the surviving candidates and ranks them. This is still a proposal, not an automatic order.
Send an alert
The button posts the top rule-passing proposal to the local auto-trade server.
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.
Per-city bucket ladders — Yes price vs model odds
🧮 How it's calculated
- 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
| City | The 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. |
| Region | Geographic region. Click the header to group cities by region. |
| Predicted peak | The 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 rec | Compares 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. |
| Turndown | Two 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 far | The highest temperature recorded so far today at the settle station — the number the market resolves on. |
| Yes bucket | The Polymarket temperature bucket the predicted peak lands in — the bucket a Yes bet backs. |
| Yes price | The live "Buy Yes" ask on that bucket (falls back to the last trade when the book is empty). |
| Pays | Payout 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. |
| Edge | Model 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 edge | Edge 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. |
| Stake | A bankroll-aware suggested bet size (¼-Kelly). Set your bankroll above the table. |
| Market | agree = the models' bucket is also the market's favourite (higher confidence). differ = they disagree. |
| Status | Where 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 reading | The 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 at | When 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 record | This 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.