Maker vs taker fees for trading bots: the real break-even math

A bot can predict direction correctly and still lose because its edge is smaller than the round-trip friction. Maker and taker labels are only the first line of that bill. Fill probability, queue position, spread, adverse selection, partial fills, and urgency decide whether the “cheaper” order was actually cheaper.

On this page
  1. Maker and taker meaning
  2. Round-trip fee math
  3. Post-only tradeoffs
  4. Match policy to strategy
  5. Model fees honestly
  6. FAQ

Maker and taker describe the execution

An order is generally maker when it rests on the order book and adds liquidity before another participant trades against it. It is taker when it immediately matches liquidity already resting on the book. This is an execution outcome, not just an order-type name.

Order behaviorLikely roleMain tradeoff
Market orderTakerHigh fill certainty, uncertain price
Marketable limit crossing the spreadTakerPrice cap plus immediate execution if depth exists
Passive limit resting at bid or askMaker if filled after restingBetter price, uncertain timing and queue position
Post-only limitMaker or no fillPrevents taking but can reject during a price move

Always read the venue's current fee schedule and API rules. Rates can vary by product, monthly volume, account tier, region, token discounts, and whether the order is maker or taker. Do not hard-code a marketing-page number into a strategy. Store fee rates in configuration, timestamp changes, and reconcile charged fees from actual fills.

If order behavior is unfamiliar, start with market vs limit orders and the bid-ask spread.

Calculate the complete round-trip hurdle

One basis point (bp) is 0.01%. Expressing each cost in basis points makes unlike components comparable:

net edgenet_edge_bps = gross_edge_bps
             - entry_fee_bps
             - exit_fee_bps
             - spread_cost_bps
             - slippage_bps
             - impact_bps
             - funding_or_borrow_bps

Suppose a hypothetical signal expects an 18 bp gross move. Entry is expected to take at 5 bp, exit is expected to make at 2 bp, half-spread and slippage total 4 bp across the trip, and other costs add 1 bp. The estimated net edge is:

worked example18 - 5 - 2 - 4 - 1 = 6 basis points net

That 6 bp is not guaranteed profit; it is the expectation left before model error and adverse selection. Stress the taker exit, a wider spread, and a partial fill. If an urgent stop changes the exit from 2 bp maker to 5 bp taker and adds 3 bp of slippage, the net edge falls to zero in this example.

For a dollar view, multiply basis points by notional divided by 10,000. A 7 bp round-trip cost on $20,000 of notional is 20,000 × 7 / 10,000 = $14. Turnover repeats that cost, which is why small-edge, high-frequency retail bots are especially sensitive.

Post-only saves a fee only if the trade still works

A post-only order tells the venue not to execute immediately as taker. If it would cross, the venue commonly rejects or cancels it according to its rules. The bot then needs a policy: reprice, wait, cross as taker, or abandon the signal. An uncontrolled reprice loop can create excessive messages, lose queue priority repeatedly, and run into rate limits.

Passive orders also face adverse selection. A buy at the bid is most likely to fill when sellers are willing to hit it; sometimes that is because the fair price is moving down. The fee was low, but the price immediately moved against the position. Measure markout after 1 second, 10 seconds, and the strategy's normal holding horizon to see whether maker fills are systematically toxic.

A missed fill has an economic cost

If a valid signal moves away while a passive order waits, the bot saved the fee and earned nothing. Compare expected outcomes across filled, partially filled, missed, and chased orders rather than comparing fee percentages alone.

Queue position is usually unknown from candle data. A backtest that credits a full maker fill whenever a bar touches the limit is optimistic. The market may have traded only a small quantity ahead of your order, or the touch may have occurred before the simulated order arrived.

Match the order policy to the strategy

Strategy situationTypical priorityPolicy to test
DCA or slow rebalanceCost over millisecondsPatient limits with a deadline and bounded reprice
Grid tradingRepeatable passive executionPost-only rungs plus partial-fill accounting
Fast momentum entryOpportunity decayMarketable limit with a maximum acceptable price
Risk-reducing exitExposure reductionFill certainty inside a slippage guard
Thin-market arbitrageBoth-leg certaintyModel leg risk; a cheap unfilled leg is not an arbitrage

Do not force the entry and exit to use the same role. A bot may enter passively when it can wait, then exit aggressively when a risk limit fires. Encode urgency as part of the order intent so the execution layer knows when it may cross.

Backtest a policy, not one fee constant

  1. Load the fee schedule that applied at each test date if historical rates are material.
  2. Classify each simulated order from its price behavior, not its label.
  3. Apply fees to actual filled notional, including partial fills.
  4. Model spread and side-aware slippage separately from the venue fee.
  5. Use optimistic, base, and conservative maker-fill assumptions.
  6. Stress every passive exit as taker when its deadline or stop is reached.
  7. Compare the backtest with paper and small live fill records.

The broader methodology is in backtesting fees and slippage. Log requested role, actual liquidity flag, charged fee, queue wait, fill ratio, cancellation reason, and post-fill markout. Those observations turn a guessed fee model into an evidence-based one.

Not financial advice. This content is educational. Automated and algorithmic trading carries a real risk of financial loss. Never trade money you cannot afford to lose. Review the SEC investor.gov and CFTC resources before trading.

Frequently asked questions

What is the difference between maker and taker fees for a trading bot?

A maker order rests on the book and adds displayed liquidity before it fills; a taker order executes against liquidity already available. Venues often charge different rates, but classification depends on how the order actually executes, not simply on whether the bot selected a limit or market order.

Is a limit order always charged a maker fee?

No. A marketable limit order can immediately cross the book and execute as taker. A post-only instruction is designed to prevent immediate taking, but it may be rejected or cancelled when it would cross, so the bot needs an explicit reprice or skip policy.

How do I calculate a trading bot's fee break-even move?

Add the effective entry and exit fees, expected spread crossing, slippage, market impact, and any funding or borrow cost, then adjust for partial-fill and missed-fill behavior. That total round-trip cost in basis points is the minimum gross edge the strategy must exceed before profit.

Should a trading bot always use maker orders to save fees?

No. A maker order can miss the trade, fill only when price is moving adversely, or leave partial exposure. Taker execution may be rational for urgent exits or signals whose opportunity decays quickly. Choose the order policy that maximizes expected net outcome, not the lowest fee line in isolation.

MB

Mustafa Bilgic

Algorithmic trading practitioner · Founder, AITradingBot.us

Mustafa builds and backtests automated trading systems and writes about them without the hype. Every tool on this site is free and runs entirely in your browser.