Kalshi Weather Edge: NWS Forecast vs Market Odds
Pricing
$2.00 / 1,000 temperature ranges
Kalshi Weather Edge: NWS Forecast vs Market Odds
Every open Kalshi daily high and low temperature market priced against the official National Weather Service forecast and today's station readings: forecast probability for each range, the market's price, and the edge after Kalshi's fee. Official APIs only, no key.
Pricing
$2.00 / 1,000 temperature ranges
Rating
0.0
(0)
Developer
Mariam Ahmed
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Every open Kalshi daily high and low temperature market, in every city Kalshi lists, priced against the official National Weather Service forecast and today's station readings. For each temperature range you get the forecast probability, the market's price, the difference, and the edge on Yes and No after Kalshi's fee.
Other Kalshi weather Actors return bracket prices. A price only tells you what traders think. This one puts what the forecast says next to it, range by range, for 24 cities at once.
What does this do?
For each city and day with an open market, it:
- reads the market's six ranges and their prices from Kalshi's public API
- finds the exact NWS climate station the market settles on (Central Park for New York, Midway for Chicago…)
- reads that station's NWS hourly forecast and every reading so far today
- works out the chance the day's high (or low) lands in each range, and compares it with the price
Chicago daily high, 24 Sep 2026 · station KMDW (Midway) · 62°F so farNWS forecast peak 70°F in ~6 h (includes a +2.6°F correction from the latest reading)range forecast market yes ask edge after fee65° or below 3.9% 2.0% 0.03 Yes +0.766° to 67° 12.9% 7.5% 0.09 Yes +3.468° to 69° 26.9% 35.5% 0.36 No +6.570° to 71° 30.4% 52.5% 0.54 No +18.972° to 73° 18.6% 4.5% 0.05 Yes +13.274° or above 7.3% 0.5% 0.01 Yes +6.3
The forecast and the market agree on the most likely range, 70° to 71°. They disagree on how sure to be: the market puts 52.5% on it and the forecast 30.4%. That disagreement is where every "edge" in this table comes from; see Read this before trading on it.
Who is it for?
- Kalshi weather traders: the forecast comparison you'd otherwise do by hand, for every city, in about a minute
- Bot and model builders: clean, scheduled data with prices, forecast, observations and fees in one row
- Forecasters and researchers: a daily record of how the market's view compares with the NWS
What data do you get?
One row per temperature range:
| Field | What it tells you |
|---|---|
city, marketType, day, range | Which market: "New York City, high, Sep 24, 66° to 67°" |
forecastProbabilityPercent | The model's chance of the day ending in this range |
marketProbabilityPercent | The market's view: bid/ask midpoint, or last trade |
differencePercent | Forecast minus market, in percentage points |
yesBid, yesAsk, noBid, noAsk, lastPrice | Live prices in dollars |
yesEdgeAfterFeePercent, noEdgeAfterFeePercent, bestSide | Forecast probability minus the price you'd pay, minus Kalshi's fee |
expectedF, forecastRemainingF, observedSoFarF | The expected final value, the forecast for the rest of the day, and what the readings already show |
sigmaF, hoursToForecastPeak, observedGapF, forecastCorrectionF | The uncertainty and correction the model used, so every number can be checked |
volume, volume24h, openInterest | Contracts traded and open |
station, climateSite, climateDayStart, climateDayEnd | Exactly what the market settles on, and when |
The run summary lists each city-day with the forecast's favourite range next to the market's.
How the probability is worked out
The day's high is the higher of two things: the highest reading so far, and the highest temperature still to come. The first is already known. The second is the NWS hourly forecast for the rest of the climate day, which is uncertain. The model treats it as normally distributed around the forecast. The low works the same way in reverse.
Four details decide whether the numbers mean anything, and all four are handled:
- The right day. NWS climate days run midnight to midnight local standard time, so in summer the day ends at 1 a.m. by the clock. Readings are counted in that window, not the calendar day.
- The right readings. Many airports report every five minutes but in whole °C. A reading of 24°C could mean anything from 74.3°F to 76.1°F, which spans two Kalshi ranges. Each reading is treated as the range it could mean, and only what the readings prove counts as observed.
- A forecast that has drifted. A forecast issued at 4 a.m. can already be 3°F off by 7 a.m. The model compares the latest reading with the forecast for that hour and carries the difference forward, fading over the next few hours (
forecastCorrectionFshows it). Without this, a Phoenix low at 85°F would be "forecast" to fall to 79°F within the hour. - The gap to the official number. The settled high comes from the station's continuous record, which can peak between readings. The model allows for that gap: small for five-minute data, about 1°F for hourly-only stations. It uses the six-hour extremes in METAR reports where they cover the day.
Read this before trading on it
The edge depends on one assumption: how far NWS forecasts miss. The default is 3.5°F for a peak a day away, narrowing as the peak gets closer (about 2.5°F six hours out). This is a rule of thumb, not a calibration.
On a typical day the market is more confident than this model. It prices one range at 50–60%, while a 2.5°F uncertainty puts at most about 30% on any 2°F range. So most edges this Actor shows are of one kind: cheap tail ranges look underpriced and the favourite looks overpriced. Maybe the market is overconfident. Maybe traders simply know more, from high-resolution models the NWS point forecast doesn't reflect. This Actor cannot tell you which.
Before risking money:
- run it on a schedule and compare with how markets actually settle over a few weeks
- try the forecast error setting at 2°F and at 5°F, and see which edges survive both
- treat an edge as a question to check, not an answer
No picks, tips or trading advice. The probabilities are a model estimate from public forecasts.
Other limits
- Settlement source. Kalshi settles these markets on The Weather Company's reported value for the named NWS climate station. This Actor uses NWS data for the same station, so rounding and late corrections can differ.
- US cities only. Kalshi also lists some international cities, but the NWS covers only the US, so those are skipped.
- Markets appear the day before. Kalshi opens each day's markets roughly a day ahead, so a run usually covers today, and tomorrow once listed.
- Thin markets. Some ranges trade a few contracts a day, with wide spreads. The midpoint of a 5¢/87¢ spread is not a real price; check
yesBid,yesAskandvolume.
Data sources and terms
Both sources publish this data for exactly this kind of use:
- Kalshi public API: market data, no key or account needed
- US National Weather Service API (api.weather.gov): US government data, in the public domain
Not affiliated with Kalshi or the National Weather Service.
Example run
| Measured on 24 September 2026, from Apify | Result |
|---|---|
| City-day markets | 48 (24 highs, 24 lows) |
| Ranges priced | 288, every one with a forecast probability |
| NWS stations read | 24 |
| Run time, memory | 96 s, 66 MB |
| Failures | none |
| Forecast and market pick the same favourite range | 30 of 48 city-days |
Pricing
$0.002 per temperature range. A full run of every city, highs and lows (about 290 ranges), costs about $0.58. One city's high is $0.012. With "only ranges where the forecast beats the price" switched on, you pay only for the ranges returned.
Input
| Field | Meaning |
|---|---|
| Markets | Highs, lows or both |
| Cities | Only these cities; NYC, LA, DC and SF work. Empty means all |
| Forecast error one day out | The uncertainty assumption; see above |
| Only ranges where the forecast beats the price | Keep only positive edges after fees, largest first |
| Minimum edge | How large that edge must be, in percentage points |
Integrations
Results export to JSON, CSV, Excel and Google Sheets, or go straight into a sheet, bot or dashboard through the Apify API, webhooks, Make, Zapier and n8n. Schedule it hourly through the day: the forecast updates, the readings build up, and the probabilities tighten as the peak passes.