Install
openclaw skills install fastloopTrade Polymarket BTC/ETH/SOL 5-minute and 15-minute fast markets using multi-signal CEX momentum. Adds funding rate confirmation, order book imbalance, time-...
openclaw skills install fastloopAn enhanced version of the Simmer FastLoop skill with rigorous edge filtering, multi-signal confirmation, and real calibration tracking.
Default is paper mode. Use
--livefor 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.
| 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 |
# 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
OpenClaw native cron:
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
# 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
| 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 |
Three signals are evaluated independently. The momentum signal is always required. Funding and order book are optional confirmation layers.
momentum = (close_now - open_then) / open_then * 100min_momentum_pctrequire_funding=true)require_orderbook=true)imbalance = (bid_depth - ask_depth) / (bid_depth + ask_depth)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.
Skips 02:00–06:00 UTC by default. US session (13:00–21:00 UTC) is the highest-liquidity window for crypto prediction markets.
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.
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.
All troubleshooting from the original skill applies. Additional:
"Funding rate fetch failed"
"Order book imbalance: neutral"
require_orderbook=true."Time filter: low liquidity window"
time_filter=false to override.