← 返回 Skills 市场
richducat

Polymarket Weather Trader

作者 richducat · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
94
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install dolph-weather-trader
功能描述
Trade Polymarket weather markets using NOAA (US) and Open-Meteo (international) forecasts via Simmer API. Inspired by gopfan2's $2M+ strategy. Use when user...
使用说明 (SKILL.md)

Polymarket Weather Trader

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.

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

  • Volatility Targeting: Dynamic position sizing based on realized market volatility. Uses EWMA of log returns from price history. High vol → smaller positions, low vol → larger positions. Enable with --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)

v1.14.0

  • Fixed env var names to match autotune registry (old names still work as aliases):
    • SIMMER_WEATHER_ENTRYSIMMER_WEATHER_ENTRY_THRESHOLD
    • SIMMER_WEATHER_EXITSIMMER_WEATHER_EXIT_THRESHOLD
    • SIMMER_WEATHER_MAX_POSITIONSIMMER_WEATHER_MAX_POSITION_USD
    • SIMMER_WEATHER_MAX_TRADESSIMMER_WEATHER_MAX_TRADES_PER_RUN
  • New tunable: SIMMER_WEATHER_SLIPPAGE_MAX — adjustable slippage safeguard (default 15%). Set higher for research mode on illiquid markets.
  • New tunable: 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.

v1.13.0

  • Binary Only Mode: New SIMMER_WEATHER_BINARY_ONLY config to skip range-bucket events (e.g., "NYC 34-35°F") and only trade binary yes/no weather markets

v1.2.0

  • Max Trades Per Run: New SIMMER_WEATHER_MAX_TRADES config to limit trades per scan cycle (default: 5)

v1.1.1

  • Status Script: New scripts/status.py for quick balance and position checks
  • API Reference: Added Quick Commands section with API endpoints

v1.1.0

  • Source Tagging: All trades tagged with sdk:weather for 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:

  1. Ask for Simmer API key

    • They can get it from simmer.markets/dashboard → SDK tab
    • Store in environment as SIMMER_API_KEY
  2. Ask for wallet private key (required for live trading)

    • This is the private key for their Polymarket wallet (the wallet that holds USDC)
    • Store in environment as WALLET_PRIVATE_KEY
    • The SDK uses this to sign orders client-side automatically — no manual signing needed
  3. 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)
  4. Save settings to environment variables

  5. Set up cron (disabled by default — user must enable scheduling)

Configuration

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

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

# Combine: frequent scanning, minimal noise
python weather_trader.py --live --smart-sizing --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 \x3C 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

This prevents over-deployment and scales with your account size.

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

Combines with smart sizing: first calculate base size from portfolio %, then apply the vol multiplier.

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 \x3C 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: $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

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 in the environment
  • The SDK signs orders automatically when this env var is present — no manual signing code needed
  • Fix: export WALLET_PRIVATE_KEY=0x\x3Cyour-polymarket-wallet-private-key>
  • Do NOT attempt to sign orders manually or modify the skill code — the SDK handles it

"Balance shows $0 but I have USDC on Polygon"

  • Polymarket uses USDC.e (bridged USDC, contract 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174) — not native USDC
  • If you bridged USDC to Polygon recently, you likely received native USDC
  • Swap native USDC to USDC.e, then retry

"API key invalid"

  • Get new key from simmer.markets/dashboard → SDK tab
