Market price: median of last, best bid, best offer
Mark price [MP]: market price of futures if future is not paused, otherwise index price + last premium
Index: All elements of each index are equally weighted.
See here for index weights.
Index price [index]: Market price of index.
Premium: MP - index
Indices are fetched every 5 seconds
The dated futures expire on the last Friday of every quarter to a 1 hour TWAP of the underlying index from 2am UTC to 3am UTC.
Shortly after expiration, each futures position will be marked to the expiration price of the contract. All realized and unrealized PnL on quarterly futures will turn into collateral at this point.
For instance, say that you deposited $10,000 of collateral and used it to buy 10 BTC quarterly futures. Say that prior to expiration your account had 10 BTC quarterly futures with a realized PnL of $1,000, an unrealized PnL of $100, and a mark price of $5,000 for the BTC index. If the average price of the BTC index over the expiration period (2am to 3am UTC) was $5,010, then after expiration ended your account would have:
USD collateral: $10,000 (old collateral) + $1,000 (realized PnL) + $100 (unrealized PnL) + 10 (number of BTC futures) * ($5,010 - $5,000) (difference between expiration and previous mark price) = $11,200
BTC quarterly futures: 0
Realized PnL: 0
Unrealized PnL: 0
Every hour, each perpetual contract has a funding payment where longs pay shorts if perpetual is trading at a premium to the index, and shorts pay longs if trading at a discount to the index. This funding payment is equal to TWAP ((Future - Index ) / Index) / 24. This payment is added/deducted to your account's USD balance.
You can find historical funding rates here.
See here for contract specifications.
Position notional: position size * MP
IMF Factor: multiplier on the margin required for a coin.
Base IMF: the minimum initial margin fraction needed. This is 1 / maximum leverage.
Position initial margin fraction: max(Base IMF, IMF factor * sqrt(position open size))
Position maintenance margin fraction: max(3%, 0.6 * position initial margin fraction)
Position unrealized PNL: size * (future mark price - position entry price)
Collateral: USD balance in futures wallet plus 0.95 times FTT, BTC, and USDT balances marked to latest index price. ETH, BNB, PAXG, XAUT, and KNC count towards collateral at 0.9 times their index prices. SRM, BCH, LTC, TRYB, LINK, XRP, SOL, TRX, and CUSDT count towards collateral at 0.85 times their index prices. BVOL, IBVOL, and tokenized stocks (e.g., TSLA, AAPL, FB etc.) count towards collateral at 0.8 times their index prices.
Free collateral: amount of USD that can be withdrawn from exchange, =min(collateral, collateral + unrealized PNL) - [amount of collateral tied up in open orders]
Total account value: collateral + unrealized pnl
Total position notional: sum of abs(position notional) across all positions + sum of margin borrows
Margin fraction [MF]: total account value / total position notional
Maintenance Margin Fraction Requirement [MMF]: the minimum MF needed to avoid getting liquidated, equal to average of position MMF weighed by position notional
Auto Close Margin Fraction [ACMF]: the minimum MF needed to avoid getting closed against the backstop liquidity provider or other users, = max(MMF / 2, MMF - 0.06)
Zero Price (ZP): MP * (1 - MF) if long, MP * (1 + MF) if short. The mark price that would set an account’s total account value to 0.
Liquidation Distance: % move in futures that would make MF = MMF.
Position open size: Max(abs(size if all buy orders get filled), abs(size if all sell orders get filled))
Position open notional: position open size * MP
Total open position notional: sum of abs(position open notional) across all positions
Open margin fraction [OMF]: min(total account value, collateral) / total open position notional
Initial Margin Fraction Requirement [IMF]: the minimum OMF needed to increase position size, equal to average of position IMF for all account positions weighed by position open notional
Unused collateral: max(OMF - IMF, 0) * total open position notional
Backstop Liquidity Provider [BLP]: an account that promises to take on liquidating accounts’ positions
- Can’t send orders more than 2% (for futures markets) or 25% (for spot markets) through opposite side of the book
- Orders too far through the book get their prices capped at the limit price
- Market orders have the same price cap applied -- this means that it's possible to get partially filled on a market order if liquidity is low relative to the size of the order
- Sum of open order sizes per side can’t be greater than max($1m, 1% of an ADV of the underlying coin)
- Can’t increase position if OMF < IMF after the order is placed
- Can’t send any orders (including orders that would decrease position) if account is below MMF
- FTX also has price bands. Users can’t send orders if either:
- Price is more than:
- 10% from the mean MP over the past 5 minutes if the futures' underlying is one of BTC, ETH, USDT, EOS, BCH, XRP, BNB, BSV, LEO, TRX, or ALT.
- 20% from the mean MP over the past 5 minutes otherwise
- Absolute value of premium is more than 5% above the absolute value of the mean premium over the past 5 minutes
ADV: 30-day volume / 30 24h before the contract first trades
Minimum BTC-PERP Trade Size:
The minimum provide (maker) size for BTC-Perp is 0.01, this only applies when you make more than 10 orders per hour smaller than 0.01.
Limit orders sent that are larger than the market's quantity step but smaller than its minimum provide size are automatically turned into IOC orders.
This restriction is only applied at placement time, and only for the first 10 orders per hour (rolling). If a limit order is successfully placed, and then gets partially filled such that some amount under the minimum provide size is left, then that order remains out; the rest doesn't get cancelled.
If an account has a position whose size is smaller than the minimum provide size, reduce-only limit orders will still be rounded down to that size and successfully placed.
Fills modify position sizes and cost. Fills only affect unrealized pnl, not realized pnl.
Position entry price = cost / size
Unrealized pnl: position size * mark price - cost
Every 30 seconds, all unrealized pnl turn into realized pnl if there are no accounts being auto-closed
(specifically, account collateral is modified by unrealized pnl and entry price is set to mark price)
FTX uses standard futures rather than inverted futures. This means that ultimately you can calculate your final PnL from quarterly futures, assuming no liquidations, as: PnL = Number of Futures * (exit price - entry price). So for instance if you bought 15 BTC futures at $5,000 and sold all 15 at $6,000, your USD collateral will increase by $15,000. If you hold a position until expiration you can treat the expiration price of the contract as your exit price.
Note that if you put on a position in a perpetual future, your PnL will be increased/decreased by the total funding payments you pay while holding the position. Each hour, there is a funding payment from longs to shorts or vice versa of position notional * (TWAP of futures price - TWAP of index)/24.
Each hour there is a funding payment dependent on whether the perpetual is trading at a premium (longs pay shorts) or at a discount (shorts pay longs). The funding payment is calculated by position size * (TWAP of futures price - TWAP of index)/24.
Margin is posted in 'USD' in your wallet. USD can be funded by depositing TUSD, USDP, USDC, BUSD, and HUSD.
Each subaccount has one central collateral wallet and uses cross margining for the account. Each subaccount has separate margin and collateral from other subaccounts.
An account can only increase its position as long as its Margin Fraction is above its Initial Margin Fraction. For small positions, this means that the Margin Fraction must be at least 5%, meaning that accounts can only initialize positions to a maximum of 20x leverage. As your position size increases, so does your Initial Margin Fraction.
If you Margin Fraction falls below your Maintenance Margin Fraction, your account will begin to get liquidated.
By default, collateral is posted in USD and pnl is paid out in USD.
Balances of the following coins also count towards collateral.
|Coin||Weight (total)||Weight (free)|
|Tokenized Stocks (AAPL, TSLA, etc)||0.85||0.8|
See here for more details.
FTX has a three step liquidation process.
An account begins to get liquidated if its margin fraction is less than its maintenance margin. So if its maintenance margin fraction is 3% then it would begin to get liquidated once it became 33x leveraged.
The liquidation engine will then periodically send orders in the market to close down the account's position. The goal of the liquidation engine is to carefully close down positions in the market while minimizing impact, keeping markets orderly. The liquidation engine just sends standard limit orders on behalf of the account getting liquidated.
The speed of the liquidation will depend on the position size but for small positions it will aim to fully close down the position in about one minute. If partially liquidating the account causes its leverage to drop back below the threshold, the liquidation will end.
If account falls even closer to bankruptcy, the backstop liquidity provider system will kick in. This happens if the account's margin drops below the auto-close margin fraction. So if the auto-close margin fraction is 2%, then if the account becomes 50x leveraged, the account will begin to close down against the backstop liquidity providers.
When an account is getting auto-closed, it will have its position closed down at the bankruptcy price, and backstop liquidity providers will take over the position. A portion of the remaining collateral goes to the backstop liquidity fund.
If an account does go bankrupt, the backstop liquidity fund will pay out to bring the account's balance back to 0.
The more technical explanation:
If the account’s margin fraction is less than maintenance margin but above auto-close margin fraction, then:
Approximately every 6 seconds, we send 10% of the position size as a order on the market, between 1 and 5 basis points through the book, with the constraint that the total sizes of liquidation orders is less than 0.0001 times the average daily volume of the underlying coin summed across all liquidating positions.
- Every second, for each future, with probability ⅙:
- Set order size to 10% of position size
- Bound order notional from below by min($1000, position size)
- Bound order size from above by max liquidation size remaining
- Multiply order size by uniform(0.5, 1.5)
- Bound order size from above by position size
- Decrease max liquidation size remaining by order size
- Send order uniform(1bp, 5bp) through the book, expiring 1 second later
- Set max liquidation size remaining to 0.0001 times the underlying ADV (note: this is a global max shared between all accounts)
- For each account whose margin fraction is between maintenance margin and auto-close margin fraction, in random order:
If the account’s margin fraction is less than auto-close margin fraction, then:
Every second, auto-close (1 - margin fraction / auto-close margin fraction) * position size, bounded below by min($1000, position size). If margin fraction < 0, auto-close the entire position.
BLPs have a max capacity per minute and per hour. Position is closed against BLPs in proportion to remaining capacity. If BLP total capacity is insufficient, the remaining size is closed against users with large opposing positions (starting with the top 10 opposing positions, more if their total is insufficient), in proportion to their position sizes.
Liquidated account closes at ZP. The BLP takes over the position at ⅔ * ZP + ⅓ * MP, but not worse than MP plus MP * 10% * auto-close margin fraction. backstop liquidity fund covers the rest--i.e. it gets ⅓*abs(MP-ZP) if the account isn’t yet bankrupt, and pays abs(MP-ZP) + 0.1 * MP * ACMF if it is. If account is bankrupt and backstop liquidity fund is empty, the remaining is taken from positions with positive unrealized pnl (proportionally to pnl).
If a contract hits a circuit breaker, MP is the premium as of when the circuit breaker was enacted plus current index price.
Withdrawals can be made if open margin fraction after the withdrawal > total initial margin fraction.
See here for more information about deposits and withdrawals.
Daily withdrawal limit: for highest tier verified accounts, there is no withdrawal limit. For other accounts, see here.