技能详情(站内镜像,无评论)
作者:AD88 @adlai88
许可证:MIT-0
MIT-0 ·免费使用、修改和重新分发。无需归因。
版本:v1.15.1
统计:⭐ 4 · 3.6k · 16 current installs · 19 all-time installs
⭐ 4
安装量(当前) 19
🛡 VirusTotal :可疑 · OpenClaw :可疑
Package:adlai88/polymarket-weather-trader
安全扫描(ClawHub)
- VirusTotal :可疑
- OpenClaw :可疑
OpenClaw 评估
The skill largely does what it says (trades Polymarket using Simmer/NOAA/Open‑Meteo) but has several mismatches between its documentation, manifest, and runtime requirements — notably around sensitive credentials (wallet private key) and differing default tunables — so treat it with caution.
目的
Overall capability matches the name/description: the code calls NOAA/Open‑Meteo and the Simmer SDK to find/evaluate and (optionally) execute trades on Polymarket. The declared pip dependency (simmer-sdk) is appropriate. However, metadata and top-level requirement summaries in the registry snapshot are inconsistent with the included clawhub.json and SKILL.md (see environment/credential notes below). Also some default values differ between SKILL…
说明范围
SKILL.md explicitly instructs the installer to ask for and store a wallet private key (WALLET_PRIVATE_KEY) in the environment for live trading. The runtime instructions also direct saving many tunables to env vars, enabling cron scheduling, and enabling live trading with a flag. Asking for a private key and storing it in env is functionally coherent for an automated trading bot, but it's sensitive and should be clearly declared and justified i…
安装机制
This is an instruction-only skill with included Python scripts; clawhub.json declares a pip dependency on 'simmer-sdk' which is expected. There are no downloads from arbitrary URLs or archive extraction. No install-time network fetches or suspicious installers were found in the provided manifest.
证书
The skill requires a Simmer API key (SIMMER_API_KEY) which is appropriate. However: (1) SKILL.md instructs the user to provide a WALLET_PRIVATE_KEY for live trading but the registry-level 'Required env vars' summary and clawhub.json do not list WALLET_PRIVATE_KEY as a required secret — an inconsistency. (2) Several runtime tunables are exposed as env vars and via clawhub.json, but the defaults differ across SKILL.md, clawhub.json, and config.j…
持久
The skill is not always: true and does not request elevated platform privileges. It uses simmer_sdk.skill.load_config/update_config to manage its own config (expected). Autonomous invocation is allowed (platform default) but not combined with 'always' or other high‑privilege flags, so persistence/privilege is within normal bounds.
安装(复制给龙虾 AI)
将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。
请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「Polymarket Weather Trader」。简介:Trade Polymarket weather markets using NOAA (US) and Open-Meteo (international)…。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/adlai88/polymarket-weather-trader/SKILL.md
(来源:yingzhi8.cn 技能库)
SKILL.md
---
name: polymarket-weather-trader
description: Trade Polymarket weather markets using NOAA (US) and Open-Meteo (international) forecasts via Simmer API. Inspired by gopfan2's $2M+ strategy. Use when user wants to trade temperature markets, automate weather bets, check forecasts, or run gopfan2-style trading.
metadata:
author: Simmer (@simmer_markets)
version: "1.15.0"
displayName: Polymarket Weather Trader
difficulty: beginner
attribution: Strategy inspired by gopfan2
---
# 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.14.0
- **Fixed env var names** to match autotune registry (old names still work as aliases):
- `SIMMER_WEATHER_ENTRY` → `SIMMER_WEATHER_ENTRY_THRESHOLD`
- `SIMMER_WEATHER_EXIT` → `SIMMER_WEATHER_EXIT_THRESHOLD`
- `SIMMER_WEATHER_MAX_POSITION` → `SIMMER_WEATHER_MAX_POSITION_USD`
- `SIMMER_WEATHER_MAX_TRADES` → `SIMMER_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) |
**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
```bash
# 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
```bash
# 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
# 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 < 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.
## 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: $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<your-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