poly15m-v6 — Enhanced orderbook signal BTC scalper
Polymarket book + Chainlink RTDS + CVD + OFI + chop filter + trained meta-model. Needs 3 of 8 confirmation layers before FOK taker at $0.52. Quarter-Kelly with drawdown scaling, holds to resolution.
| Strategy type | Scalping |
|---|---|
| Asset | BTC |
| Timeframe | 15m |
| Market type | Crypto binary |
| Minimum capital | $30 |
| Dependencies | @polymarket/clob-client, ws, ethers |
What it does
poly15m-v6 takes v5's Polymarket-book signal and stacks seven more confirmation layers on top, plus a trained meta-model for signal scaling. Entry requires at least 3 of the 8 layers to agree before firing a FOK taker at $0.52. The result is fewer trades, each with substantially more conviction.
The edge
Any single signal can be wrong. v5's book signal alone has a hit rate above coin-flip but well below what you'd want for a serious bet. Stacking independent signals raises the joint confidence: when book mid says Up, AND Chainlink RTDS confirms in the last 60 seconds, AND CVD shows aggressor buying, AND OFI shows bid-side stacking, the odds of being right go up multiplicatively.
The meta-model is what makes v6 different from "just add more signals". A logistic regression trained on the bot's own resolved trade history scales the composite confidence, so the bot learns which combinations of signals predict wins versus losses for this specific account in this specific market regime.
How it works
Eight confirmation layers, evaluated every cycle:
- Polymarket book signal: mid-price + depth imbalance (from v5)
- Chainlink RTDS confirmation: in the final 60s before entry deadline, RTDS spot agrees with book direction
- CVD (Cumulative Volume Delta): Binance aggressor flow agrees
- OFI (Order Flow Imbalance): bid/ask size changes per orderbook refresh
- Chop detector: skip if recent BTC has been crossing the SMA too often
- Trend filter: last 5 resolved outcomes — bias toward streak direction
- On-chain trade tape: Polymarket Data API recent trades agree with direction
- Futures liquidations: Binance USDM-Futures liquidation tape agrees
A trade fires when at least 3 of 8 agree. The trained meta-model in data/meta-model.json scales the resulting confidence score.
Sizing: quarter-Kelly scaled by rolling win rate and a drawdown curve. Conservative by design.
Entry: FOK taker at $0.52, between 90s and 500s into the candle. Hold to resolution.
Meta-model
tools/meta_label_train.py trains a logistic regression on the bot's own resolved trade history (read from data/*-resolved.json). The trained weights ship as data/meta-model.json and are loaded at startup:
[25/05/2026, 15:30:01] Meta-model loaded (n=287 trades, threshold 62/100)
Retrain after accumulating your own 50+ resolved trades:
python3 tools/meta_label_train.pyRestart the bot to pick up the new weights.
Sample output
[25/05/2026, 15:30:01] Meta-model loaded (n=287 trades, threshold 62/100) [25/05/2026, 15:30:01] Binance connected | Coinbase connected | Kraken connected [25/05/2026, 15:32:48] Signals: book=+0.18 RTDS=+0.16 CVD=+1.2 OFI=+0.14 (4/8 agree, meta=71/100) [25/05/2026, 15:32:49] BUY (FOK) 11sh Up @ $0.52 ($5.81 incl fee) [25/05/2026, 15:45:01] Resolved WIN | +$5.19 | Bal: $35.19
Design targets
Fee math at $0.52 entry (15-min crypto fee curve):
fee = shares × 0.25 × 0.52 × (0.52 × 0.48)^2 ≈ 0.81% of bet
Required WR ≈ 52.7%. Design target 55-58% realized WR with the 3-of-8 gate, pushing up to 58-62% on high-confidence (meta ≥ 70) trades.
Trade rate is intentionally low: only 5-12% of candles clear the 3-of-8 gate. Expect 5-12 trades per day on continuous coverage.
FAQ
Do I need to retrain the meta-model?
No. v6 ships with a pre-trained data/meta-model.json that works out of the box. Retraining improves accuracy once you've accumulated your own 50+ resolved trade history. Retrain monthly if you're running continuously.
How is v6 different from v7?
v6 fires FOK taker at $0.52. v7 has the same signal stack but enters via GTC maker (best bid + 1 tick, walking up every 8 seconds). v7 pays zero fee but has a fill-risk tail.
What's included
poly15m/poly15m-v6.jspoly15m/run.shpolymarket-limits.jstools/meta_label_train.py(Python 3.9+)data/meta-model.json(pre-trained)- README with signal weight tuning + meta-model retraining workflow
Configuration
| Flag | Default | Description |
|---|---|---|
| --asset BTC | BTC | Asset to trade. BTC supported at launch. |
| --live | — | Place real orders. Default is dry-run. |
| --sim-balance 30 | 30 | Starting balance in dry-run mode (USD). |
| --max-bet 10 | 10 | Hard cap per trade in USD. |
| --max-loss 0 | 0 | Daily loss limit in USD. 0 = disabled. |