Source profileQuality 92/100Review permissions

SpartanLabsXyz/simmer-sdk/skills/polymarket-weather-trader/SKILL.md

polymarket-weather-trader

Trade Polymarket weather markets using NOAA (US) and Open-Meteo (international) forecasts via Simmer API. Inspired by gopfan2's weather trading approach. Use when user wants to trade temperature markets, automate weather bets, check forecasts, or run weather-based strategies.

Source repository stars
48
Declared platforms
0
Static risk flags
1
Last source update
2026-08-24
Source checked
2026-08-25

Decision brief

What it does: where it fits

Trade temperature markets on Polymarket using NOAA forecast data.

Best for

  • Trade weather markets automatically
  • Set up gopfan2-style temperature trading
  • Buy low on weather predictions

Not for

  • "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.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/SpartanLabsXyz/simmer-sdk --skill "skills/polymarket-weather-trader"
Safe inspection promptEditorial

Inspect the Agent Skill "polymarket-weather-trader" from https://github.com/SpartanLabsXyz/simmer-sdk/blob/b3154d43d417fe717b308bc2ccf9814181d6fc89/skills/polymarket-weather-trader/SKILL.md at commit b3154d43d417fe717b308bc2ccf9814181d6fc89. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Setup

    For wallet setup, see docs.simmer.markets/wallets.

    SIMMERAPIKEY — get from simmer.markets/dashboard → SDK tabWALLETPRIVATEKEY — Polymarket wallet private key (the SDK signs orders client-side)For wallet setup, see docs.simmer.markets/wallets.
  2. 02

    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 weathertrader.py (no flag) shows opportunities but executes no trades. The --live flag is required for real-money execution. There is no "auto-graduate" path.$SIM paper sandbox option. Set TRADINGVENUE=sim to 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.
  3. 03

    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.

    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…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 vi…
  4. 04

    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

    Trade weather markets automaticallySet up gopfan2-style temperature tradingBuy low on weather predictions
  5. 05

    What's New in v1.23.3

    Event grouping now keys on eventref (the canonical parent-event id, present on every market) instead of the legacy eventid, which SDK-imported markets historically lacked. Fixes temperature buckets silently dropping out…

    Event grouping now keys on eventref (the canonical parent-event id, present on every market) instead of the legacy eventid, which SDK-imported markets historically lacked. Fixes temperature buckets silently dropping out…- Event grouping now keys on eventref (the canonical parent-event id, present on every market) instead of the legacy eventid, which SDK-imported markets historically lacked. Fixes temperature buckets silently dropping o…

Permission review

Static risk signals and limitations

Runs scripts

medium · line 119

The documentation asks the agent to run terminal commands or scripts.

python scripts/status.py

Runs scripts

medium · line 122

The documentation asks the agent to run terminal commands or scripts.

python scripts/status.py --positions

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score92/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars48SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
SpartanLabsXyz/simmer-sdk
Skill path
skills/polymarket-weather-trader/SKILL.md
Commit
b3154d43d417fe717b308bc2ccf9814181d6fc89
License
MIT
Collected
2026-08-25
Default branch
main
View the original SKILL.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 --live flag 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 --live flag is required for real-money execution. There is no "auto-graduate" path.
  • $SIM paper sandbox option. Set TRADING_VENUE=sim to 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_USD defaults to $2.00 per 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, 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 (default 0.45), or via client.cancel_order() / a manual sell.

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.

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.23.3

  • Event grouping now keys on event_ref (the canonical parent-event id, present on every market) instead of the legacy event_id, which SDK-imported markets historically lacked. Fixes temperature buckets silently dropping out of their event group (missing buckets when event_id came back null).

