polydaily — Daily BTC pair arbitrage bot

Buy-both-sides Gabagool on daily BTC markets (threshold + Up/Down). Picks up cheap YES + NO, locks profit when pair stays below $0.95. Tracks up to 3 markets at once across a ±$1k strike range.

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

What it does

polydaily applies the Gabagool buy-both-sides strategy to daily BTC markets. Two market types are covered:

  1. Threshold: "Will BTC be above $X on {date}?" — YES is cheap when BTC trades below the strike, NO is cheap when BTC trades above the strike.
  2. Up/Down: "Will BTC be up or down on {date}?" — sides oscillate cheap based on intraday momentum.

When the average pair-cost (YES + NO) falls below $0.95, the position is locked-in profitable.

The edge

A daily candle gives 24 hours of oscillation. BTC will rally and dump several times in any 24-hour window. Each oscillation makes one side momentarily cheap. A patient bot lifting cheap sides as they appear accumulates a balanced book at a lower average cost than either side alone would have cost.

Capital churn is the trade-off. Daily markets lock capital for up to 24 hours per cycle, so $30 starting capital with 3 simultaneous markets means $10 per market. The 5¢+ pair margin is small per share but compounds over weeks of continuous operation.

How it works

  1. Discover markets every 5 minutes (DISCOVERY_INTERVAL_MS): Gamma API search for today's BTC threshold + Up/Down markets within ±$1k of current spot (THRESHOLD_RANGE_K = 1)
  2. Refresh BTC price every 2 minutes (PRICE_REFRESH_MS)
  3. Poll orderbooks every 60 seconds (POLL_INTERVAL_MS)
  4. Buy condition: best ask on either side ≤ MAX_BUY_PRICE ($0.49) AND ask size ≥ MIN_ASK_SIZE (5)
  5. Completion bonus: when one side is already held, the second side can be bought at up to MAX_BUY_PRICE_COMPLETION ($0.51) to lock the pair
  6. Pair-cost check: only buy if avg_YES + avg_NO would stay below PAIR_COST_TARGET ($0.95)
  7. Size: 20% of balance per side, hard cap MAX_BET_PER_SIDE ($15)
  8. Cooldown: 30 seconds between buys on the same market (BUY_COOLDOWN_MS)
  9. Track up to 3 markets concurrently (MAX_POSITIONS)
  10. Hold to resolution (end of day, midnight UTC for most markets)

Sample output

[24/05/2026, 09:14:32] Polymarket WS connected [24/05/2026, 09:15:01] Discovered 4 BTC markets in ±$1k range (3 threshold, 1 Up/Down) [24/05/2026, 09:18:42] BUY (FOK) 15sh "BTC above $110k?" Yes @ $0.46 ($6.91 incl fee) [24/05/2026, 14:32:14] BUY (FOK) 15sh "BTC above $110k?" No @ $0.47 ($7.06 incl fee) [24/05/2026, 14:32:14] Pair locked: $0.460 + $0.470 = $0.930 (7¢ margin) [25/05/2026, 00:00:01] Resolved Yes WIN | +$15.00 - $13.97 = +$1.03 | Bal: $31.03

Design targets

Locked-in margin per matched share at $0.95 pair cost: $0.05 per share. 15 matched shares per pair = $0.75 gross, minus fees ≈ $0.40-$0.60 net.

Realistic cycle: 1-3 locked pairs per day across 3 simultaneous markets = $0.50-$1.80 daily profit per $30 of capital deployed. Slow but stable, designed to run continuously over weeks.

FAQ

How is this different from poly15m-v4 and poly5m-v4?

Same Gabagool idea, different timescale and market type. The 5-min and 15-min variants ride the Up/Down book within a single candle. polydaily applies the same logic to daily threshold + Up/Down markets, with 24-hour holds and slower polling.

Can I run all three Gabagool bots at once?

Yes. They use different lock files and different market slug prefixes. Capital is shared from the same wallet, so size each bot's BET_PER_SIDE_PCT accordingly.

What's included

  • polydaily/polydaily.js
  • polymarket-limits.js
  • README with strike-range tuning and threshold-vs-Up/Down notes

Configuration

FlagDefaultDescription
--asset BTCBTCAsset to trade.
--livePlace real orders. Default is dry-run.
--sim-balance 3030Starting balance in dry-run mode (USD).
--max-balance 00Cap the balance used for sizing (USD). 0 = use full balance.

Related bots