Files
polymarket-skills/polymarket-analyzer/references/fee-model.md
T
Polymarket Skills BuilderandClaude Opus 4.6 068b2adc75 Add 6 Polymarket trading skills with paper trading engine
Composable Agent Skills (SKILL.md format) for Polymarket prediction market
trading. Includes scanner, analyzer, monitor, paper trader, strategy advisor,
and live executor. All tested against live Polymarket APIs. Security audited
with all HIGH/MEDIUM findings resolved.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 07:25:07 +00:00

3.5 KiB

Polymarket Fee Model

Overview

Most Polymarket markets are fee-free. Dynamic taker fees apply only to short-duration crypto markets (5-minute and 15-minute expiry).

Fee-Free Markets

The vast majority of markets on Polymarket -- political, sports, entertainment, weather, and long-duration crypto markets -- charge zero fees for both makers and takers. This makes arbitrage significantly more viable than on traditional exchanges.

Dynamic Taker Fees (Crypto Short-Duration Only)

For 5-minute and 15-minute crypto prediction markets, a dynamic taker fee applies:

feeQuote = baseRate * min(price, 1 - price) * size

Where:

  • baseRate is set per market (typically 0.063 or 6.3%)
  • price is the execution price (0 to 1)
  • size is the number of shares

Effective Fee Rate by Price

Price min(p, 1-p) Effective Rate (baseRate=0.063)
0.05 0.05 0.315% (0.063 * 0.05)
0.10 0.10 0.630%
0.20 0.20 1.260%
0.30 0.30 1.890%
0.40 0.40 2.520%
0.50 0.50 3.150% (maximum)
0.60 0.40 2.520%
0.70 0.30 1.890%
0.80 0.20 1.260%
0.90 0.10 0.630%
0.95 0.05 0.315%

The fee is parabolic, peaking at p=0.50 and dropping sharply near the extremes. This was explicitly designed to kill latency arbitrage on these fast markets.

Fee Calculator

def calculate_fee(price: float, size: float, base_rate: float = 0.063) -> dict:
    """Calculate dynamic taker fee for crypto short-duration markets."""
    fee_rate = base_rate * min(price, 1 - price)
    fee_amount = fee_rate * size
    cost_basis = price * size
    total_cost = cost_basis + fee_amount
    effective_rate = fee_amount / cost_basis if cost_basis > 0 else 0

    return {
        "fee_rate": fee_rate,
        "fee_amount": fee_amount,
        "cost_basis": cost_basis,
        "total_cost": total_cost,
        "effective_rate_pct": effective_rate * 100,
    }

Breakeven Analysis for Arbitrage

For an arbitrage trade buying both YES and NO:

def arbitrage_breakeven(yes_price, no_price, base_rate=0.063):
    """Calculate if arb is profitable after fees on fee-bearing markets."""
    raw_sum = yes_price + no_price
    raw_edge = 1.0 - raw_sum  # Positive = underpriced

    yes_fee = base_rate * min(yes_price, 1 - yes_price)
    no_fee = base_rate * min(no_price, 1 - no_price)
    total_fee_rate = yes_fee + no_fee

    net_profit_per_share = raw_edge - total_fee_rate
    return {
        "raw_edge": raw_edge,
        "total_fee_rate": total_fee_rate,
        "net_profit_per_share": net_profit_per_share,
        "profitable": net_profit_per_share > 0,
    }

Maker Rebates

Post-only limit orders (introduced January 2026) receive maker rebates on qualifying markets. This creates a structural advantage for market-making strategies that provide liquidity.

Practical Implications

  1. Fee-free markets: Arbitrage edges as small as $0.01 are worth capturing
  2. Fee-bearing markets: Need at least 3-6% raw edge at mid-prices to break even
  3. Extreme prices (< 0.10 or > 0.90): Fees are minimal even on fee-bearing markets
  4. Market making: Maker rebates make spread-capture profitable on thin books