Documentation
Complete reference for WeatherRadar AI — the precision weather prediction market trading platform.
Getting Started
WeatherRadar AI is a quantitative trading platform built for Kalshi temperature prediction markets. It ingests meteorological ensemble models, computes probability distributions over market strike buckets, and derives edge-based trade signals — all in a unified interface designed for both manual and autonomous execution.
The platform combines forecasts from GEFS, ECMWF, HRRR, NBM, and NDFD into a single blended fair value (FV) estimate per market series. By comparing this FV against live Kalshi bid/ask spreads, WeatherRadar AI surfaces actionable edges before market settlement. Calibration data is maintained continuously so that the signal quality score reflects real-world model performance.
Whether you are placing manual trades using the Trader interface or running fully autonomous execution on Elite, WeatherRadar AI is designed to give you a systematic, data-driven edge in short-term temperature markets.
Account Creation and Plan Selection
Create an account at weatherradar.ai and select a plan that matches your trading activity:
| Plan | Features |
|---|---|
| Free | Public stats, limited market view, no fair value data |
| Pro | Full fair value engine, API access to /api/fair-value, calibration status |
| Elite | Everything in Pro, plus autonomous auto-trading via Kalshi API key integration |
Auto-trading features require Elite plan and a valid Kalshi API key configured in your account settings. API keys are stored encrypted at rest and never exposed in the interface.
Your First Forecast
- Log in to your account and navigate to the Trader page from the top navigation.
- Select a city from the sidebar series list. Active markets display with live Bid and Ask prices pulled from Kalshi.
- Review the Fair Value column. This is the platform's probability estimate for each market bucket, derived from the blended ensemble models.
- Check the Edge column. Positive edge (FV above market mid) indicates an underpriced market; negative edge indicates an overpriced market.
- Click any row to open the detail panel. Review the FV gauge, observation trend, and signal quality score before placing a trade.
- If a signal qualifies (see Buy & Sell Signals), click through to Kalshi to execute the trade manually, or configure auto-trading if on Elite.
Reading the Interface
The Trader page is divided into three regions: the series sidebar on the left, the market table in the center, and the detail panel on the right. Each region updates at different intervals based on data source freshness.
The series sidebar lists all tracked cities and date combinations. Markets are grouped by settlement date. Clicking a series loads its full market table and activates the detail panel for the selected row. The sidebar also displays the last model update timestamp and the current calibration grade for each city.
The detail panel expands to show the FV gauge, the full probability distribution over all strike buckets, recent ASOS observations, model blend breakdown, and active signals. Elite users also see auto-trading status and pending order information for the selected series.
Market Table Columns
| Column | Description |
|---|---|
| Series | Kalshi market ticker identifying the city, date, and strike bucket (e.g., HIGHNY-25APR12-T72) |
| Bid | Best resting bid price on Kalshi, in cents (0–99). Reflects the highest price a buyer will pay. |
| Ask | Best resting ask price on Kalshi, in cents. Reflects the lowest price a seller will accept. |
| Fair Value | Platform's probability estimate for this bucket expressed in cents. Derived from ensemble blending and Gaussian integration. |
| Edge | Calculated as FV − market_mid. Positive edge = market underpriced relative to model. Negative = overpriced. |
| Signal | Directional signal indicator: BUY, SELL, or neutral dash. Incorporates edge threshold and signal quality score Q. |
The FV Gauge
The FV gauge in the detail panel visualizes the full probability distribution produced by the fair value engine across all strike buckets for the selected series. Each bucket is rendered as a bar proportional to its assigned probability, forming a temperature probability curve.
The highlighted bucket corresponds to the currently selected market row. The gauge also overlays the market mid-price as a horizontal reference line so you can visually compare the model's distribution center against where the market is pricing probability mass.
When the distribution is narrow and centered away from the market mid, edge tends to be large and signal quality tends to be higher. When the distribution is broad, edge values are typically smaller and the Q score will reflect increased uncertainty.
Observation Panel: ASOS Temperatures
The observation panel displays recent temperature readings from the nearest ASOS (Automated Surface Observing System) station associated with the market's city. Readings are ingested at hourly intervals and displayed as a timeline chart with labeled data points in degrees Fahrenheit.
The trend indicator shows the directional temperature movement over the last three observations: rising, falling, or steady. This is used as a secondary signal filter — when the observed trend is directionally consistent with the model's predicted peak temperature, signal confidence increases.
ASOS data arrives with a 5–15 minute delay relative to actual observation time. For markets settling within the next two hours, check the observation timestamp carefully before acting on any signal.
Fair Value Engine
Ensemble Blending
The fair value engine ingests forecast data from six primary model sources and blends them into a single consensus forecast using performance-weighted averaging:
- GEFS — Global Ensemble Forecast System (NOAA, 31-member ensemble)
- ECMWF — European Centre for Medium-Range Weather Forecasts (high-skill global model)
- HRRR — High-Resolution Rapid Refresh (NOAA, hourly convection-allowing model)
- NBM — National Blend of Models (NWS, post-processed multi-model blend)
- NDFD — National Digital Forecast Database (NWS gridded forecasts)
- Additional regional and experimental models ingested as available
Model weights are updated daily based on rolling CRPS scores computed against ASOS verification data. Models with lower (better) CRPS receive higher blend weights. For near-term forecasts (6–18 hours), HRRR typically carries the largest weight due to its high resolution and frequent update cycle. Beyond 48 hours, ECMWF and GEFS weights increase.
Gaussian Integration over Market Buckets
Once the blended temperature forecast (mean μ and standard deviation σ) is computed for a city and valid time, the engine integrates a Gaussian distribution over each Kalshi market bucket to assign probabilities.
For a bucket defined by lower bound L and upper bound U (in °F), the fair value probability P is:
Where Φ is the standard normal CDF. The resulting probabilities across all buckets for a series sum to 1.0. This probability (expressed in cents, 0–99) becomes the Fair Value displayed in the market table.
The engine applies a sigma compression factor to prevent overconfidence at extreme forecast horizons and during high-uncertainty regimes detected by the regime classifier. A compressed sigma results in a flatter distribution and lower edge magnitudes.
Bias Calibration and CRPS Grades
Forecast calibration is measured using CRPS (Continuous Ranked Probability Score) — a proper scoring rule that rewards probabilistic forecasts that are both accurate and sharp. Lower CRPS indicates better calibration.
The platform computes rolling 30-day CRPS for each city and model combination and assigns a letter grade displayed in the interface:
| Grade | CRPS Range | Interpretation |
|---|---|---|
| A | CRPS < 2.0 | Excellent calibration. High confidence in FV estimates. |
| B | 2.0 – 3.5 | Good calibration. Normal trading confidence. |
| C | 3.5 – 5.0 | Below-average calibration. Reduce position sizes. |
| D | CRPS > 5.0 | Poor calibration. Auto-trading suspended for this city. |
Grades C and D often correspond to unusual weather patterns such as frontal passages, convective activity, or rapidly evolving synoptic regimes. Exercise additional caution during these periods regardless of displayed edge values.
Signal Quality Score (Q)
The signal quality score Q is a composite metric on a 0–1 scale that reflects overall confidence in the current FV estimate and trade signal. It is computed from three sub-components:
- Calibration component — derived from the current CRPS grade (A = 1.0, D ≈ 0.2)
- Model agreement component — inverse of the inter-model spread; high agreement across GEFS, ECMWF, and HRRR increases Q
- Observation consistency component — measures agreement between the latest ASOS reading and the model's predicted trajectory
A Q score above 0.70 is required for a signal to display in the market table. Auto-trading has a higher threshold of 0.75 for autonomous order entry. The Q score is shown in the detail panel for every market row.
Trading Guide
Understanding Edge
Edge is the fundamental measure of expected value in a prediction market trade. It quantifies how far the platform's fair value diverges from where the market is currently priced.
edge = FV - market_mid where: FV = platform fair value estimate (in cents) market_mid = (bid + ask) / 2 edge > 0 = market underpriced — model expects higher probability edge < 0 = market overpriced — model expects lower probability
Edge alone does not determine whether a trade is worth taking. Small edge values may not justify transaction costs or spread capture risk. The signal thresholds below incorporate empirically derived minimums based on historical execution data.
Buy and Sell Signals
Signals are generated when edge exceeds defined thresholds and the market mid is within a range where execution is practical:
| Signal | Condition | Rationale |
|---|---|---|
| BUY | edge > 12¢ AND market_mid < 33¢ | Sufficient edge to overcome spread; low-probability bucket limits maximum loss to mid price |
| SELL | edge < −12¢ AND market_mid > 45¢ | Sufficient edge on the short side; market has over-assigned probability to this bucket |
The market mid thresholds (33¢ for buys, 45¢ for sells) are designed to avoid entering near 50¢ where the distribution is most uncertain and spread as a percentage of fair value is highest.
Kelly Sizing Formula
Position sizing follows a fractional Kelly criterion. For a binary market (YES/NO outcome), the Kelly fraction is:
WeatherRadar AI applies a half-Kelly multiplier by default to account for model uncertainty and reduce variance. The recommended stake size per trade is therefore 0.5 × f* of your total active capital.
Kelly fractions below 2% are treated as noise and no position is recommended. Fractions above 8% are capped at 8% to prevent over-concentration in a single market.
Risk Management
The platform enforces two hard risk limits regardless of signal strength:
- 4% per-ticker cap — no single market series may represent more than 4% of total portfolio value at entry. Auto-trading will not enter a position that would breach this limit.
- Max drawdown gate — if the portfolio experiences a drawdown exceeding a user-configured threshold (default 15% from peak), auto-trading suspends all new entries until the session is manually reset. Manual trading signals continue to display.
These limits apply to the auto-trading engine only. If you are placing trades manually, you are responsible for enforcing position sizing and drawdown discipline on your own account.
Auto-Trading (Elite)
Elite plan members can connect their Kalshi account via API key and enable autonomous trade execution. When active, the auto-trading engine monitors all tracked markets, computes edge and signal quality in real time, and submits orders without manual intervention.
Prerequisites
- Active Elite subscription
- Kalshi API key (generated in your Kalshi account settings under API Access)
- API key entered in WeatherRadar account settings under Integrations > Kalshi
- Auto-trading toggle enabled per city in the Trader sidebar
How Autonomous Execution Works
Once enabled, the engine runs a continuous evaluation loop on a per-city basis. Each evaluation cycle:
- Fetch latest model blend and recompute FV for all active buckets in the series.
- Pull live bid/ask from Kalshi order book. Compute edge and Q score.
- If a qualifying signal is detected (edge threshold met, Q ≥ 0.75, drawdown gate open, position cap not breached), compute Kelly-sized stake.
- Submit a FAK limit order at the ask (for buys) or bid (for sells). Order expires immediately if not filled at that price.
- Log execution result, update position tracking, and re-evaluate in the next cycle.
Trading Windows
Auto-trading does not run 24 hours a day. Each city has a trading window defined around its expected peak temperature time — typically a 4–6 hour window centered on the afternoon peak for high-temperature markets, or early morning for low-temperature markets.
Outside the trading window, the engine enters monitor-only mode: it tracks positions and may exit unfavorable positions, but will not enter new ones. This prevents execution during low-liquidity overnight periods where spread costs erode edge.
Trading windows for each city are visible in the auto-trading configuration panel. They can be adjusted by ±2 hours if you have strong conviction about a city's microclimate or typical market liquidity pattern.
FAK (Fill-and-Kill) Limit Orders
All auto-trading orders are submitted as Fill-and-Kill limit orders. This order type attempts immediate execution at the specified limit price and cancels any unfilled portion instantly. WeatherRadar AI uses FAK exclusively — no resting orders, no GTC (Good-Till-Cancelled) orders.
The FAK limit price is set at the current best ask (for buys) or best bid (for sells) at the time of submission. If the book has moved and the order cannot fill at that price, the order is cancelled and the engine waits for the next evaluation cycle.
Position monitoring and exit triggers: Open positions are monitored continuously. An exit order is triggered if:
- The edge reverses and becomes significantly negative (FV has moved against the position)
- The Q score drops below 0.50 (model confidence has degraded materially)
- The market is within 30 minutes of settlement cutoff
- The drawdown gate is triggered at the portfolio level
API Reference
Authentication
The WeatherRadar AI API uses JWT-based session authentication. Authenticate by sending a POST request to /auth/login with your credentials. The server returns a session cookie that must be included in all subsequent requests.
POST /auth/login
Content-Type: application/json
{
"email": "[email protected]",
"password": "your_password"
}
// Response sets HttpOnly cookie: wr_session=<jwt_token>
For programmatic access, pass the cookie in all subsequent requests using your HTTP client's cookie jar, or extract the token and send it as a Cookie: wr_session=<token> header.
Session tokens expire after 24 hours. Your client should handle 401 responses by re-authenticating automatically. API rate limits are 120 requests/minute for Pro and 300 requests/minute for Elite.
Endpoints
| Method + Path | Access | Description |
|---|---|---|
GET /api/fair-value |
Pro+ | Fair value distribution for a market series and date |
GET /api/obs-history |
Auth | Historical ASOS observations for a series |
GET /api/public/stats |
Public | Aggregate platform performance statistics |
GET /api/dashboard/performance |
Auth | Your account trade history and P&L |
GET /api/dashboard/calibration-status |
Pro+ | Per-city calibration grades and CRPS scores |
GET /api/fair-value
GET /api/fair-value?series=HIGHNY&date=2026-04-12 Cookie: wr_session=<token>
{
"series": "HIGHNY",
"date": "2026-04-12",
"model_blend": {
"mu": 68.4,
"sigma": 3.2,
"weights": { "HRRR": 0.38, "ECMWF": 0.29, "GEFS": 0.18, "NBM": 0.10, "NDFD": 0.05 }
},
"signal_quality": 0.82,
"buckets": [
{ "ticker": "HIGHNY-26APR12-T60", "lower": 58, "upper": 62, "fv": 3 },
{ "ticker": "HIGHNY-26APR12-T64", "lower": 62, "upper": 66, "fv": 12 },
{ "ticker": "HIGHNY-26APR12-T68", "lower": 66, "upper": 70, "fv": 41 },
{ "ticker": "HIGHNY-26APR12-T72", "lower": 70, "upper": 74, "fv": 33 },
{ "ticker": "HIGHNY-26APR12-T76", "lower": 74, "upper": 78, "fv": 9 },
{ "ticker": "HIGHNY-26APR12-T80", "lower": 78, "upper": 999, "fv": 2 }
],
"updated_at": "2026-04-12T06:15:00Z"
}
GET /api/obs-history
GET /api/obs-history?series=HIGHNY Cookie: wr_session=<token>
{
"series": "HIGHNY",
"station": "KJFK",
"observations": [
{ "time": "2026-04-12T06:00:00Z", "temp_f": 61.0 },
{ "time": "2026-04-12T05:00:00Z", "temp_f": 59.4 },
{ "time": "2026-04-12T04:00:00Z", "temp_f": 57.9 }
],
"trend": "rising"
}
GET /api/public/stats
{
"trades_total": 4821,
"win_rate": 0.613,
"avg_edge_captured": 8.4,
"cities_tracked": 18,
"models_active": 5,
"last_updated": "2026-04-12T07:00:00Z"
}
Response Format
All endpoints return application/json. Error responses follow a consistent structure:
{
"error": {
"code": "UNAUTHORIZED",
"message": "Valid session required for this endpoint.",
"status": 401
}
}
| Status Code | Meaning |
|---|---|
200 | Success |
400 | Bad request — missing or invalid parameters |
401 | Unauthorized — session missing or expired |
403 | Forbidden — endpoint requires higher plan tier |
404 | Series or date not found |
429 | Rate limit exceeded |
500 | Internal server error |
FAQ
How often does the fair value update?
Fair value estimates are recomputed whenever a model source publishes new data. HRRR updates every hour; ECMWF and GEFS update every 6 hours. The displayed FV reflects the most recent blend available at the time of page load or API call. The updated_at field in API responses shows the exact timestamp of the last computation.
Why does the Signal column show neutral even when there is edge?
A signal requires both sufficient edge (greater than 12¢ in absolute terms) and a signal quality score Q of 0.70 or higher. If the Q score is below threshold — due to poor calibration grade, high inter-model disagreement, or inconsistent ASOS observations — no directional signal is emitted regardless of edge magnitude. Check the Q score in the detail panel for the specific market row.
What happens if my Kalshi API key expires or is revoked?
Auto-trading will stop immediately upon receiving a 401 or 403 response from the Kalshi API. The platform will display a warning in the Trader sidebar and send a notification to your registered email. No orders will be submitted until you update the API key in account settings and re-enable auto-trading.
How is the sigma compression factor determined?
The sigma compression factor is output by the regime detector module, which classifies the current synoptic pattern for each city into one of four regimes: stable, transitional, convective, and anomalous. Stable regimes apply no compression (factor = 1.0). Anomalous regimes apply maximum compression (factor ≈ 0.65), widening the output distribution to reflect genuine forecast uncertainty. The current regime and compression factor are visible in the model blend section of the detail panel.
Can I use the API to trigger auto-trades programmatically?
No. The auto-trading engine operates server-side based on its own evaluation cycle and cannot be triggered via API calls. The API is read-only with respect to trading — it exposes fair value, observation, and performance data. Kalshi order submission is handled exclusively by the auto-trading engine on Elite plans. This design prevents race conditions and duplicate order submissions.
What does a grade D city mean for auto-trading?
Auto-trading is automatically suspended for any city with a grade D calibration rating (CRPS above 5.0). Manual trade signals continue to display, but no autonomous orders will be placed. Grade D typically indicates an extended period of model underperformance, often coinciding with unusual weather patterns. The grade is reassessed daily; auto-trading resumes automatically when the grade improves to C or above.
Are trades placed against other WeatherRadar users?
No. WeatherRadar AI does not operate an internal matching engine or act as a market maker. All trades are placed directly on the Kalshi exchange order book via the Kalshi API. WeatherRadar is purely an analysis and execution routing layer — your counterparties are other participants on Kalshi's platform.
Changelog
-
v8.0
April 2026SaaS Platform Launch
- Full SaaS platform with account management, billing, and plan tiers
- Pro and Elite subscription plans with feature gating
- Dashboard with portfolio performance and calibration status views
- API endpoints for external integrations (Pro+)
- Email notification system for signal alerts and auto-trading events
-
v7.0
April 2026FAK Execution and Tranche Entry System
- Migrated order submission to Fill-and-Kill limit orders exclusively
- Tranche entry system: large positions split into 3 sequential fills to reduce market impact
- Per-city trading windows with configurable offsets
- Position monitoring loop with automated exit triggers
- Max drawdown gate added to auto-trading engine
-
v6.0
April 2026FV Engine Overhaul
- Complete rewrite of fair value computation pipeline
- Sigma compression factor introduced via regime detector module
- CRPS-based model weighting replaces fixed weights
- Signal quality score Q introduced as composite confidence metric
- ECMWF integration added; model count increased from 4 to 6
- Calibration grades (A/B/C/D) added to interface and API
-
v1.0
March 2026Initial Kalshi Trading Engine Launch
- Initial release of the Kalshi temperature market trading engine
- GEFS, HRRR, NBM, and NDFD model sources integrated
- Gaussian bucket integration for fair value computation
- Manual signal display in Trader interface
- ASOS observation ingestion and trend detection