7-day temperature · forecast high (μ)
Precipitation probability (NWS POP)
Recommended bets
Contracts where the model sees an actionable edge (≥10pp & ≥5¢ EV), ranked by expected value.
KXHIGHNY · model vs market
Model P(YES) uses forecast high μ and lead-time σ (not official NWS probabilities).
Prices from data/kalshi-snapshot.json (refreshed by GitHub Actions).
Override YES or NO ask in ¢ to test scenarios.
How to read this
- Model P — P(YES) from Normal(μ, σ) vs Kalshi strike rules (strict >/<)
- μ — NWS daytime forecast high; settlement is KNYC Daily Climate Report max
- σ / bias — uncalibrated priors (2.0–3.5°F) unless Calibration tab is enabled; empirical values range 3.8–6.4°F with +1.6°F bias
- Signal — Buy YES/NO when edge ≥10pp and EV ≥5¢ per $1 (after fee buffer)
- Enable empirical calibration in the Calibration tab for historically-fit σ and bias.
Model calibration
Enable Empirical Calibration to replace the default priors with values fit to ~5 months of KXHIGHNY history (Jan–May 2026). Calibrated σ values are 1.5–3× larger than the priors and grow with lead time; bias of +1.59°F corrects the systematic gap between NWS forecast highs and official KNYC settlement values.
Calibration curve (historical)
Win rate vs implied probability — perfect calibration follows the diagonal.
Forecast error by lead time
Historical σ and systematic bias by lead day, derived from past KNYC zone forecasts.
What this tool does
WeatherBetter compares a simple weather model against Kalshi's KXHIGHNY market — the daily high temperature in NYC, which settles on the official KNYC (Central Park) Daily Climate Report maximum. It pulls the live NWS forecast, builds a probability for each Kalshi temperature contract, and flags where the model disagrees with the market price enough to suggest a buy.
Quick start
- Hit ↻ Refresh (top right) to load the latest NWS forecast and Kalshi snapshot.
- On Forecast, scan the 7-day high/low and rain outlook.
- On Edge finder, each row is one Kalshi contract. The Signal column is the headline: green Buy YES / teal Buy NO badges mark where the model sees value.
- Type a price in a YES ¢ / NO ¢ box to test “what if the ask were X?” scenarios.
- Click a contract name to expand its exact resolution rules.
Forecast tab
- Metric cards — today’s forecast high (μ), tonight’s low, rain chance (NWS POP), wind.
- 7-day temperature — daily forecast high/low range (capped at the ~7-day NWS horizon).
- Precipitation — NWS probability of precipitation per day.
Edge finder — columns
- Contract — the Kalshi strike (e.g. “78° to 79°”). Click to expand resolution rules.
- Model P — the model’s P(YES) for that contract. Shown clamped 1–99% for readability; the edge/EV uses the exact value.
- YES/NO ask — current Kalshi ask prices (¢). “—” means that side has no real liquidity.
- YES ¢ / NO ¢ — type an override to price a hypothetical ask (persists; bypasses the illiquid flag).
- Signal — the recommendation (see badges below).
Edge finder — date headers & badges
- Date header — shows μ, its source (period = NWS daytime forecast, grid = gridded-max fallback), σ, and lead days. “μ unavailable” = NWS down; “beyond forecast horizon” = date past the ~7-day NWS reach.
- Buy YES / Buy NO — edge ≥10pp and EV ≥5¢ per $1 after the 2¢ fee buffer.
- No edge — model and market roughly agree, or the edge is too small.
- Illiquid — no tradeable two-way book (grayed out). Enter an override to test it anyway.
- Stale — settlement date is in the past (from a stale snapshot).
- Banners — a red banner warns when the snapshot is >45 min old or NWS is unavailable.
How the model works
- μ — NWS daytime forecast high for the date (°F). Settlement is the official KNYC Daily Climate Report max.
- σ — forecast-error spread by lead time: 2.0°F day-of, 2.5°F (+1d), 3.5°F (2d+).
- P(YES) — treats the high as Normal(μ, σ) and computes each contract’s strike probability, with a ±0.5°F continuity correction (temps settle in whole degrees). Three rule types:
greater,less, inclusivebetween. - Signal — compares model P(YES) to the market ask; flags a buy when edge ≥10pp and EV ≥5¢ per $1 after a 2¢ fee/spread buffer.
Known limitations — read before trusting a signal
- Priors are uncalibrated by default — enable the Calibration tab toggle to use historically-fit σ (3.8–6.4°F) and +1.59°F bias. With priors on, long-lead signals are overconfident.
- Long-lead overconfidence (priors only) — prior σ is flat 3.5°F for leads ≥2d; real error grows to ~6°F by day 7. Calibrated σ fixes this.
- Calibration window — fitted on Jan–May 2026; may not generalize to summer/winter temperature ranges where forecast behavior differs.
- Per-contract pricing — each contract is scored independently. A complete strike ladder sums to ~100%, but a partial snapshot won’t, and cross-date correlation isn’t modeled.
- Buy-only — signals evaluate buying at the ask. Exiting an existing position fills at the bid and isn’t modeled.
Disclaimer
This is a transparent heuristic for research and education — not financial advice, and not calibrated to historical outcomes. The market can be right and the model wrong. Trade at your own risk.