Trade Polymarket BTC/ETH/SOL 5-minute and 15-minute fast markets using multi-signal CEX momentum. Adds funding rate confirmation, order book imbalance, time-of-day filtering, volatility-adjusted sizing, win-rate calibration, and fee-accurate EV math. Use when user wants to trade sprint/fast markets with a more rigorous edge filter.
Scanned 9/7/2026
Install to Claude Code
npx -y skills add modbender/skill-library-mcp --skill fastloop --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Fastloop?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/modbender-fastloop)More formats (shields.io, HTML) on the badges page.
---
name: polymarket-fast-loop-improved
displayName: Polymarket FastLoop Trader (Improved)
description: Trade Polymarket BTC/ETH/SOL 5-minute and 15-minute fast markets using multi-signal CEX momentum. Adds funding rate confirmation, order book imbalance, time-of-day filtering, volatility-adjusted sizing, win-rate calibration, and fee-accurate EV math. Use when user wants to trade sprint/fast markets with a more rigorous edge filter.
metadata: {"clawdbot":{"emoji":"⚡","requires":{"env":["SIMMER_API_KEY"],"pip":["simmer-sdk"]},"cron":null,"autostart":false,"automaton":{"managed":true,"entrypoint":"fastloop_improved.py"}}}
authors:
- Based on Simmer (@simmer_markets) original, enhanced
version: "1.0.0"
published: false
---
# Polymarket FastLoop Trader — Improved
An enhanced version of the Simmer FastLoop skill with rigorous edge filtering, multi-signal confirmation, and real calibration tracking.
> **Default is paper mode.** Use `--live` for real trades. Always run 100+ paper trades first to validate your win rate before going live.
> ⚠️ Fast markets carry Polymarket's 10% fee. Your signal needs to be right **63%+ of the time** to profit. This skill will tell you your actual win rate.
## Key Improvements Over Original
| Feature | Original | Improved |
|---------|----------|----------|
| Fee math | Approximate | Exact breakeven with configurable buffer |
| Signal | Binance momentum only | Momentum + funding rate + order book |
| Momentum threshold | 0.5% (too low) | 1.0% default, calibration-driven |
| Time filtering | None | Skips low-liquidity hours |
| Position sizing | Fixed | Volatility-adjusted |
| Win rate tracking | None | Logs outcomes, reports calibration |
| Market selection | Soonest expiry | Configurable sweet-spot window |
| Stats | None | Full P&L, win rate, signal breakdown |
## Quick Start
```bash
# Install dependency
pip install simmer-sdk
# Set API key
export SIMMER_API_KEY="your-key-here"
# Paper mode — see what would happen (default)
python fastloop_improved.py
# Go live
python fastloop_improved.py --live
# Check calibration stats (win rate, P&L, signal accuracy)
python fastloop_improved.py --stats
# Resolve any expired paper trades against real outcomes
python fastloop_improved.py --resolve
# Quiet mode for cron
python fastloop_improved.py --live --quiet
```
## How to Run on a Loop
**OpenClaw native cron:**
```bash
openclaw cron add \
--name "FastLoop Improved" \
--cron "*/5 * * * *" \
--tz "UTC" \
--session isolated \
--message "Run improved fast loop: cd /path/to/skill && python fastloop_improved.py --live --quiet. Show output summary." \
--announce
```
**Linux crontab:**
```
*/5 * * * * cd /path/to/skill && python fastloop_improved.py --live --quiet
```
## Configuration
```bash
# Raise momentum threshold (recommended: 1.0–2.0%)
python fastloop_improved.py --set min_momentum_pct=1.5
# Require order book confirmation
python fastloop_improved.py --set require_orderbook=true
# Set sweet-spot window for market selection (seconds remaining)
python fastloop_improved.py --set target_time_min=90 --set target_time_max=180
# Disable time-of-day filter (trade 24/7)
python fastloop_improved.py --set time_filter=false
```
### All Settings
| Setting | Default | Description |
|---------|---------|-------------|
| `entry_threshold` | 0.05 | Min divergence from 50¢ |
| `min_momentum_pct` | 1.0 | Min % BTC move (raised from 0.5) |
| `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 less than 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_funding` | false | Require funding rate confirmation |
| `require_orderbook` | false | Require order book imbalance confirmation |
| `time_filter` | true | Skip low-liquidity hours (02:00–06:00 UTC) |
| `vol_sizing` | true | Adjust size by recent volatility |
| `fee_buffer` | 0.05 | Extra edge required above fee breakeven |
| `daily_budget` | 10.0 | Max spend per UTC day |
| `starting_balance` | 1000.0 | Paper portfolio starting balance |
## Signal Logic
Three signals are evaluated independently. The momentum signal is always required. Funding and order book are optional confirmation layers.
### 1. Momentum (always on)
- Fetch N one-minute Binance candles
- `momentum = (close_now - open_then) / open_then * 100`
- Must exceed `min_momentum_pct`
### 2. Funding Rate (optional, `require_funding=true`)
- Fetch Binance perpetual funding rate for the asset
- Positive funding + upward momentum = longs crowded, signal is weaker → SKIP
- Negative funding + upward momentum = confirmation → TRADE
- Logic inverted for downward momentum
### 3. Order Book Imbalance (optional, `require_orderbook=true`)
- Fetch top 20 levels of Binance L2 book
- `imbalance = (bid_depth - ask_depth) / (bid_depth + ask_depth)`
- Imbalance > 0.1 confirms upward momentum
- Imbalance < -0.1 confirms downward momentum
### Fee-Accurate EV
```
entry_price = market price of chosen side
win_profit = (1 - entry_price) × (1 - fee_rate)
breakeven = entry_price / (win_profit + entry_price)
required_div = (breakeven - 0.50) + fee_buffer
```
Trade only fires if `actual_divergence ≥ required_div`.
### Time-of-Day Filter
Skips 02:00–06:00 UTC by default. US session (13:00–21:00 UTC) is the highest-liquidity window for crypto prediction markets.
### Volatility-Adjusted Sizing
```
24h_vol = std(hourly_returns_last_24h) × √24
size = max_position × min(1.0, 0.02 / 24h_vol)
```
High volatility → smaller position. Low volatility with strong trend → full size.
## Win Rate Calibration
The skill tracks every paper and live trade in `fastloop_ledger.json`. After market expiry, run `--resolve` to fetch the actual Polymarket outcome and log it. After 50+ trades, `--stats` shows your real win rate broken down by momentum threshold, time of day, and asset — so you can tune settings based on actual data rather than guessing.
## Troubleshooting
All troubleshooting from the original skill applies. Additional:
**"Funding rate fetch failed"**
- Binance futures API may be rate-limited. Skill falls back to momentum-only.
**"Order book imbalance: neutral"**
- Market is balanced, signal is ambiguous — skipped if `require_orderbook=true`.
**"Time filter: low liquidity window"**
- Current UTC hour is in the 02–06 block. Set `time_filter=false` to override.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!