Trade temperature markets on Polymarket using NOAA forecast data.
> 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.
Use this skill when the user wants to:
--vol-targeting flag or SIMMER_WEATHER_VOL_TARGETING=true.SIMMER_WEATHER_TARGET_VOL — target annualized vol (default 20%)SIMMER_WEATHER_VOL_MAX_LEVERAGE — max scale-up multiplier (default 2.0x)SIMMER_WEATHER_VOL_MIN_ALLOC — min allocation floor (default 20%)SIMMER_WEATHER_VOL_SPAN — EWMA responsiveness (default 10)SIMMER_WEATHER_ENTRY → SIMMER_WEATHER_ENTRY_THRESHOLDSIMMER_WEATHER_EXIT → SIMMER_WEATHER_EXIT_THRESHOLDSIMMER_WEATHER_MAX_POSITION → SIMMER_WEATHER_MAX_POSITION_USDSIMMER_WEATHER_MAX_TRADES → SIMMER_WEATHER_MAX_TRADES_PER_RUNSIMMER_WEATHER_SLIPPAGE_MAX — adjustable slippage safeguard (default 15%). Set higher for research mode on illiquid markets.SIMMER_WEATHER_MIN_LIQUIDITY — skip markets with liquidity below this USD threshold (default 0 = disabled). Pre-filters thin markets before execution.SIMMER_WEATHER_LOCATIONS and SIMMER_WEATHER_BINARY_ONLY now exposed as autotune tunables.SIMMER_WEATHER_BINARY_ONLY config to skip range-bucket events (e.g., "NYC 34-35°F") and only trade binary yes/no weather marketsSIMMER_WEATHER_MAX_TRADES config to limit trades per scan cycle (default: 5)scripts/status.py for quick balance and position checkssdk:weather for portfolio tracking--smart-sizing)When user asks to install or configure this skill:
SIMMER_API_KEYWALLET_PRIVATE_KEY| Setting | Environment Variable | Default | Description |
|---|---|---|---|
| --------- | --------------------- | --------- | ------------- |
| Entry threshold | SIMMER_WEATHER_ENTRY_THRESHOLD | 0.15 | Buy when price below this |
| Exit threshold | SIMMER_WEATHER_EXIT_THRESHOLD | 0.45 | Sell when price above this |
| 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 (e.g., "34-35°F"), 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) |
| Vol targeting | SIMMER_WEATHER_VOL_TARGETING | false | Enable volatility targeting for dynamic position sizing |
| Target vol | SIMMER_WEATHER_TARGET_VOL | 0.20 | Target annualized volatility (0.20 = 20%) |
| Vol max leverage | SIMMER_WEATHER_VOL_MAX_LEVERAGE | 2.0 | Max scale-up multiplier in calm markets |
| Vol min alloc | SIMMER_WEATHER_VOL_MIN_ALLOC | 0.2 | Min allocation floor in volatile markets (0.2 = 20%) |
| Vol EWMA span | SIMMER_WEATHER_VOL_SPAN | 10 | EWMA span for vol calculation (lower = more responsive) |
Legacy env var aliases (still accepted for backwards compatibility): SIMMER_WEATHER_ENTRY, SIMMER_WEATHER_EXIT, SIMMER_WEATHER_MAX_POSITION, SIMMER_WEATHER_MAX_TRADES
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
# Disable safeguards (not recommended)
python weather_trader.py --no-safeguards
# Disable trend detection
python weather_trader.py --no-trends
# Enable volatility targeting (dynamic sizing based on market vol)
python weather_trader.py --live --smart-sizing --vol-targeting
# Quiet mode — only output on trades/errors (ideal for high-frequency runs)
python weather_trader.py --live --quiet
# Combine: frequent scanning, minimal noise
python weather_trader.py --live --smart-sizing --quiet
Each cycle the script:
sdk:weather for trackingWith --smart-sizing, position size is calculated as:
SIMMER_WEATHER_SIZING_PCT)This prevents over-deployment and scales with your account size.
With --vol-targeting, position sizes are dynamically adjusted based on realized market volatility:
position_size = base_size × clamp(target_vol / realized_vol, min_alloc, max_leverage)
Combines with smart sizing: first calculate base size from portfolio %, then apply the vol multiplier.
Before trading, the skill checks:
Disable with --no-safeguards (not recommended).
All trades are tagged with source: "sdk:weather". This means:
🌤️ 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: $2.00 (capped at max position)
✅ 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
"Safeguard blocked: Severe flip-flop warning"
"Slippage too high"
"Resolves in Xh - too soon"
"No weather markets found"
"External wallet requires a pre-signed order"
WALLET_PRIVATE_KEY is not set in the environmentexport WALLET_PRIVATE_KEY=0x"Balance shows $0 but I have USDC on Polygon"
0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174) — not native USDC"API key invalid"
共 1 个版本