What's New in v1.21.0

  • Per-market resolution source. Each market is now routed to the specific weather station Polymarket actually reads (parsed from the market's resolution_criteria field). Previously the skill used a hardcoded city → station map, which silently traded against the wrong forecast in a few cases (notably Dallas, where Polymarket resolves on Love Field / KDAL but the skill assumed DFW / KDFW). Markets that name a station the skill doesn't know are now skipped with a log line — better to skip than to trade a stale oracle. Robust to Polymarket swapping airports.
  • Expanded NOAA station coverage. KLGA, KJFK, KEWR, KNYC, KORD, KMDW, KSEA, KATL, KDAL, KDFW, KMIA, KBOS, KDCA, KIAD, KPHX, KLAS, KSFO, KLAX, KDEN, KMSP, KPHL.
  • Expanded international coverage. Adds Madrid, Milan, Amsterdam, Taipei to Open-Meteo routing (alongside existing Tel Aviv, Munich, London, Tokyo, Seoul, Ankara, Lucknow, Wellington).
  • Requires the new ?include=resolution_criteria flag on /api/sdk/markets (live on Simmer backend 2026-05-03).

What's New in v1.20.1

  • Safety rails section first. Bounding contract surfaced at the top — paper-default, --live requirement, configurable caps, server-side risk monitor, strategy-side safeguards, reversibility.
  • Risk monitor framing genericized. Stop-loss / take-profit thresholds are described as configurable user settings rather than specific percentages. (See FAQ at docs.simmer.markets for current defaults — they're user-tunable in the dashboard.)
  • Wallet setup link genericized. Points at docs.simmer.markets/wallets instead of a named cross-skill.

What's New in v1.20.0

  • SDK 0.13.0 integration — uses SimmerClient.from_env() (auto-reads SIMMER_API_KEY, raises a clear RuntimeError with a dashboard pointer if unset). Requires simmer-sdk>=0.13.0.
  • Slim per skill catalog reshape (Phase 3) — duplicated wallet-setup / changelog / decorative content removed; SKILL.md trimmed to focus on what's specific to this skill.
  • Dead code removed — retired AUTOMATON_* env reads (the automaton runtime was retired 2026-04-20).

Setup

For wallet setup, see docs.simmer.markets/wallets.

Required environment:

  • SIMMER_API_KEY — get from simmer.markets/dashboard → SDK tab
  • WALLET_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

SettingEnvironment VariableDefaultDescription
Trading venueTRADING_VENUEpolymarketVenue to trade on. Set sim for paper trading.
Entry thresholdSIMMER_WEATHER_ENTRY_THRESHOLD0.15Buy when price below this
Exit thresholdSIMMER_WEATHER_EXIT_THRESHOLD0.45Sell when price above this
Max positionSIMMER_WEATHER_MAX_POSITION_USD2.00Maximum USD per trade
Max trades/runSIMMER_WEATHER_MAX_TRADES_PER_RUN5Maximum trades per scan cycle
LocationsSIMMER_WEATHER_LOCATIONSNYCComma-separated cities (NYC, Chicago, Seattle, Atlanta, Dallas, Miami)
Binary onlySIMMER_WEATHER_BINARY_ONLYfalseSkip range-bucket events (e.g., "34-35°F"), only trade binary yes/no markets
Smart sizing %SIMMER_WEATHER_SIZING_PCT0.05% of balance per trade
Slippage maxSIMMER_WEATHER_SLIPPAGE_MAX0.15Skip trades with slippage above this (0.15 = 15%)
Min liquiditySIMMER_WEATHER_MIN_LIQUIDITY0Skip markets with liquidity below this USD amount (0 = disabled)
Vol targetingSIMMER_WEATHER_VOL_TARGETINGfalseEnable volatility targeting for dynamic position sizing
Target volSIMMER_WEATHER_TARGET_VOL0.20Target annualized volatility (0.20 = 20%)
Vol max leverageSIMMER_WEATHER_VOL_MAX_LEVERAGE2.0Max scale-up multiplier in calm markets
Vol min allocSIMMER_WEATHER_VOL_MIN_ALLOC0.2Min allocation floor in volatile markets (0.2 = 20%)
Vol EWMA spanSIMMER_WEATHER_VOL_SPAN10EWMA span for vol calculation (lower = more responsive)
Order typeSIMMER_WEATHER_ORDER_TYPEGTCGTC (limit, waits for fill) or FAK (cancel if not filled). GTC recommended.

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, plus international cities (Tel Aviv, Munich, London, Tokyo, Seoul, Ankara, Lucknow, Wellington, Madrid, Milan, Amsterdam, Taipei). 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_TO_CITY (international) in weather_trader.py to extend coverage — PRs welcome.

SDK initialization

from simmer_sdk import SimmerClient

client = SimmerClient.from_env(venue="polymarket", live=True)

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

# 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

# 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

How It Works

Each cycle the script:

  1. Fetches active weather markets from Simmer API
  2. Groups markets by event (each temperature day is one event)
  3. Parses event names to get location and date
  4. Fetches NOAA forecast for that location/date
  5. Finds the temperature bucket that matches the forecast
  6. Safeguards: Checks context for flip-flop warnings, slippage, time decay
  7. Trend Detection: Looks for recent price drops (stronger buy signal)
  8. Entry: If bucket price < threshold and safeguards pass → BUY
  9. Exit: Checks open positions, sells if price > exit threshold
  10. Tagging: All trades tagged with sdk:weather for tracking

Smart Sizing

With --smart-sizing, position size is calculated as:

  • 5% of available USDC balance (configurable via SIMMER_WEATHER_SIZING_PCT)
  • Capped at max position setting ($2.00 default)
  • Falls back to fixed size if portfolio unavailable

Volatility Targeting

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)
  • High volatility: positions scale down → less risk
  • Low volatility: positions scale up → more alpha capture
  • Falls back to base size if insufficient price history (< 15 data points)

Safeguards

Before trading, the skill checks:

  • Flip-flop warning: Skips if you've been reversing too much
  • Slippage: Skips if estimated slippage > 15% (tunable)
  • 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
  • Trades tagged sdk:weather are excluded from generic copytrade sells.
  • You can track weather P&L separately

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).

"External wallet requires a pre-signed order"WALLET_PRIVATE_KEY is not set. Fix: export WALLET_PRIVATE_KEY=0x<your-polymarket-wallet-private-key>. The SDK signs orders automatically when this env var is present — do not attempt to sign orders manually.

"Balance shows $0 but I have funds on Polygon" — Polymarket V2 (live 2026-04-28) uses pUSD (PolyUSD, 1:1 backed by USDC.e). Migrate at simmer.markets/dashboard (~30s). Full guide: docs.simmer.markets/v2-migration.

"API key invalid" — get a new key from simmer.markets/dashboard → SDK tab.

Frequently asked questions

What to verify before installation and use

What does the polymarket-weather-trader source document cover?

Trade temperature markets on Polymarket using NOAA forecast data.

How do I install polymarket-weather-trader?

The source record exposes this install command: npx skills add https://github.com/SpartanLabsXyz/simmer-sdk --skill "skills/polymarket-weather-trader". Inspect the command and pinned source before running it.

Which permission-related actions were detected?

Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.

Alternatives

Compare before choosing

Computed 10045,511

coreyhaines31/marketingskills

ab-testing

When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program

Computed 10029,034

garrytan/gbrain

bulk-ingestion

End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.

Computed 10024,921

alirezarezvani/claude-skills

app-store-optimization

App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

Computed 1005,241

dotnet/skills

migrate-vstest-to-mtp

Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing