Simmer Weather Trading
Trade temperature markets on Polymarket using NOAA forecast data.
When to Use This Skill
Use this skill when the user wants to:
- Trade weather markets automatically
- Set up gopfan2-style temperature trading
- Buy low on weather predictions
- Check their weather trading positions
- Configure trading thresholds or locations
What's New in v1.2.0
- Max Trades Per Run: New
SIMMER_WEATHER_MAX_TRADESconfig to limit trades per scan cycle (default: 5)
v1.1.1
- Status Script: New
scripts/status.pyfor quick balance and position checks - API Reference: Added Quick Commands section with API endpoints
v1.1.0
- Source Tagging: All trades tagged with
sdk:weatherfor portfolio tracking - Smart Sizing: Position sizing based on available balance (
--smart-sizing) - Context Safeguards: Checks for flip-flop warnings, slippage, time decay
- Price Trend Detection: Detects recent price drops for stronger signals
Setup Flow
When user asks to install or configure this skill:
Ask for Simmer API key
- They can get it from simmer.markets/dashboard → SDK tab
- Store in environment as
SIMMER_API_KEY
Ask about settings (or confirm defaults)
- Entry threshold: When to buy (default 15¢)
- Exit threshold: When to sell (default 45¢)
- Max position: Amount per trade (default $2.00)
- Locations: Which cities to trade (default NYC)
Save settings to environment variables
Set up cron (runs every 2 hours by default)
Configuration
| Setting | Environment Variable | Default | Description |
|---|---|---|---|
| Entry threshold | SIMMER_WEATHER_ENTRY |
0.15 | Buy when price below this |
| Exit threshold | SIMMER_WEATHER_EXIT |
0.45 | Sell when price above this |
| Max position | SIMMER_WEATHER_MAX_POSITION |
2.00 | Maximum USD per trade |
| Max trades/run | SIMMER_WEATHER_MAX_TRADES |
5 | Maximum trades per scan cycle |
| Locations | SIMMER_WEATHER_LOCATIONS |
NYC | Comma-separated cities |
| Smart sizing % | SIMMER_WEATHER_SIZING_PCT |
0.05 | % of balance per trade |
Supported locations: NYC, Chicago, Seattle, Atlanta, Dallas, Miami
Quick Commands
# Check account balance and positions
python scripts/status.py
# Detailed position list
python scripts/status.py --positions
API Reference:
- Base URL:
https://api.simmer.markets - Auth:
Authorization: Bearer $SIMMER_API_KEY - Portfolio:
GET /api/sdk/portfolio - Positions:
GET /api/sdk/positions
Running the Skill
# Standard scan
python weather_trader.py
# Dry run (no trades)
python weather_trader.py --dry-run
# With smart position sizing (uses portfolio balance)
python weather_trader.py --smart-sizing
# Check positions only
python weather_trader.py --positions
# View config
python weather_trader.py --config
# Disable safeguards (not recommended)
python weather_trader.py --no-safeguards
# Disable trend detection
python weather_trader.py --no-trends
How It Works
Each cycle the script:
- Fetches active weather markets from Simmer API
- Groups markets by event (each temperature day is one event)
- Parses event names to get location and date
- Fetches NOAA forecast for that location/date
- Finds the temperature bucket that matches the forecast
- Safeguards: Checks context for flip-flop warnings, slippage, time decay
- Trend Detection: Looks for recent price drops (stronger buy signal)
- Entry: If bucket price < threshold and safeguards pass → BUY
- Exit: Checks open positions, sells if price > exit threshold
- Tagging: All trades tagged with
sdk:weatherfor tracking
Smart Sizing
With --smart-sizing, position size is calculated as:
- 5% of available USDC balance (configurable via
SIMMER_WEATHER_SIZING_PCT) - Capped at 5x the max position setting
- Falls back to fixed size if portfolio unavailable
This prevents over-deployment and scales with your account size.
Safeguards
Before trading, the skill checks:
- Flip-flop warning: Skips if you've been reversing too much
- Slippage: Skips if estimated slippage > 15%
- Time decay: Skips if market resolves in < 2 hours
- Market status: Skips if market already resolved
Disable with --no-safeguards (not recommended).
Source Tagging
All trades are tagged with source: "sdk:weather". This means:
- Portfolio shows breakdown by strategy
- Copytrading skill won't sell your weather positions
- You can track weather P&L separately
Example Output
🌤️ Simmer Weather Trading Skill
==================================================
⚙️ Configuration:
Entry threshold: 15% (buy below this)
Exit threshold: 45% (sell above this)
Max position: $2.00
Locations: NYC
Smart sizing: ✓ Enabled
Safeguards: ✓ Enabled
Trend detection: ✓ Enabled
💰 Portfolio:
Balance: $150.00
Exposure: $45.00
Positions: 8
📍 NYC 2026-01-28 (high temp)
NOAA forecast: 34°F
Matching bucket: 34-35°F @ $0.12
💡 Smart sizing: $7.50 (5% of $150.00 balance)
✅ Below threshold ($0.15) - BUY opportunity! 📉 (dropped 15% in 24h)
Executing trade...
✅ Bought 62.5 shares @ $0.12
📊 Summary:
Events scanned: 12
Entry opportunities: 1
Trades executed: 1
Troubleshooting
"Safeguard blocked: Severe flip-flop warning"
- You've been changing direction too much on this market
- Wait before trading again
"Slippage too high"
- Market is illiquid, reduce position size or skip
"Resolves in Xh - too soon"
- Market resolving soon, risk is elevated
"No weather markets found"
- Weather markets may not be active (seasonal)
"API key invalid"
- Get new key from simmer.markets/dashboard → SDK tab