Skip to main content

The formula

fee = k × P × (1 − P) × outcomeTokens
  • P is the execution price, 0 < P < 1.
  • k is a period-specific coefficient.
  • outcomeTokens is the number of outcome tokens traded.
  • The curve peaks at P = 0.5 (max uncertainty) and decays to 0 at the extremes.
  • Maker fee is always 0. Only the taker pays on each fill.

Why quadratic (not linear)?

The linear min(P, 1−P) curve (Polymarket’s default) is twice as expensive at the top of the book. For tail markets the linear curve still charges meaningful fees; the quadratic curve naturally eases to zero. At feeRateBps = 400 (WC period):
PLinear peakQuadratic (PS)Ratio
0.050.20%0.019%10.5× lower
0.251.00%0.75%1.33× lower
0.52.00%1.00%2× lower
0.751.00%0.75%1.33× lower
0.950.20%0.019%10.5× lower

Period-specific coefficients

The platform operates under a three-period fee schedule (PS-MM Rebate Model v7). The effective feeRateBps = k × 10_000:
PeriodPeak at P=0.5kfeeRateBps
Pre-WC0.35%0.014140
WC1.00%0.040400
Post-WC0.50%0.020200
Read the currently-active period + fee via GET /api/platform/fee-config (public endpoint).

Charging direction

  • SELL: fee deducted from collateral proceeds. fee_collateral = k × P × (1−P) × outcomeTokens.
  • BUY: fee deducted in outcome tokens. fee_tokens = k × (1−P) × outcomeTokens.
Both give the same USD fee for the same fill — just denominated in the asset the user is receiving.

How fees appear in the response

Every Trade object carries:
{
  "id": "...",
  "price": "0.52",
  "quantity": "100",
  "fee": "0.2496",
  "side": "buy"
}
For per-fill audit, use GET /api/me/fees.

On-chain equivalence

The off-chain fee matches the on-chain fee charged by CTFExchange at settlement time, modulo integer-division rounding (≤ 1 atomic USDC unit). Same feeRateBps value signs into the EIP-712 Order.

Fee cap

Contract enforces feeRateBps ≤ MAX_FEE_RATE_BIPS (1000). Peak-at-0.5 at the cap is 2.5%. Raising requires Board approval and redeploy.

Examples

// BUY 100 YES at P=0.52, WC period (k=0.04)
const price = 0.52;
const quantity = 100;
const k = 0.04;
const feeTokens = k * (1 - price) * quantity;           // 1.92 YES tokens
const feeUsd    = k * price * (1 - price) * quantity;   // 1.00 USDC equiv

// SELL 100 YES at P=0.80, Pre-WC period (k=0.014)
const feeUsd = 0.014 * 0.80 * 0.20 * 100;               // 0.224 USDC

Rebates

The schedule covers fees. Mirror-image rebates to market makers are a separate system (PS-MM Rebate Model v7 §2). Rebates settle monthly. Contact partners@predictstreet.com.