Polymarket’s Central Limit Order Book (CLOB) on Polygon creates frequent, short-lived arbitrage opportunities—most commonly when the combined ask prices of complementary YES and NO outcome tokens sum to less than $1.00. Capturing these requires acting as a taker (crossing the spread with marketable orders). Because takers pay fees while also earning tiered rebates, a well-designed bot can turn fee drag into a net positive through volume-weighted rebates paid daily in pUSD.
This article outlines a professional architecture for such a bot, with explicit focus on fee calculation, Weighted Volume (wV) mechanics, tier progression, and strategies that maximize the daily rebate payout.
1. Taker Fee Structure
Only takers pay fees. Makers pay zero and may earn separate maker rebates. Fees are applied at match time using the formula:
[
\text{fee} = C \times \text{feeRate} \times p \times (1 - p)
]
where
(C) = number of shares,
(p) = execution price (0–1),
feeRate varies by category.
Current category feeRates (as of mid-2026 documentation):
| Category | Taker Fee Rate | Peak fee per 100 shares (at (p=0.50)) | Maker Rebate Share |
|---|---|---|---|
| Crypto | 0.07 | $1.75 | 20% |
| Sports | 0.05 | $1.25 | 15% |
| Economics, Culture, Weather, Other | 0.05 | $1.25 | 25% |
| Politics, Finance, Mentions, Tech | 0.04 | $1.00 | 25% |
| Geopolitics / World Events | 0 | $0.00 | — |
Fees are symmetric around 50¢ and decline toward the extremes. They are collected in pUSD (or equivalent shares) and fund both the Maker Rebates Program and the Taker Rebate Program.
- Taker Rebate Program and Weighted Volume
The Taker Rebate Program (live since 28 May 2026) returns a percentage of the fees you paid, paid daily at midnight UTC in pUSD (minimum $1 accrued). Your rebate rate is determined by a rolling 30-day Weighted Volume (wV):
[
\text{wV} = \text{Trade Size} \times (1 - \text{Entry Price}) \times \text{Category Weight} \times \text{Bonuses}
]
Trade Size** = notional paid ((C \times p)).
((1 - \text{Entry Price})) rewards lower-priced entries (higher upside).
Category weights prioritize higher-fee markets:
| Category | Weight |
|---|---|
| Sports | 1.0 |
| Politics, Finance, Mentions, Tech | 1.3 |
| Economics, Culture, Weather, Other | 1.7 |
| Crypto | 2.3 |
| Geopolitics | 0 |
Tier ladder:
| Tier | 30-day wV Threshold | Rebate % | One-time Level-up Bonus |
|---|---|---|---|
| None | < $2,000 | 0% | — |
| Bronze | $2,000 | 3% | $10 |
| Silver | $20,000 | 8% | $50 |
| Gold | $200,000 | 18% | $250 |
| Platinum | $1,000,000 | 32% | $1,500 |
| Diamond | $4,000,000 | 44% | $7,500 |
| Obsidian | $10,000,000+ | 50% | $25,000 |
The rebate applies only to trades executed after the tier is reached. Tiers update daily. Only pure taker fills generate wV; resting (maker) fills do not.
Example
Buy 1,000 shares of a Crypto market at 0.05:
Trade Size = $50, upside = 0.95, weight = 2.3 → wV ≈ $109.25.
The same notional at 0.50 yields only ~$57.50 wV.
- Bot Architecture Optimized for Taker Rebates
Core components
Market Discovery & Filtering
Use the Gamma API (https://gamma-api.polymarket.com) to pull active markets, filter by category (prioritize Crypto for highest weight and feeRate), liquidity, and feesEnabled. Maintain a watchlist of binary markets and related multi-outcome sets.
Real-time Data
REST order-book snapshots via CLOB API (https://clob.polymarket.com).
WebSocket subscriptions (wss://ws-subscriptions-clob.polymarket.com) for book updates and trade feeds.
Recent reduction of the taker delay to 50 ms improves fill reliability for aggressive orders.
Opportunity Scanner
Classic intra-market arb:
[
\text{YES ask} + \text{NO ask} + \text{expected fees} < 1 - \text{safety margin}
]
Also monitor cross-market relative value, resolution-adjacent dislocations, and short-duration crypto markets (5-/15-min). Calculate net expected value after fees and projected rebate at the current tier.
Execution Engine
Use Fill-or-Kill (FOK) or Fill-and-Kill (FAK) order types exclusively for arb legs so every fill is a pure taker. Place simultaneous or sequential marketable limit orders sized to available depth. Prefer lower-priced legs when possible to maximize wV per dollar risked.
Rebate & Risk Tracker
Maintain a running 30-day wV ledger, current tier, accrued rebate, and projected daily payout. Automatically re-size or shift category focus as you approach the next threshold. Enforce position limits, max slippage, and inventory skew (YES/NO balance).
Settlement & Capital Efficiency
After resolution or when both sides are held, merge/redeem via Conditional Token Framework (CTF) contracts to recycle capital.
Python stack (current as of 2026)
Official clients: py-clob-client-v2 / polymarket-client (or the maintained TypeScript equivalent). Authentication uses L1 (private-key signature) → L2 API credentials. Always store keys in environment variables or a secrets manager and use a dedicated trading wallet with limited balances.
- Maximizing Daily Taker Rebate
Category bias** — Route the majority of volume into Crypto (weight 2.3, highest feeRate). Secondary focus on Economics/Culture/Weather (1.7).
Price preference** — When multiple opportunities exist, favor entries below ~30¢; the ((1-p)) term compounds wV.
Consistent high throughput** — Daily rebate is a percentage of fees paid that day. High-frequency small-to-medium arb captures more cumulative fees (and therefore larger absolute rebate) than infrequent large trades.
Tier climbing** — Track progress toward the next threshold. Temporary volume spikes or focused campaigns near month-end can unlock higher ongoing rates and the one-time bonus.
Avoid wash or self-matching** — These risk tier revocation.
Latency edge** — Co-locate or use low-latency infrastructure; the 50 ms taker delay makes competitive taker strategies more viable than under the previous 250 ms regime.
Profitability check (simplified)
For a $1,000 notional Crypto arb with 4% gross edge:
Gross profit ≈ $40.
Fees (assume average effective rate) ≈ $12–18.
At Platinum (32% rebate) net fee cost falls to ~$8–12.
At Obsidian (50%) the rebate can turn the fee into a near-zero or slightly positive contribution while the arb edge remains.
5. Operational Considerations and Risks
Capital & gas** — Keep sufficient pUSD/USDC and a small POL balance (or use a relayer for gasless flows where available).
Inventory risk** — Unbalanced YES/NO holdings expose the bot to directional moves before redemption.
Market-quality changes** — Polymarket monitors liquidity after latency adjustments; feeRates and weights can change.
Rate limits & reliability** — Implement exponential backoff, WebSocket reconnect logic, and circuit breakers.
Compliance** — Respect Terms of Service; third-party omnibus wallets are ineligible for the Taker Rebate Program.
Conclusion
A Polymarket arbitrage bot that systematically acts as a taker, prioritizes high-weight categories, and optimizes for Weighted Volume can convert the fee schedule from a pure cost into a meaningful daily revenue stream via the Taker Rebate Program. The combination of the 50 ms taker delay, transparent fee and tier formulas, and open CLOB APIs makes this strategy accessible to professional developers. Start with a paper-trading scanner, validate fee and wV calculations against the live profile, then scale execution while continuously monitoring tier progression and net after-rebate edge.
Always verify the latest parameters on the official documentation (docs.polymarket.com/programs/taker-rebates and /trading/fees), as rates, weights, and thresholds remain subject to change.

Top comments (0)