Your Stop Was Never Touched — So Why Did the Exchange Close Your Position?

Your Stop Was Never Touched — So Why Did the Exchange Close Your Position?

By btc_daytrader | OpenTradingLab | 7 hours ago


# Your Stop Was Never Touched — So Why Did the Exchange Close Your Position?

*Educational content, not financial advice. Mechanics only here — no signals, no targets.*

The stop sat untouched on the chart. Price wicked down, stalled a tick above it, bounced. Then came the notification: **position liquidated**.

If that ever happened to you, you've met the most misunderstood mechanism in perpetual futures. Nobody stole your position. An engine closed it, using a price you probably weren't watching. Here's the two-minute diagnostic, the dollar math, and the myths that keep this confusion alive.

## What actually happened

Liquidation engines don't watch the last traded price on the perp. They watch **mark price**, a value derived from oracle data and a broad spot index across venues. The design goal is manipulation resistance: a thin perp order book can be pushed around for a few seconds, and liquidations keyed off those prints would hand anyone with a well-placed wick the keys to a cascade. Distorting a multi-venue spot index costs far more.

The side effect: your survival threshold lives on a chart most traders never open. Mark crossed your maintenance threshold before last price ever reached your stop. Both charts told the truth. You were reading the wrong one.

## The 2-minute diagnostic checklist

Run this after any "impossible" liquidation:

1. **Liquidation basis**  product page or docs: does your venue liquidate on mark price? Most major ones do.
2. **Overlay mark price** on the chart. Compare it with last price during volatile minutes; the gap explains a lot.
3. **Margin mode** isolated fences each position; cross shares one collateral pool, so another position's loss can drain yours below requirement.
4. **Live liquidation price** read it before entry, not after.
5. **Cumulative funding** on multi-week holds, payments erode collateral and pull the effective liquidation price closer even when price goes nowhere.
6. **Buffer over max leverage** at 100x, adverse movements well under 1% can be enough (≈0.5% at a typical tier-1 maintenance margin). Normal intraday noise spans that without trying.

## The dollar math

For a long: approximate liquidation price ≈ entry × (1 − initial-margin% + maintenance-margin%) — an adverse move of initial-margin% minus maintenance-margin% takes you there.

Say you open a **$500 long at 100x**. Your own capital: $5. With a 0.5% maintenance margin, distance ≈ 1% − 0.5% = 0.5% — about **$2.50** of adverse movement on $500 notional. One quiet five-minute candle covers that.

Same $500 notional at **10x**: $50 of your capital, distance ≈ 10% − 0.5% = 9.5%, roughly $47.50 of room. The notional is identical. The survival gap is enormous.

Two costs frame the whole thing: maintenance margin typically runs roughly 0.3%–2% of notional depending on venue and asset, and liquidation fees commonly take another 0.5%–1% (some venues up to 1.5%) out of whatever collateral gets returned. Check both on your venue before sizing anything.

Quick approximation in Python:

# Rough LONG liquidation distance — approximation only.
# Ignores fees, funding drift, tiered MMR, insurance top-ups.
def liq_move_pct(leverage: float, mmr: float) -> float:
    """Adverse move (%) from entry to approx. liquidation."""
    imr = 1 / leverage          # initial margin rate
    return round((imr - mmr) * 100, 2)

print(liq_move_pct(100, 0.005))   # 100x, 0.5% MMR -> ~0.5%
print(liq_move_pct(20, 0.01))     #  20x, 1.0% MMR -> ~4.0%
print(liq_move_pct(5, 0.01))      #   5x, 1.0% MMR -> ~19.0%

What the script does, in one line: it answers "how far can price travel against my long before the engine closes it?" `liq_move_pct` takes two arguments — your leverage and the maintenance margin rate of your contract tier (the `0.005` in the first call means 0.5%). Dividing 1 by leverage gives the fraction of notional you post up front; at 20x that is 0.05, or 5%. What remains after subtracting the maintenance rate is exactly the buffer price can consume before the margin ratio trips, scaled to percent and rounded to two decimals. Save it as `liq_calc.py`, run `python3 liq_calc.py` (no libraries, any Python 3), and the three calls print `0.5`, then `4.0`, then `19.0`.

For your own positions, change only the two inputs: the leverage set on the order ticket and the maintenance rate from your venue's margin table for that specific contract and tier. Shorts use the same distance; the level simply sits above entry instead of below. And treat the output as a floor check rather than the exchange figure fees, funding already paid, and tier upgrades all pull the real threshold closer.

## Four myths, corrected

  • **"The exchange stole my position."** Mechanics say otherwise: an engine closed it because mark price crossed your maintenance threshold. Fees come out of returned collateral — reconcile your closing statement against the published fee schedule, and open a support ticket only where the numbers genuinely disagree.
  • **"My stop protects me from liquidation."** A stop is an order; liquidation is a balance event on a different price feed. Whichever condition hits first wins. If mark crosses the threshold before last price touches your stop, the engine acts first.
  • **"Same size, same risk everywhere."** Identical notionals survive on one venue and die on another — margin mode, mark methodology, and insurance fund depth differ. Scale reference: during the October 10, 2025 cascade, over $19B was liquidated across crypto derivatives venues — CEXs and DEXs combined — with Hyperliquid alone processing roughly $10.3B (CoinGlass-derived figures cited by BitMEX and Bitcoin.com's 2026 guides). Many of those were ordinary sizes with thin buffers, not reckless bets.
  • **"Funding is pocket change."** Paid long enough, it quietly eats the buffer. Also know your venue's backstops: most major venues attempt partial liquidation before full closure — dYdX v4 and Drift Protocol close just enough to restore the margin ratio, while GMX v2's documented default is full-position closure unless liquidity constraints force a split — and if an insurance fund can't cover a deficit, auto-deleveraging (ADL) force-reduces profitable opposite-side accounts, most profitable and most leveraged first. Rare. Real.

## The one-line version

*The wick missed your stop. The index didn't.*

---

*Suggested Publish0x tags: trading, perpetual futures, crypto, risk management, education*

How do you rate this article?

3


btc_daytrader
btc_daytrader

Trader at heart, traveler by nature. When I'm not watching charts, I'm camping somewhere off the map or seeing a new corner of the world. Markets and wilderness teach the same lesson: read the conditions before you commit. Here I test indicators on real charts, build new strategies, and write down what worked - and what didn't.


OpenTradingLab
OpenTradingLab

OpenTradingLab is trading education, not signal selling. We break down how markets work: technical indicators like VWAP and EMA ribbons, spot & perpetual futures mechanics, funding rates, liquidation math, stop placement and position sizing. Every lesson comes from real chart practice - bar replays, paper trades, backtests - with misses shown alongside wins. Education only, never financial advice.

Publish0x

Send a $0.01 microtip in crypto to the author, and earn yourself as you read!

20% to author / 80% to me.
We pay the tips from our rewards pool.

Page not displaying correctly?