A blended NWS + Open-Meteo model, validated on 67,000+ historical observations, returning calibrated temperature exceedance probabilities for Kalshi and prediction market traders.
Supply a city, strike temperature, and direction. Get back a calibrated probability you can compare against the Kalshi market price to find edge.
We fetch live data from NWS (60%) and Open-Meteo (40%), blending them into a single reliable forecast. Source disagreement widens sigma automatically.
Sigma is fixed at 2.7°F based on backtest calibration across 67,000 observations — not a guess. Validated MAE of 2.12°F across 8 cities, full year 2024.
P(temp > strike) = 1 − Φ((strike − forecast) / σ). Returns a probability you can directly compare to the Kalshi YES/NO price.
If model says 72% and Kalshi offers YES at 58¢ → edge = 14%. Size via Kelly criterion. That's the whole loop.
One endpoint, one key, no SDKs required. Pass your API key in the X-API-Key header.
GET /v1/probability Host: api.alphaweather.io X-API-Key: kw_your_key_here Query params: city NYC strike 58 direction above temp_type high (high|low) date 2026-03-28 (optional) curl example: curl -H "X-API-Key: kw_..." \ "https://api.alphaweather.io/v1/\ probability?city=NYC&\ strike=58&direction=above"
GET /v1/cities # full list with lat/lon GET /v1/usage # your call counts GET /health # no auth required
{
"city": "NYC",
"date": "2026-03-28",
"strike": 58.0,
"direction": "above",
"temp_type": "high",
"model_prob": 0.721043,
"forecast": 61.4,
"sigma": 2.7,
"nws_temp": 62.0,
"om_temp": 60.5,
"source_agreement": true,
"blend_weights": {"nws":0.6, "om":0.4},
"hours_to_settlement": 31.2,
"model": "NWS-OM-blend-v1",
"disclaimer": "For informational purposes only."
}
We backtested against Open-Meteo Historical Forecast API (archived GFS model runs) vs. actual temperatures across 8 cities, full year 2024. The optimal sigma was found by minimizing Brier score — not assumed.
| Horizon | Observations | MAE | Brier Score | Old σ | Calibrated σ | Improvement |
|---|---|---|---|---|---|---|
| 72h | 22,485 | 2.12°F | 0.1345 | 16.0°F | 2.7°F | 83% tighter |
| 48h | 22,428 | 2.12°F | 0.1344 | 12.2°F | 2.7°F | 79% tighter |
| 24h | 22,500 | 2.12°F | 0.1345 | 8.3°F | 2.7°F | 68% tighter |
Tighter sigma = sharper probabilities = larger detectable edge vs. market price. The old default sigma was 3–8× too wide, causing near-50% model probabilities on almost everything.
No credit card required to start. Free tier keys issued instantly.
Enter your email and we'll send your free API key. Upgrade to Pro anytime.
No spam. Key delivered by email within minutes.