# Polymarket Simmer Fastloop

> Trade Polymarket BTC/ETH/SOL 5/15-minute fast markets with momentum and order book filters.

- Skill: `dvcrn/polymarket-simmer-fastloop` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add dvcrn/polymarket-simmer-fastloop`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/polymarket-simmer-fastloop/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/dvcrn/polymarket-simmer-fastloop

---


# Polymarket Simmer FastLoop Trader

Automated trading skill for Polymarket BTC/ETH/SOL 5-minute and 15-minute fast markets. Uses a mean reversion strategy with momentum exhaustion detection, order book imbalance confirmation, and volatility-adjusted position sizing.

> **Default is paper mode.** Use `--live` for real trades.

## Strategy

When the latest 5-minute candle shows a rapid spike (momentum > threshold) the script buys the **reverse side**, capturing the pullback. Signals are filtered by:

- **Momentum**: Binance 1-minute candles, configurable threshold (default 1.0%).
- **Order Book Imbalance** (optional): Top 20 levels of Binance L2 book confirm directional bias.
- **NOFX Institutional Netflow**: Filters trades using institutional flow data.
- **Time-of-Day Filter**: Skips low-liquidity hours (02:00–06:00 UTC) by default.
- **Fee-Accurate EV**: Only trades when divergence exceeds fee breakeven + buffer.
- **Volatility-Adjusted Sizing**: High volatility reduces position size automatically.
- **Pre-Caching (Ignition)**: On every run, the skill scans and caches upcoming market IDs to disk (`fast_markets_cache.json`). At market open, the Simmer API briefly hides the market — the skill uses the cache to execute trades during this "API blackout" window, ensuring no opportunity is missed.

## Setup

### 1. Get Simmer API Key
- Register at [simmer.markets](https://simmer.markets).
- Go to **Dashboard** -> **SDK** tab.
- Copy your API key: `export SIMMER_API_KEY="your-key-here"`.

### 2. Required Environment Variables

| Variable | Required | Description | Values |
|----------|----------|-------------|--------|
| `SIMMER_API_KEY` | **Yes** | Your Simmer SDK key | Get from [simmer.markets](https://simmer.markets) |
| `TRADING_VENUE` | **Yes** | Execution environment | `simmer` (Paper) or `polymarket` (Live) |
| `WALLET_PRIVATE_KEY` | Optional | Your Polymarket wallet key | Required only if `TRADING_VENUE="polymarket"` |

- **`simmer`** (Default): Paper Trading. Simulates trades using virtual funds. No real USDC needed.
- **`polymarket`**: Real Trading. Connects to Polymarket. You **must** have USDC in the wallet.

> [!WARNING]
> Never share your `WALLET_PRIVATE_KEY` or `SIMMER_API_KEY`. The SDK signs trades locally; your private key is never transmitted.

## Quick Start

```bash
pip install simmer-sdk
export SIMMER_API_KEY="your-key-here"

# Paper mode (default)
python polymarket-simmer-fastloop.py

# Live trading
python polymarket-simmer-fastloop.py --live

# Check win rate and P&L stats
python polymarket-simmer-fastloop.py --stats

# Resolve expired trades against real outcomes
python polymarket-simmer-fastloop.py --resolve

# Quiet mode for cron
python polymarket-simmer-fastloop.py --live --quiet
```

## Cron Setup

**OpenClaw:**
```bash
openclaw cron add \
  --name "Simmer FastLoop" \
  --cron "*/5 * * * *" \
  --tz "UTC" \
  --session isolated \
  --message "Run: cd /path/to/skill && python polymarket-simmer-fastloop.py --live --quiet. Show output summary." \
  --announce
```

**Linux crontab:**
```
*/5 * * * * cd /path/to/skill && python polymarket-simmer-fastloop.py --live --quiet
```

## All Settings

| Setting | Default | Description |
|---------|---------|-------------|
| `entry_threshold` | 0.05 | Min divergence from 50c |
| `min_momentum_pct` | 1.0 | Min % asset move to trigger |
| `max_position` | 5.0 | Max $ per trade |
| `signal_source` | binance | binance or coingecko |
| `lookback_minutes` | 5 | Candle lookback window |
| `min_time_remaining` | 60 | Skip if < N seconds left |
| `target_time_min` | 90 | Prefer markets with >= N seconds left |
| `target_time_max` | 210 | Prefer markets with <= N seconds left |
| `asset` | BTC | BTC, ETH, or SOL |
| `window` | 5m | 5m or 15m |
| `volume_confidence` | true | Skip low-volume signals |
| `require_orderbook` | false | Require order book confirmation |
| `time_filter` | true | Skip 02:00–06:00 UTC |
| `vol_sizing` | true | Adjust size by volatility |
| `fee_buffer` | 0.05 | Extra edge above fee breakeven |
| `daily_budget` | 10.0 | Max spend per UTC day |
| `starting_balance` | 1000.0 | Paper portfolio starting balance |

## Troubleshooting

**"Momentum below threshold"** — Asset move is too small. Lower `min_momentum_pct` if needed.

**"Order book imbalance: neutral"** — Market is balanced, signal skipped when `require_orderbook=true`.

**"Time filter: low liquidity window"** — Current hour is 02–06 UTC. Set `time_filter=false` to override.

