poly5m-v1 — Taker scalper with Binance speed edge

First 5-minute scalper. Binance WebSocket triggers FOK taker at $0.51 on a 0.10% same-direction move between 15-180s. Reversal exit at $0.48, 15-min SMA trend filter, skips US market hours.

Version v1.0.0 · One-time payment · Source code download
Strategy typeScalping
AssetBTC
Timeframe5m
Market typeCrypto binary
Minimum capital$30
Dependencies@polymarket/clob-client, ws, ethers

What it does

poly5m-v1 is the original 5-minute scalper that started the suite. Binance WebSocket gives sub-second BTC price ticks; the bot fires a FOK taker at $0.51 the moment BTC has moved at least 0.10% in the same direction as the 15-minute SMA trend, anywhere between 15 and 180 seconds into the candle.

The edge

Polymarket binary mid-prices update slowly relative to Binance because each book quote requires a market-maker round-trip. In the first minutes of a fresh candle, a fast BTC move on Binance is already directional information, but the Polymarket book hasn't fully repriced yet. v1 exploits that staleness.

The 15-minute SMA filter prevents the worst losses: a contrarian move against the dominant trend usually reverses, while a same-direction move usually continues. Backtests showed 70.8% win rate over 7 days / 185 trades / 10.4% max drawdown (numbers from source comments, your mileage will vary).

How it works

  1. Connect to Binance WebSocket (BTC kline 1m). REST fallback every 2s if WS drops.
  2. Compute 15-minute SMA from rolling 1-minute closes.
  3. Detect a 0.10% move (--threshold) from candle open in either direction.
  4. Trend gate: only fire if move direction matches SMA trend
  5. Entry window: 15s to 180s into the 5-minute candle (MIN_WAIT_SEC to MAX_ENTRY_SEC)
  6. Size: 8% of balance, rolling half-Kelly after 10 trades, hard cap --max-bet
  7. FOK taker at $0.51
  8. Reversal exit: if best bid drops below $0.48, sell at market (REVERSAL_EXIT_PRICE)
  9. Skip US market hours (14:00-21:00 UTC) — backtests showed worse hit rate during these hours

Risk: MAX_CONSEC_LOSSES = 5 triggers cooldown.

Sample output

[25/05/2026, 13:32:14] 📡 Binance connected [25/05/2026, 13:32:48] BTC +0.12% from open, SMA15 trend UP — entering Up [25/05/2026, 13:32:48] 🎯 [LIVE] BUY Up — 15sh @ $0.51 ($7.71 incl fee) [25/05/2026, 13:32:48] ✅ Order 0xa1b2c3d4... [25/05/2026, 13:35:01] Resolved WIN | +$7.29 | Bal: $37.29

Design targets

Break-even at $0.51 taker entry (5-min crypto fee curve):

fee = shares × 0.25 × 0.51 × (0.51 × 0.49)^2 ≈ 0.79% of bet

Required WR ≈ 51.6%. Source backtest comments report 70.8% WR over 7 days / 185 trades, which is well above break-even. Treat that as a historical reference, not a guarantee.

Trade rate: 10-25 trades per day depending on BTC volatility and how often the threshold + trend gate aligns.

FAQ

Why does v1 skip US market hours by default?

Backtests showed lower hit rate during 14:00-21:00 UTC (US trading session). The hypothesis is that more sophisticated MMs are active during US hours and reprice the Polymarket book faster, eroding the speed edge. You can override SKIP_HOURS_UTC in source if you want continuous coverage.

Why v1 if v4 exists?

v1 is the simplest scalper and the cheapest to study. v4 is the active "Gabagool" buy-both-sides strategy with different mechanics. Different strategies, can run side-by-side.

What's included

  • poly5m/poly5m-v1.js
  • poly5m/scripts/v1-run.sh (auto-restart wrapper)
  • polymarket-limits.js
  • README with backtest summary, SKIP_HOURS_UTC customization, and reversal-exit tuning

Configuration

FlagDefaultDescription
--asset BTCBTCAsset to trade. BTC, ETH, SOL, XRP supported.
--livePlace real orders. Default is dry-run.
--sim-balance 3030Starting balance in dry-run mode (USD).
--threshold 0.100.10Minimum % BTC move required to fire entry.
--max-bet 1010Hard cap per trade in USD.

Related bots