poly15m-v1 — Directional momentum BTC scalper

First 15-minute iteration. Composite signal (momentum + volume imbalance + velocity) fires a FOK taker at $0.53 between 90s and 270s. ATR-band filter, time-decaying retracement exit.

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

What it does

poly15m-v1 is the original 15-minute iteration of the 5-min engine, with timing scaled 3x. Three independent signals (price momentum, volume imbalance, velocity) are combined into a composite score. When that score clears the threshold AND ATR sits inside a healthy band, the bot fires a FOK taker at $0.53 sized at 7% of balance.

The edge

A 15-minute candle has lower signal-to-noise than 5 minutes: false starts in the first minute are common, but by minute 1.5-4.5 the move has usually established itself. v1's entry window (90s to 270s) targets exactly that zone. The composite score is harder to fool than any single signal alone: a fast price move with thin volume gets filtered out, a heavy volume with no price action gets filtered out.

How it works

  1. Connect to Binance WebSocket (BTC kline) plus Coinbase + Kraken as redundant feeds. The multi-feed median is the price signal, aligning with Chainlink RTDS aggregation.
  2. Compute composite continuously: momentum (% change over rolling window) + volume imbalance (aggressor flow) + velocity (% / sqrt-second).
  3. ATR filter: skip the candle if ATR < 0.08% (no movement to ride) or ATR > 0.40% (too volatile, signal unreliable).
  4. Fire FOK at $0.53 the moment composite ≥ COMPOSITE_SCORE_THRESHOLD (1.3) inside the 90-270s window.
  5. Exit logic (unless --no-exits): time-decaying retracement schedule. First 4 minutes only exit on 90% retracement; tightens to 30% by minute 10. Last 2 minutes are exit-frozen so resolution runs.
  6. Resolve via Gamma API on Chainlink RTDS.

Risk gates: anti-martingale multipliers (1.15x after win, 0.75x after loss), MAX_CONSEC_LOSSES = 4 triggers 15-min cooldown, MIN_BALANCE = $3.

Sample output

[25/05/2026, 15:32:14] Binance connected [25/05/2026, 15:32:14] Coinbase connected [25/05/2026, 15:32:14] Kraken connected [25/05/2026, 15:33:42] BUY (FOK) 13sh @ $0.53 ($7.04 incl fee) [25/05/2026, 15:33:42] Filled: 0xa1b2c3d4... [25/05/2026, 15:45:01] Resolved WIN | +$5.96 | Bal: $35.96

Design targets

Break-even at $0.53 entry (15-min crypto fee curve peaks at p=0.50):

fee = shares × 0.25 × 0.53 × (0.53 × 0.47)^2 ≈ 0.82% of bet

Required WR ≈ 53.8% to break even. Design target is 55-60% WR through the composite filter and ATR band. With ~96 candles per day (one every 15 min) and an estimated 15-25% triggered, that's 14-24 trades per day at $7-$10 each.

FAQ

Why pay $29 for v1 if v6 exists?

v6 is the current focus and adds 8 confirmation layers including a trained meta-model. v1 is the simplest 15-minute scalper and the cleanest baseline if you want to study how composite alone performs. Buyers often want both to compare.

What's included

  • poly15m/poly15m-v1.js
  • poly15m/run.sh (auto-restart wrapper)
  • polymarket-limits.js
  • README with composite weight tuning and a worked example of disabling exits

Configuration

FlagDefaultDescription
--asset BTCBTCAsset to trade. BTC supported at launch.
--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-loss 00Daily loss limit in USD. 0 = disabled.
--no-exitsDisable early exits, hold to resolution.

Related bots