Complete Futures Specs

browse

As the terms of service make clear, manipulative behavior is not tolerated on FTX.  Any attempts to do so may result in account termination at FTX's sole discretion.

 

Indices


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

Expiration


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

 

Funding payments


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.

 

Contract specifications


See here for contract specifications.

 

Accounts


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)) * IMF Weight

Position maintenance margin fraction: max(3%, 0.6 * IMF Factor * abs(sqrt(position size)))

Position unrealized PNL:  size * (future mark price - position entry price)

Collateral: See here for more details. 

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

 

 

Orders


Order Limits

  1. Can’t send orders more than 2% (for futures markets) or 25% (for spot markets) through opposite side of the book 
    1. Orders too far through the book get their prices capped at the limit price
    2. 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
  2. Sum of open order sizes per side can’t be greater than max($1m, 1% of an ADV of the underlying coin)
  3. Can’t increase position if OMF < IMF after the order is placed
  4. Can’t send any orders (including orders that would decrease position) if account is below MMF

 

Price Bands

  1. FTX also has price bands.  Users can’t send orders if either:
    1. 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
    2. 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 Size

Minimum BTC-PERP Trade Size:

The minimum provide (maker) size for BTC-Perp is 0.001, this only applies when you make more than 10 orders per hour smaller than 0.001. 

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.

 

PNL


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 ((future mark price - index) / 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 ((future mark price - index) / index) / 24.

 

Margin 


 

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.

 

Non-USD Collateral:

By default, collateral is posted in USD and pnl is paid out in USD.

See Non-USD Collateral for more details. 

 

Liquidations
See here for more details. 


FTX has a three step liquidation process.

 

Step 1:

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.

Step 2:

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.

Step 3:

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.

 

Specifically:

  1. Every second, for each future, with probability ⅙:
    1. Set order size to 10% of position size
    2. Bound order notional from below by min($1000, position size)
    3. Bound order size from above by max liquidation size remaining
    4. Multiply order size by uniform(0.5, 1.5)
    5. Bound order size from above by position size
    6. Decrease max liquidation size remaining by order size
    7. Send order uniform(1bp, 5bp) through the book, expiring 1 second later
    1. Set max liquidation size remaining to 0.0001 times the underlying ADV (note: this is a global max shared between all accounts)
    2. 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 PZP.  The BLP takes over the position at ⅔ * PZP + ⅓ * 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-PZP) if the account isn’t yet bankrupt, and pays abs(MP-PZP) + 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


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.

 

__________________________________________

 

Previous
Next
360024780511
Didn't find what you were looking for?
Create a support ticket
Community

Was this article helpful?

1 out of 1 found this helpful