安全使用建议
This skill appears to implement a coherent weather-trading bot, but there are important red flags you should address before installing or providing secrets: - Do not paste your main wallet private key into an environment variable without understanding how it will be used and stored. SKILL.md asks for WALLET_PRIVATE_KEY for live trading but the package manifest does not consistently declare it — ask the author why the credential is omitted from the declared requirements and how the key is consumed. - Prefer safer signing methods: hardware wallet, ephemeral signing, or local-only signing; if the Simmer SDK supports injecting a signing callback rather than reading a raw private key, use that. - Run in dry-run mode first (the script supports a non-live/dry-run) and inspect behavior. Use a dedicated, funded test/trading wallet with minimal funds if you must test live trading. - Audit the 'simmer-sdk' package source (PyPI/GitHub) before installing; verify the package is official and inspect what it does with API keys and private keys. - Because the skill can be scheduled/autonomous, avoid enabling cron/autostart until you trust its operation and secrets handling. - Ask the skill author to: (1) explicitly declare all required environment variables (including WALLET_PRIVATE_KEY if needed), (2) document how private keys are used/stored and whether they are transmitted anywhere, and (3) provide secure signing alternatives or documented instructions for minimizing risk. If you are not comfortable providing a private key or enabling automated trading, do not install or do not enable live/scheduled mode. If you proceed, use limited funds and rotate keys after testing.
功能分析
Type: OpenClaw Skill Name: dolph-weather-trader Version: 1.0.0 The skill bundle implements a weather-based trading strategy for Polymarket using NOAA and Open-Meteo forecasts. The core logic in `weather_trader.py` and `scripts/status.py` facilitates market discovery, forecast parsing, and trade execution via the `simmer-sdk`. While the skill requires sensitive environment variables such as `SIMMER_API_KEY` and `WALLET_PRIVATE_KEY` (for client-side transaction signing), these are plausibly required for the stated purpose of automated trading. The code does not exhibit signs of data exfiltration, malicious execution, or prompt injection, and its behavior is consistent with the provided documentation.
能力标签
cryptorequires-wallet
能力评估
Purpose & Capability
The skill's stated goal (trading Polymarket using Simmer forecasts) aligns with the code: it calls NOAA/Open-Meteo and the Simmer API and requires the simmer-sdk. However SKILL.md instructs the user to provide and store a wallet private key (WALLET_PRIVATE_KEY) for live trading, while the bundle metadata (clawhub.json and top-level registry summary) either omit or inconsistently list required env vars. Asking for a private key is plausible for live automated trading, but the credential is not declared consistently in the skill manifest, which is an incoherence and a security concern.
Instruction Scope
Runtime instructions explicitly tell the agent to ask for and store sensitive secrets (SIMMER_API_KEY and a wallet private key) and to save many runtime tunables as environment variables; they also advise setting up cron for scheduled runs. Collecting and storing private keys in environment variables is risky and the instructions do not provide secure alternatives (e.g., hardware wallet, local signing, ephemeral signing). The SKILL.md gives the agent broad authority to 'save settings to environment variables' which could lead to secrets being persisted in agent runtime environment without adequate safeguards.
Install Mechanism
There is no download/install script in the bundle (instruction-only plus code files), which reduces some risk. clawhub.json declares a pip dependency on 'simmer-sdk' — a normal package installable from PyPI (moderate risk typical of pip packages). There is an inconsistency between the top-level 'Requirements' summary (which claimed no required env vars) and clawhub.json (which lists SIMMER_API_KEY), but there are no download-from-unknown-URL install steps or archive extraction in the package.
Credentials
The skill requires and documents many tunable env vars (entry/exit thresholds, sizing, vol targeting), which is reasonable for a trading bot. The notable issue: SKILL.md instructs the user to supply WALLET_PRIVATE_KEY (sensitive) for live trading, but the manifest does not clearly declare this required credential. The bundle's recorded requirements are inconsistent, and the runtime guidance to store private keys in environment variables is disproportionately risky relative to the stated description unless the user is explicitly warned and given safer alternatives.
Persistence & Privilege
always: false and autostart: false minimize forced persistence. The automaton is marked 'managed' with an entrypoint weather_trader.py, meaning the system can run the script when invoked, and the skill supports scheduling (user must enable cron). Autonomous invocation is allowed (platform default). Combined with the request for a wallet private key this increases potential impact (automated trades if enabled), so users should be cautious before providing live-trading credentials or enabling scheduling.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install dolph-weather-trader
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /dolph-weather-trader 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Polymarket Weather Trader v1.17.0 — Dynamic Volatility Targeting and Enhanced Safeguards - Adds volatility targeting for position sizing based on market volatility (EWMA of log returns). Configure with the `--vol-targeting` flag or `SIMMER_WEATHER_VOL_TARGETING=true`. - New tunables for volatility targeting: target annualized volatility, max leverage, allocation floor, and EWMA span. - New slippage and liquidity filters to skip illiquid or high-slippage markets. - Improved environment variable names for better configuration and autotune compatibility. - Exposes more settings as tunables, including locations and binary-only mode. - Maintains backward compatibility with legacy environment variable names.
元数据
Slug dolph-weather-trader
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Polymarket Weather Trader 是什么?

Trade Polymarket weather markets using NOAA (US) and Open-Meteo (international) forecasts via Simmer API. Inspired by gopfan2's $2M+ strategy. Use when user... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 94 次。

如何安装 Polymarket Weather Trader?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install dolph-weather-trader」即可一键安装,无需额外配置。

Polymarket Weather Trader 是免费的吗?

是的,Polymarket Weather Trader 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Polymarket Weather Trader 支持哪些平台?

Polymarket Weather Trader 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Polymarket Weather Trader?

由 richducat(@richducat)开发并维护,当前版本 v1.0.0。

💬 留言讨论