FOK (taker)vsGTC (maker)

FOK vs GTC orders on Polymarket — taker vs maker

FOK fills immediately or cancels; GTC rests on the book until filled. The choice determines your fee side, fill certainty, and adverse-selection exposure.

At a glance

| Axis | FOK (taker) | GTC (maker) | | --- | --- | --- | | Fill behavior | Fills in full immediately or cancels | Rests on the book until filled or cancelled | | Fee side | Taker fee (non-linear curve) | 0% fee + maker rebate | | Fill certainty | High (or no fill) | Low to medium (may wait or miss) | | Price control | None (crosses spread) | Exact (you set the limit) | | Adverse selection | None (you initiate) | Yes (picked off on stale price) | | Latency requirement | Low (fire and forget) | Higher (must monitor and cancel) | | Good for | Short-duration entries, urgent exits | Market making, patient accumulation |

Detail by axis

Fill behavior

FOK stands for Fill-or-Kill. When you post a FOK order, the CLOB attempts to fill the entire order immediately against existing resting liquidity. If there is not enough liquidity to fill the whole order at the requested price, the order is cancelled in full — no partial fills. This is the behavior most predtools taker bots rely on: you want in at a known price or you want nothing.

GTC stands for Good-till-Cancelled. A GTC order rests on the orderbook as a limit order until it fills, you cancel it, or the market expires. You will not pay a taker fee when you post GTC, but you give up certainty about when (or whether) your order fills.

Fee side

The Polymarket taker fee is a non-linear curve. For a standard 5-minute crypto binary, the formula is:

fee = shares × 0.25 × price × (price × (1 - price))²

At p=0.50 that works out to roughly 1.56% of notional. At p=0.30 or p=0.70 the fee drops to around 0.8%. Near the extremes (p=0.10, p=0.90) it falls below 0.2%.

A GTC maker order pays no fee and earns a small rebate instead. The rebate rate varies by market but is typically in the 0.01–0.02 range per share. Over a large number of fills, the rebate compounds into a meaningful advantage.

Fill certainty

FOK gives you binary certainty: either you have a full position or you have nothing. For a short-duration strategy where the entry window is 30 seconds, waiting for a fill is not an option. FOK is the correct choice.

GTC gives you price certainty but timing uncertainty. Your order may sit for minutes, or never fill if the price moves away. For a 5-minute binary, a GTC order that fills 3 minutes into the window is often worse than no order at all.

Price control

With FOK you are taking the best available ask (or bid). You cross the spread — you pay the ask when buying and receive the bid when selling. You have no say over the execution price beyond the limit you specify.

With GTC you set the exact price you want. If you post a GTC buy at $0.48 and the best ask is $0.50, your order rests at $0.48 until a seller crosses down to you. You may never get filled, but if you do, it is at your price.

Adverse selection

When you rest a GTC order on the book, sophisticated takers will lift your order when they believe the true probability has moved away from your posted price. This is adverse selection: you get filled when being filled is unfavorable. Managing this risk requires monitoring the order and cancelling before a signal update.

FOK orders have no adverse-selection exposure in the traditional sense, because you are the aggressor. You choose when to trade based on your own signal.

Code samples (clob-client)

Placing a FOK (taker) order:

const order = await client.createOrder({
  tokenID: tokenId,
  price: bestAsk,          // cross the ask
  side: Side.BUY,
  size: shares,
  orderType: OrderType.FOK,
})
const result = await client.postOrder(order, OrderType.FOK)

Placing a GTC (maker) order:

const order = await client.createOrder({
  tokenID: tokenId,
  price: 0.48,             // rest below the ask
  side: Side.BUY,
  size: shares,
  orderType: OrderType.GTC,
})
const result = await client.postOrder(order, OrderType.GTC)
// remember to cancel if your signal changes
await client.cancelOrder({ orderID: result.orderID })

Good for

FOK is the right tool for short-duration strategies (5-minute, 15-minute binaries) where latency is low and you need a definitive position before trading begins in earnest. It is also the right tool for emergency exits.

GTC shines in market-making contexts where you post quotes on both sides and collect the spread plus rebates, and in longer-duration markets where you can afford to wait for a favorable fill.

Which should I choose?

  • FOK if you are entering a time-sensitive position (short-duration binary) and need certainty over price.
  • GTC if you are market-making, have a wide time window, and the rebate materially improves your expected PnL.
  • If your strategy is directional and short-duration, FOK is almost always correct — the taker fee is the cost of certainty, and missing a fill entirely costs more than the fee.
  • If you are posting quotes around a fair-value estimate and want to collect the bid-ask spread plus rebate, GTC is your tool, paired with an active cancel loop to manage adverse selection.