Live System

Weather Edge

A quantitative trading system that finds mispriced daily high temperature brackets on Kalshi prediction markets by fusing 194 AI and physics-based weather model forecasts against real-time market prices.

Live · Real Moneyupdated 5m ago
Bankroll$117.59
Return since $100 deposit+17.6%
Equity
Huntingwatching 5 stations now
Best tradeBought at 7.8¢, sold at 99¢ minutes after the climate report printed — +12.7x · 20 contracts · 2026-07-04
Signals settled1
Hit rate0%
Mean ¢/contract-50¢
Pending settlement4
The weekly scorecard is published even when it's unflattering — measuring honestly is the point.
The edge: U.S. weather markets settle on official NWS climate reports that publish at known times each day. This system reads every report within two minutes of publication across 40 city markets and flags prices the market hasn't corrected yet — then a human decides. Runs 24/7 on a $7/month server. Personal experiment with a deliberately small bankroll — not financial advice.

Win Rate

100%

2 of 2 trades profitable

Total PnL

+$2.17

Realized across all closed positions

Avg Confidence

92

Only trades scoring 90+ are executed

Cities Covered

5

NYC, CHI, DEN, MIA, LAX

Ensemble Models

194

Members across 5 model families

Uptime

24/7

Cron-scheduled scans 5x daily

How It Works

Every day, Kalshi lists binary contracts on daily high temperatures for 5 US cities. The market is inefficient because most participants rely on a single NWS point forecast. Weather Edge exploits this by building a full probability distribution from 194 ensemble forecast members, applying physics-based corrections, and finding brackets where the true probability significantly exceeds the market price.

1

Ensemble Ingestion

Pull 194 forecast members from 5 model families via Open-Meteo API

2

KDE Probability Engine

Gaussian kernel density estimation smooths discrete members into a continuous PDF

3

Physics Corrections

Apply wind mixing, wet bulb depression, and rounding adjustments

4

Market Comparison

Compare model probability against Kalshi bid/ask to find mispriced brackets

5

Confidence Scoring

All 5 checks must pass (ensemble spread, model agreement, NWS alignment, observations)

6

Automated Execution

Limit orders placed at bid+1¢ for maker fee (0%). Position monitor handles exits.

Alpha Strategies

A

Midnight High

Post-frontal cold advection sets the daily high at midnight before cold air arrives. The system detects when overnight temps exceed afternoon forecasts.

B

Wind Mixing Penalty

Strong winds prevent super-adiabatic surface heating. Gusts above 15 mph mechanically cap temperatures 1-2°F below clear-sky forecasts.

C

Rounding Arbitrage

NWS rounds to the nearest whole degree. A physics model suggesting 34.4°F means the reported high lands in a different bracket than 34.5°F.

D

Wet Bulb Depression

Daytime precipitation probability above 40% caps the high below the dry-bulb forecast through evaporative cooling.

E

NWS vs Ensemble Divergence

When the NWS point forecast diverges more than 2°F from the 194-member ensemble mean, the ensemble captures newer data the forecaster may have missed.

Risk Management

Half-Kelly Sizing

Max 10% of balance per trade. Half-Kelly criterion balances growth with drawdown protection.

Automated Exits

Freeroll at 2x, efficiency exit at 90¢, trailing stop. Position monitor runs every 5 minutes.

7 Pre-Trade Guards

Kill switch, daily trade count, circuit breaker, intraday drawdown, correlated exposure, bot window, duplicate order guard.

Tech Stack

Python 3asyncioKalshi API (RSA-PSS)Open-Meteo Ensemble APINWS APIKDE (scipy)Claude AIDiscord WebhookscronECMWF AIFSECMWF IFSGFSICONGEM

Trade Log

Real trades executed by the system. Every position is logged with full transparency — entry price, exit strategy, confidence score, and P&L.

This is a personal research project. Not financial advice. Prediction markets carry risk of total loss. Past performance does not guarantee future results. The system trades with a small account to validate the quantitative approach.