Kalshi Weather Edge: NWS Forecast vs Market Odds avatar

Kalshi Weather Edge: NWS Forecast vs Market Odds

Pricing

$2.00 / 1,000 temperature ranges

Go to Apify Store
Kalshi Weather Edge: NWS Forecast vs Market Odds

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

Mariam Ahmed

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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:

  1. reads the market's six ranges and their prices from Kalshi's public API
  2. finds the exact NWS climate station the market settles on (Central Park for New York, Midway for Chicago…)
  3. reads that station's NWS hourly forecast and every reading so far today
  4. 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 far
NWS forecast peak 70°F in ~6 h (includes a +2.6°F correction from the latest reading)
range forecast market yes ask edge after fee
65° or below 3.9% 2.0% 0.03 Yes +0.7
66° to 67° 12.9% 7.5% 0.09 Yes +3.4
68° to 69° 26.9% 35.5% 0.36 No +6.5
70° to 71° 30.4% 52.5% 0.54 No +18.9
72° to 73° 18.6% 4.5% 0.05 Yes +13.2
74° 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:

FieldWhat it tells you
city, marketType, day, rangeWhich market: "New York City, high, Sep 24, 66° to 67°"
forecastProbabilityPercentThe model's chance of the day ending in this range
marketProbabilityPercentThe market's view: bid/ask midpoint, or last trade
differencePercentForecast minus market, in percentage points
yesBid, yesAsk, noBid, noAsk, lastPriceLive prices in dollars
yesEdgeAfterFeePercent, noEdgeAfterFeePercent, bestSideForecast probability minus the price you'd pay, minus Kalshi's fee
expectedF, forecastRemainingF, observedSoFarFThe expected final value, the forecast for the rest of the day, and what the readings already show
sigmaF, hoursToForecastPeak, observedGapF, forecastCorrectionFThe uncertainty and correction the model used, so every number can be checked
volume, volume24h, openInterestContracts traded and open
station, climateSite, climateDayStart, climateDayEndExactly 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 (forecastCorrectionF shows 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, yesAsk and volume.

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 ApifyResult
City-day markets48 (24 highs, 24 lows)
Ranges priced288, every one with a forecast probability
NWS stations read24
Run time, memory96 s, 66 MB
Failuresnone
Forecast and market pick the same favourite range30 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

FieldMeaning
MarketsHighs, lows or both
CitiesOnly these cities; NYC, LA, DC and SF work. Empty means all
Forecast error one day outThe uncertainty assumption; see above
Only ranges where the forecast beats the priceKeep only positive edges after fees, largest first
Minimum edgeHow 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.