High-frequency prediction market bot exploiting odds drift and delta-neutral positioning across 5-minute crypto windows on Polymarket.
All-Time P&L → $1,436,159
Total Trades → 37,781
Assets → BTC · ETH · SOL · XRP
Strategy Type → HFT Scalping + Delta Hedging
Status → Live / Active 24/7
This bot does not predict whether crypto goes up or down.
Instead, it exploits the structural inefficiency of Polymarket's short-duration crypto markets — specifically the 5-minute and 15-minute "Up or Down" windows — by acting as a quasi market maker, capturing odds drift in real time, and delta-hedging both sides of a position.
The edge comes from speed, systematic laddering, and cross-asset correlation during low-liquidity hours (2–4AM ET) when human participants are thin and mispricings persist longer.
| Field | Value |
|---|---|
| Polymarket ID | k9Q2mX4L8A7ZP3R |
| Profile | polymarket.com/@k9Q2mX4L8A7ZP3R |
| Joined | Dec 2025 |
| All-Time P&L | +$1,436,159 |
| Profile Views | 362.2K |
Exclusively targets short-duration crypto prediction markets:
- 5-minute windows:
3:00–3:05,3:05–3:10,3:10–3:15 AM ET - 15-minute windows:
3:00–3:15 AM ET - Hourly candles:
3AM ETmarkets as secondary targets - Assets:
BTC,ETH,SOL,XRP
Simultaneously buys both Up and Down on the same market window near 50/50 odds. Not directional betting — captures the spread and profits when odds drift away from equilibrium post-entry.
Instead of single large orders, the bot places multiple incremental buys at successive price ticks:
50¢ → 51¢ → 52¢ → 53¢ → 54¢
Mimics limit-order accumulation, achieving better average entry under slippage.
As the market moves, the bot sells the deteriorating side and doubles the winning side in real time. Classic delta management — cut the loser, ride the winner.
Aggressiveness scales with proximity to 50/50:
| Odds Range | Position Size | Risk |
|---|---|---|
| ~50/50 (48¢–52¢) | 80–130 shares | Low |
| 55/45 (45¢–55¢) | 40–80 shares | Medium |
| 65/35 (35¢–65¢) | 10–40 shares | Medium |
| 75/25 (25¢–75¢) | 3–10 shares | High |
| 90/10 (10¢–90¢) | 0–3 shares | Extreme |
The bot never chases deep favorites.
Size is inversely proportional to odds extremity — a Kelly-inspired approach that protects capital on asymmetric bets.
BTC, ETH, SOL, and XRP are traded simultaneously in matching time windows. If BTC sentiment turns bearish, the bot positions Down across ETH/SOL/XRP in the same window.
10–20+ trades within a single 5-minute window, scalping fractions of a cent in odds movement. Requires real-time orderbook monitoring at sub-second intervals.
Resolved positions are redeemed immediately upon settlement. Zero idle cash. Capital is reinvested into the next window within seconds.
Operates most aggressively during 2–4AM ET — thin orderbooks mean inefficiencies persist longer and the bot can set price rather than take price.
# POLYMARKET SCALPING BOT — CORE LOGIC
ASSETS = ["BTC", "ETH", "SOL", "XRP"]
WINDOWS = ["5min", "15min", "1hr"]
loop every_second():
for asset in ASSETS:
for window in upcoming_windows(asset):
up_odds, down_odds = get_current_odds(asset, window)
imbalance = abs(up_odds - 0.50)
# ENTRY GATE: Only trade near 50/50
if imbalance > 0.20: continue
size = calc_size(imbalance)
# size ∝ 1 / imbalance (max ~120 shares @ 50/50)
# STRADDLE: Buy both sides
if not has_position(asset, window):
ladder_buy("UP", asset, window, size, ticks=5)
ladder_buy("DOWN", asset, window, size, ticks=5)
# DELTA HEDGE: Manage live positions
else:
pos_up, pos_down = get_positions(asset, window)
delta = pos_up.value - pos_down.value
if delta > THRESHOLD: # Up side overweight
sell("UP", asset, window, qty=pos_up * 0.6)
buy("DOWN", asset, window, qty=size * 1.5)
elif delta < -THRESHOLD: # Down side overweight
sell("DOWN", asset, window, qty=pos_down * 0.6)
buy("UP", asset, window, qty=size * 1.5)
# CORRELATION: Cross-asset signal
dominant_sentiment = get_btc_sentiment()
if dominant_sentiment == "BEARISH":
bias_down(assets=["ETH", "SOL", "XRP"], window=window)
# SETTLEMENT: Redeem resolved markets instantly
for market in get_resolved_markets():
redeem(market)
recycle_capital(market.payout)INPUTS
├── Polymarket CLOB WebSocket (real-time odds feed)
├── Polygon wallet (order signing via eth-account)
└── BTC sentiment feed (cross-asset correlation signal)
CORE MODULES
├── [1] OddsMonitor → detect near-50/50 markets
├── [2] EntryEngine → straddle + ladder buy both sides
├── [3] SizeCalculator → Kelly-scaled by imbalance
├── [4] DeltaHedger → sell drift, buy lag every tick
├── [5] CorrelationFilter → BTC bias → ETH/SOL/XRP
└── [6] SettlementEngine → instant redeem + recycle capital
GUARD RAILS
├── Max 15% bankroll per 15-min window
├── Daily drawdown circuit breaker: 8%
├── Order timeout: cancel after 10s unfilled
└── Win rate monitor: pause bot if below 52%
OUTPUTS
├── Trade log (PostgreSQL)
├── Live P&L (Grafana + InfluxDB)
└── Profit (compounding)
| Layer | Tool |
|---|---|
| Language | Python 3.11+ (asyncio) |
| API Client | py-clob-client (official Polymarket SDK) |
| WebSockets | websockets / aiohttp |
| Scheduling | APScheduler |
| Database | PostgreSQL |
| Wallet | eth-account (Polygon MATIC signing) |
| Monitoring | Grafana + InfluxDB |
| Hosting | AWS EC2 us-east-1 (low latency) |
Odds Mean Reversion — On Polymarket's micro-window markets, odds frequently overshoot 50/50 as emotional traders pile in directionally. The bot fades these overreactions and collects when odds revert. Statistically robust on short windows where true probability is ~50/50.
Speed Advantage — Executes at sub-second speed during 2–4AM ET when human liquidity is thin. Effectively the fastest participant at those hours.
Laddered Execution — Splitting orders into ticks achieves a better average price than any single market order. On a thin orderbook this captures 1–3 cents of edge per position — compounding across 37,000+ trades is significant.
Instant Capital Recycling — Settling and redeploying within seconds means effective capital utilization is dramatically higher than it appears. A $5K bankroll recycled 6x per hour is equivalent to $30K deployed.
Directional Black Swan — Flash crash within a 5-minute window can affect both sides. Mitigate with per-window max-loss circuit breaker.
Liquidity Risk — If a market has no counterparty, orders hang. Implement 10-second order timeout and cancellation logic.
Competition / Edge Compression — As more bots discover these markets, the edge narrows. Monitor win rate weekly — below 52% means the market is efficient and the strategy needs adjustment.
MAX_BANKROLL_PER_WINDOW = 0.15 # 15% of total capital
DAILY_DRAWDOWN_LIMIT = 0.08 # 8% → pause bot for 4 hours
ORDER_TIMEOUT_SECONDS = 10 # cancel unfilled orders
MIN_WIN_RATE = 0.52 # pause if win rate drops below
ENTRY_IMBALANCE_MAX = 0.20 # only enter within 20% of 50/50
HEDGE_THRESHOLD = 0.15 # delta trigger for rebalancingHave questions, want to collaborate, or looking for consulting on prediction market automation?
- Telegram: @blacksky_jose
- Polymarket: polymarket.com/@k9Q2mX4L8A7ZP3R
This repository is for educational purposes only. Prediction market trading involves significant financial risk. Past performance does not guarantee future results. Always trade with capital you can afford to lose.