How it Works

← Back to Tracker

Understanding how Polymarket's pool-based Maker Rebate system works.

Forecast Model (Personalized, Not a Per-Trade Formula)

Polymarket rebates are pool-based, not a fixed cut of each trade. The official per-trade fee formula size × feeRate × p × (1-p)only computes a single trade's "fee equivalent", not what you actually receive. The real distribution is:

  1. Each eligible market collects taker fees throughout the day.
  2. Polymarket takes their cut and places the remainder into a daily Rebate Pool.
  3. The pool is split among makers in proportion to each maker's fee-equivalent share of the total maker activity in that market.

That means a maker who dominates a sparse market can receive far more than the per-trade formula suggests, because the pool is fed by everyone's taker fees. The naive formula consistently under-estimates by 5–10× for active makers.

So what does the "Forecast" column actually compute?

Instead of a generic formula, we calibrate to your own pool history:

trailing_rate = sum(received) / sum(volume)   // settled days only
forecast(day) = day.maker_volume × trailing_rate

Settled days means we exclude today, yesterday, and any day where received = 0from the rate calculation, so dragged-down Pending entries don't poison the average. The result is a forecast that materially tracks reality and lets you spot anomalies on the same scale as your actual payouts.

A day is flagged Underpaid when received < 80% × forecast— that's the right signal that something went wrong, much sharper than comparing against the unrelated per-trade math.

Data Filtering & Verification

The app requests your public trade history (type=TRADE) and actual payout history (type=MAKER_REBATE) from the Polymarket API.

To calculate your true Maker Volume, we filter out any Taker trades by ensuring the feeRateBps on your side of the fill is strictly `0` (which safely identifies it as your limit maker order).

Note: Payouts process usually around midnight UTC. If yesterday's or today's rebates show up as `$0`, they will be marked as Pendingbecause the daily pool distribution has highly likely not settled yet. These days are also excluded from the trailing rate so they don't bias the Forecast.

Typical Rebate Rates

While you cannot calculate exact payouts beforehand, the community generally observes these historical baseline rebate rates depending on the market type:

  • Crypto 5-minute / 15-minute: ~0.15% - 0.50%
  • Sports: ~0.10% - 0.30%
  • Politics / Finance: ~0.05% - 0.20%

* Since payouts are proportional relative to other makers, highly crowded markets will dilute your personal rebate rate, whereas providing liquidity in barren markets scales your individual share.



Built by Bruce (@Bruce)
Built Rust builder and relayer SDK for Polymarket, feel free to use : github.com/OrderBookTrade/rs-builder-relayer-client
Need custom tooling? DM me on Discord or Telegram