Protocol Architecture
Nox Aeterna operates as a 4-stage autonomous pipeline. Each stage runs independently with fault tolerance and automatic recovery.
Data Ingestion
The collector runs every 30 minutes, fetching bracket prices from the Polymarket Gamma API for all 10 weather stations. Ensemble weather forecasts are pulled from Open-Meteo every 6 hours.
Polymarket Gamma API
Bracket prices for 10 stations, every 30 minutes
Open-Meteo Ensemble
GFS, ECMWF, ICON, GEM forecasts updated every 6 hours
IEM METAR
Actual observed temperatures for validation
Prediction
A dual LightGBM model predicts both mean temperature and variance for each station. The Gaussian CDF maps these to per-bracket probabilities. Platt scaling calibration corrects systematic biases.
Edge Detection
Model probabilities are compared against normalized Polymarket prices. An edge is the difference between model estimate and market price. Only edges above 7% generate trading signals.
Signal Logic
edge = model_prob - market_price. BUY YES if edge > +7%, BUY NO if edge < -7%
Kelly Sizing
Half-Kelly criterion with 20% max fraction and 10% minimum probability floor
Execution
Trades are executed via the Polymarket CLOB API using py-clob-client. Supports both BUY YES and BUY NO positions with automatic fee handling and position tracking.
CLOB Orders
Limit orders placed at best available price via Polymarket CLOB API
BUY YES + BUY NO
Both sides supported. 2% fee on winning trades. neg_risk=True for weather