Isotherm forecasts the day’s high temperature and trades on it.
Isotherm trades Kalshi’s daily temperature markets in 24 U.S. cities, around the clock, on free weather data. The night before, its forecast is 0.35 °F more accurate than NOAA’s flagship forecast, and it only bets where the market’s price is off.
- Market’s chance of 84–85°
- 27%
- Isotherm’s chance
- 38.5%
- Bought 5 YES at 28¢, an 8.5¢ edge after the fee
- Settled at 84°F for +$3.50
A day of temperatures across the lower 48, hour by hour from NOAA’s 3 km HRRR model. Lines are isotherms, 10 °F apart.
A live dashboard, on any phone
A private dashboard shows the account, the money at risk against every limit, profit by day, and which cities and bet types are working. The trading server publishes encrypted numbers every minute and the page decrypts them on the device, so it stays live without a laptop running anywhere.
How it works
Free data, lined up in time
Isotherm reads NOAA’s model guidance and its 3 km HRRR model, ECMWF’s open data, live airport sensors and the official climate reports. All of it is free.
Each model run comes out minutes to hours after it starts. An input only counts once it was really public, so the model never trains on anything it couldn’t have seen live.
Drag the clock to see which parts of the 8 AM model runs are out yet.
A forecast of the exact number
A LightGBM model gives a chance for every whole degree the official report could show. It works from offsets to the latest NOAA blend, so one model serves all 24 cities.
It sharpens through the day, and once the day starts it knows the high can’t fall below what the sensors already saw. The night before, it misses by 1.57 °F on average, against 1.92 °F for the best single NOAA product.
Chance the official high lands on each whole degree, °F
Blended with the market
The market is sharper than any single forecast, so Isotherm pools the two instead of picking one. Each 2 °F bracket’s blended chance is the market’s price and the forecast, each raised to a weight.
The weights are refit every week on the last 90 days, one set per decision time. Move them to see how the blend shifts, and how little the forecast needs to move it.
Trades inside hard limits
Isotherm buys only where the blended chance beats the price by Kalshi’s fee plus a safety margin. Most of the time nothing clears it, and it waits.
Every order then has to fit caps on the bracket, the city, the whole account and the group of nearby cities whose weather moves together. It goes out immediate-or-cancel, and resting orders expire within minutes if the server goes quiet.
This table follows the weights you set in Blend. The margin here is 5¢.
| Bracket | Price | Blend | Edge after fee | Action |
|---|
Settled by the official report
The next morning the National Weather Service publishes the day’s high. The bracket that holds it pays $1 a contract and the rest pay nothing.
Every settled day goes back into the training data, and a dashboard on the phone shows the result within a minute.
National Weather Service daily climate report
A day in the market
Every city gets a new market each day, split into 2 °F brackets. Isotherm re-forecasts at set times, keeps its quotes fresh in between, and holds every position until the official report settles it. Times are Eastern.
The day before, Kalshi lists the brackets for tomorrow’s high.
Early bets, where the forecast’s edge over the market is largest.
Night-before forecasts from the evening model runs.
On the day, forecasts refresh every three hours and live sensor readings rule out brackets the high has passed.
Trading closes.
The next morning, markets settle on the National Weather Service’s daily climate report, East Coast first.
Built with
- Python
- LightGBM
- NumPy and pandas
- SciPy
- SQLite
- eccodes (GRIB2)
- Kalshi REST and WebSocket APIs
- AWS EC2
- systemd
- Web Crypto
- GitHub Pages
Run it yourself
Paper trading needs no Kalshi account. Isotherm reads Kalshi’s live public order books and simulates its fills against them, so you can watch it quote and trade without putting in a dollar.
git clone https://github.com/shourya0mehta/isotherm
cd isotherm && pip install -r requirements.txt
python -m wxbot run --config config/example.yaml --mode paper --minutes 30
The trained models stay private, so the public copy trades on its market-based fair value until you train your own with the included research scripts.