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
BTC: OKEx TUSD/BTC, OKEx USDC/BTC, Binance BTC/USDC, Binance TUSD/BTC, Bittrex TUSD/BTC, Coinbase BTC/USDC
ETH: Binance ETH/USDC, Binance TUSD/ETH, Bittrex TUSD/ETH, Coinbase ETH/USDC
USDT: OKEx TUSD/USDT, OKEx USDC/USDT, Binance USDC/USDT, Binance TUSD/USDT, Bittrex TUSD/USDT
EOS: Binance EOS/TUSD, Binance EOS/USDC
XRP: Binance XRP/TUSD, Binance XRP/USDC
Index price [index]: Market price of index.
Premium: MP - index
Indices are fetched every 5 seconds
The quarterly futures expire on the last Friday of every quarter to a 1 hour TWAP of the underlying index from 2am UCT to 3am UCT.
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 equal to [1 hour TWAP of Premium] / 24. This payment is added to your account's collateral.
Tick sizes: BTC $0.25, ETH $0.01, USDT $0.0001, XRP $0.001
Contract sizes: 0.001 BTC, 0.01ETH, 1USDT, 1EOS, 1XRP
Contract multiplier: 1000 for BTC, 100 for ETH, 1 for USDT, 1 for EOS, 1 for XRP
Contract notional: 1 coin
IMF Factor: 0.003 for BTC, 0.001 for ETH, 0.00001 for USDT, 0.0002 for EOS, 0.0005 for XRP
Position size: contracts * contract multiplier
Position notional: size * MP
IMF Factor: multiplier on the margin required for a coin.
Base IMF: the minimum initial margin fraction needed. Currently 0.1.
Position initial margin fraction: max(Base IMF, IMF factor * sqrt(open size))
Position maintenance margin fraction: max(4%, 0.6 * position initial margin fraction)
Position unrealized PNL: position size * (future mark price - position entry price)
Collateral: USD balance in futures wallet.
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
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 * MM)
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 1% through opposite side of the book
- Orders too far through the book get their prices capped
- 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
- Price bands. Can’t send orders if either:
- Price is more than 10% from the mean MP over the past 5 minutes
- Absolute value of premium is more than 5% above the absolute value of the mean premium over the past 5 minutes
ADV: 30-day coinmarketcap volume / 30 24h before the contract first trades
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 minute, all unrealized pnl turn into realized pnl if there are no account is 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.
Not 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 of position size * (TWAP of futures price - TWAP of index).
All margin is posted in 'USD' in your wallet. USD can be funded by depositing either USDC or TUSD.
Each subaccount has one central collateral wallet and uses portfolio 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.
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 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:
- 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
- Multiple 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
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. Other side closes at ⅔ * ZP + ⅓ * MP, but not worse than MP plus MP * 10% * auto-close margin fraction. Insurance 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 insurance fund is empty, remaining is taken from positions with positive unrealized pnl (portionally 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.
You can withdraw USD as either TUSD or USDC; you can deposit either TUSD or USDC to be credited with USD.
Daily withdrawal limit: for highest tier verified accounts, daily withdrawal limit is min($25m; max($1m; 25% of total account value; 30 day volume / 100)).
Maker: +2 bps
Taker: +5 bps
Fees are charged in USD.