spartanlabsxyz/simmer-sdk/polymarket-weather-trader
Claude Code and agent skill by spartanlabsxyz/simmer-sdk
- community
Checking that the SKILL.md file is still in the repository.
Trade Polymarket temperature markets from NOAA and Open-Meteo forecasts via the Simmer API. Use to run or configure a weather strategy, or to check the forecast a market resolves on.
Install
npx vskill@latest install spartanlabsxyz/simmer-sdk/polymarket-weather-traderSKILL.md
Polymarket Weather Trader
Trade temperature markets on Polymarket using NOAA forecast data.
๐จ Framework, not a production trading system. Read DISCLAIMER.md before connecting to a wallet with real funds.
Template skill. Defaults to dry-run mode (no real money). The--liveflag is a deliberate single-command opt-in for real-money execution. Configure tunables (entry/exit thresholds, locations, etc.) via env vars listed below.
Safety rails (read first)
This skill executes real-money trades on Polymarket only when the --live flag is passed AND the human's wallet is linked to their Simmer account. Trading is bounded by default:
- Dry-run is the default.
python weather_trader.py(no flag) shows opportunities but executes no trades. The--liveflag is required for real-money execution. There is no "auto-graduate" path. - `$SIM` paper sandbox option. Set
TRADING_VENUE=simto trade Simmer's $SIM virtual currency at real prices โ useful for validating the strategy without USDC exposure. - Real-money trading requires explicit human verification. A wallet must be linked at simmer.markets/dashboard before any real trade lands. Without a linked wallet the SDK rejects real-money order construction.
- Per-trade cap.
SIMMER_WEATHER_MAX_POSITION_USDdefaults to$2.00per trade. Configurable via env var, capped at the user's dashboard-set platform per-trade limit. - Daily caps. Platform-level daily caps apply (max trades/day, max USD/day). Set at simmer.markets/dashboard โ SDK settings.
- Auto stop-loss is ON by default. Server-side risk monitor watches every buy. Threshold is configurable per user at simmer.markets/dashboard โ Settings โ Auto Risk Monitor. It cannot protect against gap-resolution, though: weather temperature buckets jump straight to about 0 at resolution rather than decaying through your stop, so a percentage stop has no price to trigger on and no liquidity to exit into. Size for the full loss, not for the stop. See DISCLAIMER.md.
- Strategy-side safeguards. Beyond platform risk monitors, this skill checks flip-flop, slippage (
SIMMER_WEATHER_SLIPPAGE_MAX, default 15%), time-decay (SIMMER_WEATHER_MIN_HOURS_TO_RESOLVE, default 2h), and resolved-market status before every order. Disable only with--no-safeguards(not recommended). - Reversibility. Open positions exit automatically when price >
SIMMER_WEATHER_EXIT_THRESHOLD(default0.45), or viaclient.cancel_order()/ a manual sell.ENTRY_THRESHOLDis an upper bound (buy below). If you raise it above the exit default (e.g. entry0.50vs exit0.45), the skill will try to sell the same position on the next cycle โ raiseEXIT_THRESHOLDtoo, or own exits yourself.
If anything above isn't clear, stop and ask the user before passing --live.
Strategy logic
Weather market outcomes are discrete: a temperature bucket ("34-35ยฐF") either matches the actual high on resolution day or it doesn't. The strategy works when the NOAA forecast is more accurate than what the market has priced in.
Test before going live. The $SIM venue gives you a fully virtual sandbox at real market prices โ recommended before any --live run.
Risk monitor. Stop-loss and take-profit thresholds are user settings (configurable at simmer.markets/dashboard โ Settings โ Auto Risk Monitor), shared across all skills under that user account. Per-position overrides via client.set_monitor(market_id, side, stop_loss_pct=..., take_profit_pct=...).
External wallet users: monitors emit alerts via the briefing endpoint โ your agent must be running for sells to execute. Managed wallet users: server executes directly.
Setup
For wallet setup, see docs.simmer.markets/wallets.
Behaviour changes by version: CHANGELOG.md.
Required environment:
SIMMER_API_KEYโ get fromsimmer.markets/dashboard โ SDK tabWALLET_PRIVATE_KEYโ Polymarket wallet private key (the SDK signs orders client-side)
Then pip install --upgrade simmer-sdk (>=0.13.0) and configure tunables below.
Configuration
| Setting | Environment Variable | Default | Description | |
|---|---|---|---|---|
| Trading venue | TRADING_VENUE | polymarket | Venue to trade on. Set sim for paper trading. | |
| 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. Discovery looks ahead max(this, 48h) calendar days โ raise it and the scan widens; a 24h floor still sees +1/+2 day markets in a morning heartbeat. | |
| 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 | |
| Max buys/market | SIMMER_WEATHER_MAX_BUYS_PER_MARKET | 1 | Cap on buy-fills into the same market (bucket), checked against held positions before entry. 1 = one entry then hold; raise to keep DCA-ing into an underpriced bucket; 0 disables the cap (unbounded DCA). | |
| Locations | SIMMER_WEATHER_LOCATIONS | NYC | Comma-separated cities (NYC, Chicago, Seattle, Atlanta, Dallas, Miami, Austin, Houston, Denver, Beijing, Shanghai, Guangzhou, Shenzhen, Chengdu, Chongqing, Wuhan, Qingdao, Zhengzhou, Singapore, Kuala Lumpur, Manila, Busan, Toronto, Buenos Aires, Sao Paulo, Mexico City, Cape Town, Helsinki, Jeddah, Warsaw, Paris, Panama City) | |
| 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) | |
| Order type | SIMMER_WEATHER_ORDER_TYPE | GTC | GTC (limit, waits for fill) or FAK (cancel if not filled). GTC recommended. | |
| Replay forecast archive | SIMMER_REPLAY_FORECASTS | (none) | Replay-only. JSON {station: {YYYY-MM-DD: {high, low}}}. Live NOAA is never used under replay. If unset, loads fixtures/replay_forecasts.json when you add that file (not committed). .sample.json is never auto-loaded. |
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 (city-name filter applied to market questions): NYC, Chicago, Seattle, Atlanta, Dallas, Miami, Austin, Houston, Denver, Tel Aviv, Munich, London, Tokyo, Seoul, Ankara, Lucknow, Wellington, Madrid, Milan, Amsterdam, Taipei, Beijing, Shanghai, Guangzhou, Shenzhen, Chengdu, Chongqing, Wuhan, Qingdao, Zhengzhou, Singapore, Kuala Lumpur, Manila, Busan, Toronto, Buenos Aires, Sao Paulo, Mexico City, Cape Town, Helsinki, Jeddah, Warsaw, Paris, Panama City. The actual oracle station is parsed per-market from resolution_criteria โ see "Resolution-source routing" below.
Resolution-source routing
Polymarket weather markets carry a resolution_criteria field that names the exact station the market resolves on (e.g. "Chicago O'Hare Intl Airport Station" with wunderground.com/.../KORD). v1.21.0+ parses that text per-market and routes to the matching forecast station instead of a city default. If a market names a station the skill doesn't know, the event is skipped with a log line. Add new stations to STATION_ID_TO_NOAA (US) or INTERNATIONAL_STATION_COORDS (international) in weather_trader.py to extend coverage โ PRs welcome.
SDK initialization
from_env() (added in simmer-sdk 0.13.0) reads SIMMER_API_KEY from the environment and raises RuntimeError with a dashboard pointer if unset. If OWS_WALLET is set, it auto-routes through the OpenClaw shared wallet.
Quick Commands
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
Backtest gate (keep / kill / fix)
90-day real-capital P&L on Simmer is the lock. This gate is the fast filter before more real capital. Dogfood's MIN_HOURS=12 canary is a separate seat โ do not change it here.
Reuse the existing replay harness. Do not invent a second one.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/polymarket-weather-trader/SKILL.md
Popularity
- 7-day trend score
- 0
Refreshed 16 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/spartanlabsxyz/simmer-sdk/polymarket-weather-trader)