Help centre

How perpetual futures work

What a perpetual is, and how it differs from spot.

If the only thing you have traded is spot, start with the one difference everything else follows from. On the Swap page you buy a token and it lands in your wallet. On the futures terminal you never hold the asset. You open a contract that tracks its price, you post USDC as collateral, and the contract pays you or costs you the difference when you close it.

Perps vs spot

  • You do not own anything. A long BTC position is not BTC. There is nothing to send, stake or bridge. Closing means opening the opposite trade, not selling a coin.
  • There is no expiry. "Perpetual" is literal. A position stays open until you close it or it gets liquidated. Nothing settles on a date.
  • You can be short. The Long and Short buttons at the top of the order ticket are equal-sized for a reason. Short is a first-class position, not borrowed stock.
  • You trade on margin. The leverage slider in the ticket sets how much notional your collateral controls. At 10x, 1,000 USDC of margin opens 10,000 USDC of position.
  • Everything is USDC. Collateral, profit, loss and fees. That is why the terminal only ever asks you to deposit USDC through Add funds.
  • You can be closed out involuntarily. Spot has no such thing. If your margin runs out, the position is liquidated at whatever the market gives. This does not exist on the Swap page and it is the single biggest change to get used to.

The Notional, Margin and Fee rows above the ticket's primary button show the three figures that matter before you press it. The Liq. price row underneath is an estimate from that ticket alone, and it is always tinted red on purpose.

Three prices, not one

Spot has one price: what just traded. Perps have three, and the terminal shows two of them in different places.

  • Last price is what actually traded here, on this book. It is what the Latest trades tape lists and what moves the candles on the chart.
  • Index price is the underlying asset's real spot value, taken as a volume-weighted average across major spot exchanges. It is not shown anywhere in the app, but it is what everything else is anchored to. Weights are recalculated every 5 minutes from each venue's share of the trailing 4-hour volume. A venue that drifts more than 5% from the median gets capped at 5%, a venue silent for more than 10 seconds is dropped, and if several venues drift the median replaces the average outright. A backup oracle runs alongside it.
  • Mark price sits between the two. It follows index but is allowed to lean towards where the contract is actually trading, within a bound set per market (roughly 3% on BTC, tighter on ETH, wider on smaller markets). This is the number in the market header, in the scrolling marquee, and in the Mark column of the Positions tab.

They genuinely differ at any instant. One BTC snapshot: index 81,416.6, mark 81,386.5, last trade 81,366.4.

Mark price is the one that decides things:

  • Your unrealised PnL is position size times (mark price minus your average entry). That is the uPnL column in Positions.
  • Liquidation is measured against mark price, not against the tape. A single thin print on the book does not liquidate you.
  • Stop and Stop limit orders trigger on mark. The ticket's Trigger field is labelled "Mark" for exactly that reason, and TP/SL brackets use mark triggers too.
  • Limit orders are also fenced relative to mark, so a resting order far from mark can be auto-cancelled if mark moves.

Funding

Funding is the mechanism that keeps a contract with no expiry tethered to the spot price. It is a small payment made periodically between the two sides of the market, based on how far the contract has been trading above or below index. Swapmos averages hundreds of samples over the period (240 samples for a 1-hour period, 960 for 4 hours, 1,920 for 8 hours) rather than reading a single instant.

When the rate is positive, longs pay shorts. When it is negative, shorts pay longs. It has nothing to do with whether your trade is winning.

In this app, the market header's Funding APR stat is annualised, not the amount you are about to pay. It is the current estimated rate multiplied out over a year (green for positive, red for negative). To get what you actually pay, divide by the number of periods in a year. On an 8-hour market that is 1,095.

Worked example: Funding APR reads +10.95%. That is 0.01% per 8-hour period. On a 10,000 USDC position, a long pays 1 USDC every 8 hours.

Two things that catch spot traders out:

  • Funding is charged on position notional, not on your margin. At 20x, that same 1 USDC is being paid out of 500 USDC of margin, not 10,000.
  • It runs the whole time the position is open, including overnight and including while you are down.

Payments already made are listed on the Account page under the Funding tab, where the sign is flipped so a credit to you reads positive. The bell in the top bar also raises funding payments in its timeline.

Open interest

Open interest is the total size of positions currently open in that market. It is not volume. Volume counts what changed hands over the last 24 hours; open interest counts what is still open right now.

One thing to read correctly here: the Open interest figure in the market header is in contracts of the base asset, not in dollars. A BTC reading of 27.22 means 27.22 BTC of open positions. Multiply by the mark price beside it to get the USDC figure, which in that snapshot was about 2.21M USDC. On PERP_1000BONK_USDC the same field read 903,630, which at a 0.003166 mark is a much smaller market than the raw number suggests.

The 24h high, 24h low and 24h change in the same strip are all rolling trailing-24-hour figures, not since-midnight figures. The 24h open moves continuously through the day.

Risks worth stating plainly

  • Liquidation is real and it is priced off mark. At 100x, a 1% move against you is your entire margin. The leverage slider turns red at 50x and above as a reminder, not as a limit.
  • The ticket's Liq. price is an estimate. It is computed from that one ticket and ignores any position you already hold and any other collateral. The authoritative figure is the Liq. column in the Positions tab, which comes from the exchange.
  • There is no close button in Positions. To close, go to the ticket, tick Reduce only, and submit on the opposite side. Reduce only orders consume no margin, so this works even at zero free balance.
  • Stop entries and TP/SL brackets do not appear in the Open orders tab. That tab lists regular orders only. Your stops are live but not visible or cancellable there.
  • Positions survive you leaving. Revoking the trading key or disconnecting the wallet does not close anything. Open positions stay live and can still be liquidated while you are signed out.