polybot

Strategy · Low risk · Intermediate

Spread farming

Passive market making on prediction markets. Post limit orders on both sides of the book and earn the bid-ask spread.

Published Apr 10, 2026


The idea

Every trade has a maker and a taker. Takers pay the spread; makers earn it. Over many trades, if you can keep inventory balanced, you harvest the spread as profit — even with zero directional view.

Polymarket’s CLOB doesn’t pay maker rebates, but the spread itself is 2–5 cents on most markets — far wider than equity spreads. That’s the edge.

How polybot implements it

spread_farm posts two-sided limit orders on a universe of markets. The core loop:

  1. Subscribe to the top-of-book for each target market.
  2. Compute a fair-value estimate (last trade, volume-weighted, or from an AI plugin).
  3. Post bid at fair - half_spread, ask at fair + half_spread.
  4. On fill, re-quote immediately with updated inventory.
  5. Every refresh_seconds, reprice to stay current even without fills.

Inventory is the key risk. polybot tracks net delta per market and skews quotes to encourage unwinding: if you’re long 100 shares of YES, bid lower and ask more aggressively.

# from src/polybot/strategies/spread_farm.py — simplified
fair = fair_value_estimator(market)
inventory_skew = -self.alpha * self.inventory[market.id] / self.max_inventory
half = self.config.half_spread + inventory_skew
self.quote(market.id, bid=fair - half, ask=fair + half, size=self.config.quote_size)

Where this works

Where it fails

Configuration

polybot strategy enable spread_farm
polybot strategy config spread_farm \
    --half-spread 0.02 \
    --quote-size 50 \
    --max-inventory 300 \
    --refresh-seconds 30 \
    --cutoff-hours-before-resolution 6 \
    --markets-include "crypto,politics"

Risk profile

DimensionAssessment
Directional exposureLow when balanced; high if inventory runs
Execution riskLow
Capital efficiencyLow (capital parked in quotes)
Monitoring burdenMedium — you need toxicity alerts

FAQ

Do I need an AI model for this? No, but it helps. A better fair-value estimate (e.g. Perplexity checking for just-breaking news) means your spread gets lifted less often by informed flow.

How much capital is this worth on? Scales sublinearly. $5k → $50k is roughly 5× revenue; $50k → $500k is maybe 2×, because you start running out of markets with room to quote inside the book.

Does polybot compete with itself if I run spread_farm and ai_model? Yes, if they target the same market. Use --markets-exclude to partition, or run them in different categories.

Source: src/polybot/strategies/spread_farm.py.

Want this strategy tuned for your book?

Cryptuon can adapt polybot strategies to your capital, risk budget, and markets. Shadow-deployed before you go live.