Install
openclaw skills install @simmer/kalshi-weather-traderTrade Kalshi weather markets using NOAA forecasts via Simmer SDK and DFlow on Solana. Port of the popular polymarket-weather-trader. Use when user wants to trade temperature markets on Kalshi, automate weather bets, or check NOAA forecasts.
openclaw skills install @simmer/kalshi-weather-traderTrade temperature markets on Kalshi using NOAA forecast data, via DFlow on Solana.
🚨 Framework, not a production trading system. Read DISCLAIMER.md before connecting to a wallet with real funds.
This is a template. The default signal is NOAA temperature forecasts — remix it with other weather APIs, different forecast models, or additional market types (precipitation, wind, etc.). The skill handles all the plumbing (market discovery, NOAA parsing, trade execution, safeguards). Your agent provides the alpha.
Powered by DFlow. Kalshi trades execute via DFlow's Solana-based prediction market infrastructure. KYC verification through Proof is required for buys.
Use this skill when the user wants to:
When user asks to install or configure this skill:
Install the Simmer SDK
pip install simmer-sdk
Ask for Simmer API key
SIMMER_API_KEYAsk for Solana private key (required for live trading)
SOLANA_PRIVATE_KEYVerify KYC
curl "https://api.simmer.markets/api/proof/status?wallet=YOUR_SOLANA_ADDRESS"Fund the wallet
Ask about settings (or confirm defaults)
Save settings to environment variables
Set up cron (disabled by default — user must enable scheduling)
| Setting | Environment Variable | Default | Description |
|---|---|---|---|
| Entry threshold | SIMMER_WEATHER_ENTRY_THRESHOLD | 0.15 | Upper bound — buy when price is below this |
| Min entry price | SIMMER_WEATHER_MIN_ENTRY_PRICE | 0 | Lower bound — skip lottery tickets below this (0 = off), e.g. 0.15 to skip sub-15¢ tickets. Must be below the entry threshold. |
| Min hours to resolve | SIMMER_WEATHER_MIN_HOURS_TO_RESOLVE | 2 | Skip entries if the market resolves in fewer than this many hours. Entry-only; exits keep a fixed 2h floor. |
| Exit threshold | SIMMER_WEATHER_EXIT_THRESHOLD | 0.45 | Sell when price above this. Raise this if you raise entry above 0.45, or the skill will self-exit. |
| Max position | SIMMER_WEATHER_MAX_POSITION_USD | 2.00 | Maximum USD per trade |
| Max trades/run | SIMMER_WEATHER_MAX_TRADES_PER_RUN | 5 | Maximum trades per scan cycle |
| Locations | SIMMER_WEATHER_LOCATIONS | NYC | Comma-separated cities (NYC, Chicago, Seattle, Atlanta, Dallas, Miami) |
| Binary only | SIMMER_WEATHER_BINARY_ONLY | false | Skip range-bucket events, only trade binary yes/no markets |
| Smart sizing % | SIMMER_WEATHER_SIZING_PCT | 0.05 | % of balance per trade |
| Slippage max | SIMMER_WEATHER_SLIPPAGE_MAX | 0.15 | Skip trades with slippage above this (0.15 = 15%) |
| Min liquidity | SIMMER_WEATHER_MIN_LIQUIDITY | 0 | Skip markets with liquidity below this USD amount (0 = disabled) |
Supported locations: NYC, Chicago, Seattle, Atlanta, Dallas, Miami
# Check account balance and positions
python scripts/status.py
# Detailed position list
python scripts/status.py --positions
API Reference:
https://api.simmer.marketsAuthorization: Bearer $SIMMER_API_KEYGET /api/sdk/portfolioGET /api/sdk/positions# Dry run (default — shows opportunities, no trades)
python weather_trader.py
# Execute real trades
python weather_trader.py --live
# With smart position sizing (uses portfolio balance)
python weather_trader.py --live --smart-sizing
# Check positions only
python weather_trader.py --positions
# View config
python weather_trader.py --config
# Quiet mode — only output on trades/errors (ideal for high-frequency runs)
python weather_trader.py --live --smart-sizing --quiet
Each cycle the script:
sdk:kalshi-weather for trackingBefore trading, the skill checks:
SIMMER_WEATHER_SLIPPAGE_MAX)SIMMER_WEATHER_MIN_HOURS_TO_RESOLVE hours (default 2)SIMMER_WEATHER_MIN_ENTRY_PRICE (default 0 = off) is the other side of the entry-price check, not this list — --no-safeguards does not disable it.
Disable the flip-flop / slippage / time-decay / resolved checks with --no-safeguards (not recommended).
"Safeguard blocked: Severe flip-flop warning"
"Slippage too high"
"Resolves in Xh - too soon"
SIMMER_WEATHER_MIN_HOURS_TO_RESOLVE (default 2h). Raise the env to skip resolve-day entries."Price $X.XX below min entry"
SIMMER_WEATHER_MIN_ENTRY_PRICE. Lottery-ticket floor; default is off (0)."No weather markets found"
POST /api/sdk/markets/import/kalshi"KYC verification required"
"SOLANA_PRIVATE_KEY not set"
export SOLANA_PRIVATE_KEY=<your-base58-secret-key>"Insufficient SOL for transaction fees"
"API key invalid"