poly5m-v3 — Maker strategy under post-2026 fee rules

Two-phase maker on 5-min BTC binaries. Phase 1 (0-240s) quotes both sides at 6¢ spread via WebSocket, 15s refresh. Phase 2 (240-300s) posts directional GTC at $0.52 once Binance moves 0.12%.

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

What it does

poly5m-v3 was the first 5-minute iteration to swap FOK taker entries for GTC maker orders. Zero taker fee. Plus eligibility for Polymarket maker rewards. The 5-minute window splits into a market-making phase and a late directional phase.

The edge

5-minute taker fees peak at 1.56% at p=0.50. A $0.50 maker fill costs 0%. Required win rate drops from ~54% (taker) to 50% (maker). Plus maker rewards stack on top. The risk is that 5-minute windows are too short for many maker orders to fill, so v3 splits the window into a long MM phase (where fills can happen any time) and a short directional phase (where Binance picks the winner).

How it works

Phase 1 — Market-making (0-240s, 4 minutes)

  • Post a GTC buy on both Up and Down at $0.50 ± 3¢ (MM_SPREAD = 0.06)
  • 10 shares per side (MM_SIZE)
  • Refresh quotes every 15s via Polymarket WebSocket (MM_UPDATE_INTERVAL = 15000)

Phase 2 — Directional (240-300s, last minute)

  • Compute Binance price move since candle open
  • If the move is ≥ 0.12% (DIR_MIN_MOVE_PCT), that direction is the winner
  • Post a GTC buy on the winning side at $0.52 (DIR_PRICE_YES)
  • 15 shares (DIR_SIZE)

Risk gates

  • MAX_BET = $10 per trade
  • MAX_POSITION_PER_MARKET = 30 shares per side
  • MAX_CONSEC_LOSSES = 5
  • CANCEL_TIMEOUT_MS = 2000: don't wait longer than 2s for a cancel ACK

Sample output

[25/05/2026, 14:30:01] 📡 Binance connected | 📡 Polymarket WS connected [25/05/2026, 14:30:14] 📝 POST Up 10sh @ $0.47 [a3c9d12f...] [25/05/2026, 14:30:14] 📝 POST Down 10sh @ $0.43 [b8e2c4a1...] [25/05/2026, 14:32:48] FILL Down 10sh @ $0.43 [25/05/2026, 14:34:14] Phase 2: Binance +0.16% — posting Up @ $0.52 [25/05/2026, 14:34:14] 📝 POST Up 15sh @ $0.52 [d7f1c93e...] [25/05/2026, 14:34:51] FILL Up 15sh @ $0.52 [25/05/2026, 14:35:01] Resolved Up WIN | +$5.20 (zero taker fee) | Bal: $35.20

Design targets

Break-even at $0.50 maker fill: 50% WR. Design target 52-55% WR on Phase 2 directional fills. Phase 1 MM fills are roughly even on price action.

The 5-minute window is short: only 60 seconds for Phase 2. Maker orders that don't fill within that window expire worthless. Realistic fill rate is 40-60% of Phase 2 attempts. v3 trades fewer than the FOK variants but each trade has better fee math.

FAQ

How does v3 differ from the 15-min v3?

Same two-phase structure, different timing. 15-min v3 has 720s for Phase 1 and 180s for Phase 2 (Polymarket WS + multi-exchange median). 5-min v3 has 240s + 60s and uses Binance alone for Phase 2 picking. The 5-min variant has tighter timing and lower fill probability per cycle.

Can I run 5-min v3 alongside 15-min v3?

Yes. They operate on different markets (5-min vs 15-min slots) and use different lock files. Position cap shared via wallet but not per-market.

What's included

  • poly5m/poly5m-v3.js
  • poly5m/scripts/v3-run.sh
  • polymarket-limits.js
  • README with maker rewards setup and spread tuning notes

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).
--max-bet 1010Hard cap per trade in USD.
--max-position 3030Maximum shares per side per market.

Related bots