Live METAR, 36 forecast models, GHCNh climate history and NWS CLI products, fetched on demand from public sources, in your runtime, and resolved to the exact station each weather market settles on, in the unit it settles in. It won't hand a backtest data that didn't exist yet.
AWC, ~5-min cadence
36 models via Open-Meteo
GHCNh hourly history
Official NWS daily text
Every forecast carries the moment it was issued via a conservative per-cycle
issued_at lower bound, evaluated at fetch time, so a backtest never
sees a number that didn't exist yet. Switch any model on the timeline.
US extremes in °F, international in °C, read straight from each station's own report.
The market's own. US extremes resolve in °F; international stations in °C. The reading adapts to the settlement unit automatically, so live values line up with the contract's buckets, never a converted approximation.
Every forecast row carries a conservative issued_at lower bound derived per model cycle, applied at fetch time. Training pairs only ever see forecasts that could have existed at that instant, so a backtest can't peek at the future.
Live AWC METAR, the IEM ASOS archive and GHCNh, fetched on demand. When sources overlap on the same hour, a deterministic client-side dedup tiebreak (AWC > IEM > GHCNh) picks one survivor in your process, and every row keeps the timestamp of the high and the identity of the source it came from.
Every source is public, fetched on demand from AWC, IEM and GHCNh and normalized in your own runtime, with an optional local cache.