Weather → Kalshi

Sensor cheat sheet

Reading types, ranked by authority

SourceWhat it isTrust
CLI FINALthe settlement document — tenths sensor, printed as a whole °Fthe law; nothing overrides it
CLI PRELIMresolver's running total, reissued a few times a dayauthoritative as of issuance; lags new extremes by hours
hourly-tenths obsthe :53 METAR carries a tenths-°C T-group (e.g. 37.8°C)exact reading — a hard bound on the day's extreme
6-hr METAR group00/06/12/18Z remarks: tenths max & min over the past 6hresolves the ±1° whole-°C ambiguity after each synoptic hour
whole-°C 5-min obsbetween hourlies, temps come as whole °C converted to °F±0.9°F fog — a range, not a reading; use as guaranteed bound
TWC feedThe Weather Company @ the hourly station — a different instrumentthe ONLY source for hourly settlements; can differ 1°+ from NWS

The whole-°C tick ladder ("it can only land on these")

5-min obs step in whole °C = 1.8°F ticks. If you see a value not on this ladder, it's a tenths (trustworthy) reading:

20°C68.024°C75.228°C82.432°C89.636°C96.8
21°C69.825°C77.029°C84.233°C91.437°C98.6
22°C71.626°C78.830°C86.034°C93.238°C100.4
23°C73.427°C80.631°C87.835°C95.039°C102.2

Each shown value really means that value ±0.9°F. One tick down = −1.8°F — a falling coarse station can't show you the temperature between ticks (73.4's next stop is 71.6, straight through a 72.5 strike).

Rounding & boundaries (the .5 rules)

  • CLI prints the nearest whole °F; .5 rounds UP. 99.5→100, 100.4→100, 100.5→101.
  • Every band's real boundary sits at X.5 on the raw sensor. "83° or above" trips at raw ≥82.5. "86° to 87°" spans raw 85.5–87.49.
  • "X to Y" includes both ends. "or above"/"or below" strikes are exclusive ("72° or above" = greater than 71).
  • TWC hourly settles its integer-rounded reading (proven: 73.9→74, 75.9→76). Same .5 rule, different instrument.
  • Highs only rise, lows only fall — struck one-sided bands lock; two-sided bands never lock before CLI FINAL (the continuous sensor can print past your obs max).

Freshness clocks

NWS obs: fresh <35m, stale >75m (🕐 chip at 45m) · TWC feed: stale >180m · hourly reading posts ~5-15m after the hour · 6-hr groups post just after 00/06/12/18Z · CLI prelim ~afternoon, FINAL ~7-8am local next day · forecast refetch 15m · alerts 5m.

Climate-day bells (when lows stop counting)

Eastern cities 1:00 AM EDT · Central 1:00 AM CDT · Denver 1:00 AM MDT · Phoenix midnight MST · Pacific 1:00 AM PDT. Legacy high series (KXHIGHCHI, KXHIGHNY, KXHIGHAUS, KXHIGHDEN, KXHIGHLAX, KXHIGHMIA, KXHIGHPHIL) stop trading 1 minute early (:59).

How to read this dashboard

The 30-second ritual

  1. Summary line — did the 🔒 lock count change?
  2. Amber-edged rows — data says you're right, market pays ≤ 0.45 for your side. Decide if you believe your data.
  3. Red-edged rows — data says you're losing (AT RISK or BUSTED), market still pays ≥ 0.30 for your side. If you believe your data, this is the best exit price you're likely to see.
  4. ⛈ verdicts — the forecast is coming for those; the chart's dashed line shows when.
  5. Red badges — new NWS warnings in your cities.
  6. CLI tiles — anything flip to FINAL? Those verdicts are now facts.

Only 🔒 means done. Everything else — including a 0.99 price — is still weather.

Header

Refresh live forces a fresh tracker run (obs + CLI + markets) instead of the 60s cache. ▶ Go live: prices every 20s, this city every 2 min, all position cities re-verdicted every 5 min. Climate day = the settlement day: midnight-to-midnight standard time (1 AM CDT in Chicago, 1 AM EDT east coast, midnight MST Phoenix). Lows can drop until that bell.

My positions

Rows sort by urgency: locks, on-track, at-risk, busted; amber edges float up. Columns:

  • Market on your side — the mid-price of your side (0–1) with an agrees / toss-up / DISAGREES badge. ▲/▼ in live mode = last real move, green when the market comes toward you.
  • Data check — reads in fixed order: value so far(CLI prints X°) when tenths round differently (the CLI number settles) → band status → (CLI PRELIMINARY/FINAL)NWS fcst extreme + hour (⛈ = storms in window) → ⚠ live warnings → 📝 your notes (hover to read).
  • Verdicts: 🔒 CONFIRMED = physically irreversible — the only "stop worrying". ON TRACK = winning now, still open. ON TRACK ⛅ = not there yet, forecast delivers it. AT RISK = needs movement. AT RISK ⛈ = winning now, forecast takes it away. BUSTED = physically dead.

Band boundaries (the .5 rule)

Daily markets settle on the CLI's integer: "X to Y" includes both ends; "or above"/"or below" strikes are exclusive. The sensor boundary sits at the rounding line: "83 or above" trips at a raw 82.5. Highs only rise, lows only fall — that's what makes one-sided struck bands locks, and two-sided bands never locks until CLI FINAL.

Tiles & chart

PRIMARY badge = the resolver sensor: "settles daily" = daily hi/lo (and rain) settle on this station's CLI; "settles hourly" = TWC at this station settles the hourly series. "cross-check" = reference only, never settles anything. NWS forecast tile = expected hi / expected lo + rain chance, straight from api.weather.gov (free, no key) — an anchor, not a resolver. CLI tile: FINAL = official · PRELIMINARY = running total · STALE = still yesterday's report. Resolver check OK = every market's own rules text cites the station we track — if MISMATCH ever shows, stop and read the rules. Coarse stations (whole-°C METARs) produce the x.4/x.2 artifacts; trust the CLI number. Chart: solid = obs (both stations for Chicago), dashed = NWS hourly forecast to the cutoff, hover for values, hours in standard time.

Markets, notes, run log

Markets show only events you hold (your bands highlighted, side in Mine; wide = untrustworthy mid; ON DECK = next hour, unopened) — tick "show all markets" for the board. Field notes: your own reads (fronts, outflow, sensor quirks) — they follow the city onto position rows as 📝. Run log = receipts: every run's readings and CLI status, for post-settlement forensics.

When sensors go dark 🕐

A 🕐 chip means the verdict is computed from a frozen feed. Staleness is directional: highs only rise and lows only fall, so a dead feed can only understate a high or overstate a low — your struck locks stay locked, but "IN band" claims may already be false. The CLI usually keeps recording even when the public METAR feed breaks, so the final report catches dips you never saw. If the instrument itself fails, the CLI prints M and the market's fallback rules (rules_secondary) decide — read them before assuming anything.

Chicago specifics

Daily + rain settle on Midway CLI; hourly settles on TWC at O'Hare, hours defined in EDT. TWC and NWS are different sensors and can disagree by a degree+; at strike edges only the resolver's own posted number decides.

Everything here is facts, not advice. Endpoints for scripts: /api/report · /api/positions · /api/prices · /api/forecast · /api/outlook · /api/alerts · /api/history · /api/notes

My positions

loading…

Today's observations

Paper desk — simulated, real quotes

loading…

Field notes — my data

Terminal report

loading…

Run log — today

History — daily extremes