Polymarket Bot Tutorial · Chapter 19 of 32
Farm Polymarket liquidity rewards programmatically: how the rebate program works, qualifying spread thresholds, ROI math, ranking of profitable markets, and when farming beats other strategies.
What this chapter covers
Polymarket pays liquidity providers via a maker-rewards program in eligible markets. The strategy of farming these rewards is well-defined but margins are thin and the inventory risk is real. This chapter covers the spread thresholds to qualify, the ROI math, and where farming works vs where it bleeds.
- How Polymarkets liquidity reward program works
- Spread thresholds to qualify
- ROI math: rebate + fee saving + spread
- Best markets for farming
- Risk: inventory blowup
- Code: minimal LP-farming MM
How Polymarkets liquidity reward program works
Polymarket pays maker rebates on filled maker orders - your resting liquidity gets taken by someone else. Each fill is scored by a fee-equivalent on the same curve the taker fee uses, and your daily rebate is your share of that market's pool:
fee_equivalent = shares × feeRate × p × (1 - p)
your_daily_rebate = (your_fee_equivalent / total_fee_equivalent_in_market) × market_rebate_pool
So you compete per market with the other makers there: your slice of that market's maker fee-equivalent is your slice of its pool. The pool is funded from collected taker fees - roughly 20% of them in crypto and ~25% in the other categories (geopolitics is fee-free, so it pays no rebate). Rebates pay daily in pUSD once you have accrued at least $1.
Eligible markets shift over time - Polymarket weights the books it wants deeper. Rewards are separate from trade PnL: you can be net-down on inventory and net-up on rebates in the same market and period. Pull the live list from GET /rewards/markets/current (params sponsored, next_cursor) - it returns the active rewards configurations grouped by market - rather than assuming a market qualifies.
Spread thresholds to qualify
Under the fill-based model there is no universal "qualifying spread" - any filled maker order earns fee-equivalent. But where you quote decides your share: tighter to the midpoint means more fills (more fee-equivalent, a bigger pool slice) but more adverse selection; wider means fewer fills but cleaner inventory. Some high-priority markets may layer on their own eligibility band, so read the live rewards config per market rather than assuming.
The narrower you quote, the more competitive your share of the per-block reward, but the more often you get hit by adverse selection. The wider you quote, the safer but the smaller your reward share. The sweet spot for most markets is ~1-2c off mid on each side.
Eligibility also has a minimum order size (typically 5+ shares; matches the GTC minimum). Orders below the minimum rest on the book but don't count for rewards.
ROI math: rebate + fee saving + spread
The full reward-farming ROI has three components.
- Rebate income: per-share rebate × fills, paid in pUSD. Numbers vary; current range is 0.1-0.5c per filled share.
- Spread captured: if you quote 1c above and below mid, and both sides fill, you earn 2c per round trip. The actual capture rate depends on fill imbalance.
- Inventory PnL: the position you accumulate has mark-to-market exposure. Can be positive or negative; usually small if the strategy is well-designed.
Sample math: on a market quoting 100 shares per side, 60% fill rate per side over a 24-hour period, $0.30/sh rebate. Reward: 100 × 0.60 × $0.30 = $18/day. Spread capture: same fills, 1c spread × 60 round trips = $0.60. The rebate dominates the spread in volume-thin markets; the spread dominates in volume-thick markets.
Best markets for farming
The economic profile that favors farming:
- High eligible reward rate - check the rewards page for current per-share rebate by market.
- Moderate volume - enough fills to earn meaningful reward, not so much that competitive makers eat your share.
- Stable mid - prefer markets where the implied probability doesn't move 10c in a single news event. Election markets pre-news are good; resolution-imminent markets are not.
- Narrow natural spread - markets where the existing book is already tight mean you compete on rebate distribution, not on opening the market.
Avoid: markets in the last 24h before resolution (price jumps wreck inventory), markets with consistent one-sided flow (you accumulate huge directional exposure).
Risk: inventory blowup
The dominant risk of farming is accumulating directional exposure during a price move. If the mid drops from 0.55 to 0.42 over an hour, your bid fills repeatedly while your ask sits unfilled; you end up long N shares at an average cost above current mid.
Cures:
- Inventory cap: stop quoting on the side where you are already too long.
- Skew: when long, pull the bid wider and tighten the ask. When short, the inverse.
- Kill switch: when inventory exceeds 2x normal range or mid moves >X% from when you started, halt and flatten.
The farming PnL is the sum of rewards + spread − inventory MTM. Blowups happen because the third term goes massively negative on a single news-driven mid move.
Code: minimal LP-farming MM
Reference: simplest viable liquidity-rewards-farming maker.
QUOTE_OFFSET = 0.01 # 1c off mid each side
INV_CAP = 50 # max long or short
SIZE = 5 # GTC minimum
def farm_loop(token_id):
while True:
book = fetch_book(token_id)
mid = (book.best_bid + book.best_ask) / 2
inv = chain_balance(token_id)
cancel_my_quotes(token_id)
if inv < INV_CAP:
post_gtc(token_id, "BUY", mid - QUOTE_OFFSET, SIZE)
if inv > -INV_CAP:
post_gtc(token_id, "SELL", mid + QUOTE_OFFSET, min(SIZE, abs(inv)))
time.sleep(30) # re-quote every 30s
Production additions: skew on inventory, news-event pause, daily PnL reconciliation including the rebate stream.





