· four exchange APIs · rebuilt daily

The finding
Your position liquidates when mark price hits your maintenance threshold, which can deviate from last price by over 1.5% during rapid orderbook sweeps.
Last price reflects the single most recent trade executed on a specific orderbook.
Mark price combines multi-exchange spot index data with a smoothed moving average of the funding basis.
Positions remain open during market wicks if underlying spot index prices remain stable across external venues.
Understanding how mark price vs last price liquidation works is essential when holding leverage. Exchange engines evaluate account margin using a smoothed mark price rather than the last price.
Exchanges separate trade execution from account health evaluations to protect positions from isolated market manipulation. Last price is the exact valuation of the most recent fill on an orderbook. If a trader executes a large market sell order, it fills down the book, momentarily depressing the last price.
Mark price relies on a global spot index compiled from high-volume spot exchanges. The venue calculates a fair value offset by taking a 15-minute moving average of the premium or discount between the perpetual swap and the spot index.
`` Mark Price = Spot Index Price * (1 + Moving Average Basis) ``
Because the spot index aggregates prices from multiple external venues, an orderbook sweep on a single exchange cannot shift the index instantly.
Worth knowing
Setting a stop-loss triggered by last price leaves positions exposed to local orderbook gaps that mark price calculation completely filters out.
Consider a long perpetual position of 1 BTC opened at 60,000 USD with 20x leverage. Initial margin posted is 3,000 USD. At 20x leverage, the exchange requires a 0.5% maintenance margin, which equals 300 USD.
The maximum allowable loss before liquidation occurs is 2,700 USD. Subtracting 2,700 USD from the 60,000 USD entry gives a liquidation price of 57,300 USD.
`` Initial Margin: 3,000 USD Maintenance Margin: 300 USD Max Allowed Loss: 2,700 USD Liquidation Price: 57,300 USD ``
A sell order sweeps the local orderbook, forcing the last traded price down to 56,500 USD. On the trading chart, a red candle wick touches 56,500 USD.
If liquidations evaluated against last price, the unrealized loss would show as 3,500 USD, wiping out maintenance margin and forcing liquidation.
However, spot index prices across external venues remain steady at 60,000 USD. The 15-minute moving average basis remains at 0.0000. Mark price is calculated as 60,000 USD. Because 60,000 USD sits above the 57,300 USD threshold, the liquidation engine takes no action.
Where this goes wrong
When spot markets drop globally, mark price tracks the index down immediately and liquidates the position at the calculated threshold.
When mark price hits the maintenance margin threshold, the engine closes the position via a market order. The trade incurs taker fees, which drain the remaining margin balance.
Taker fee rates vary between venues, directly affecting how much margin is returned or lost during liquidation events.
| Venue | Futures Maker Fee | Futures Taker Fee | BTC 8h Funding Rate |
|---|---|---|---|
| Bitget | 0.0200% | 0.0300% | +0.0082% |
| Bybit | 0.0200% | 0.0550% | +0.0100% |
| MEXC | 0.0000% | 0.0200% | +0.0100% |
| OKX | 0.0200% | 0.0500% | +0.0100% |
Bitget charges a 0.0300% taker fee, while Bybit charges 0.0550% and OKX charges 0.0500%. On a 60,000 USD position, execution fees at liquidation cost 18.00 USD on Bitget compared to 33.00 USD on Bybit.
Funding rates also vary across venues. Holding a BTC long on Bitget costs +0.0082% per 8-hour interval, compared to +0.0100% on Bybit, MEXC, and OKX. The spread of 0.0018 percentage points reduces holding costs for positions held over extended timeframes.
What to do instead
Configure conditional stop orders to trigger on mark price to ensure stops execute before the engine triggers mandatory liquidation.
Traders can configure conditional orders using either mark price or last price as the execution conditional trigger. Selecting last price ensures orders fill based on actual trades occurring on that specific exchange.
Selecting mark price aligns conditional stop orders with the exchange liquidation engine. If a position stop sits at 57,500 USD and uses mark price, it triggers only when the spot index moves. This prevents local orderbook wicks from stopping out positions prematurely.
If an order uses last price, a temporary orderbook sweep will execute the stop, realizing a loss even while mark price remains unchanged.
Perpetual futures liquidations trigger strictly when mark price crosses the position maintenance margin price. Last price does not trigger liquidations on major derivative exchanges.
Last price reflects the most recent filled order on a single platform's orderbook. Mark price averages spot market prices across multiple exchanges and adds a smoothed funding basis offset.
Setting stop-loss orders to trigger on mark price prevents unexpected execution caused by thin local orderbook wicks. Setting stops to last price ensures execution based on local order fills.
When a liquidation triggers, the system closes the position using market orders. Taker fees are deducted from the remaining margin, reducing any residual collateral returned to the account.