What Are Mark Price and Price Index in USDⓈ-Margined Futures?
What Are Mark Price and Price Index in USDⓈ-Margined Futures?
2019-09-09 02:29
Disclaimer: In compliance with MiCA requirements, unauthorized stablecoins are subject to certain restrictions for EEA users. For more information, please click here.
1. Introduction to Mark Price and Price Index
The Mark Price is a mechanism used in crypto futures trading to ensure fair and accurate pricing of futures contracts.
The Price Index is used to mitigate risks arising from price volatility and market manipulation by providing a more stable reference point. Instead of using the asset's last price, the Price Index takes into account the price of the asset across multiple exchanges. To learn more about the differences between the Mark Price and the Last Price, please refer to What Is the Difference Between a Futures Contract’s Last Price and Mark Price?
On Binance Futures, the Mark Price of a contract is determined by various factors, including the contract’s Last Price, the bid1 and ask1 series from the order book, the funding rate, and a composite average of the asset's spot price on major crypto exchanges.
The Price Index is used to calculate the Mark Price and is based on the weighted average spot price of the asset across multiple crypto exchanges.
2. Price Index of USDⓈ-M Futures contracts
What is the USDⓈ-M Futures Price Index?
The Price Index is the main component of the Mark Price. It represents the weighted average value of the underlying asset across major spot exchanges, reflecting the fair market value of the futures contract. The Price Index is continuously updated to account for any changes in the asset’s spot price or the exchange weightings used in the calculation.
At Binance, the Price Index for USDⓈ-M Futures contracts is based on prices from exchanges, such as KuCoin, OKX, HitBTC, Gate.io, Ascendex, MEXC, Coinbase, Kraken, Bitget, Bitfinex, and Bybit.
You can view the real-time Price Index Info on the Binance website.
How to calculate the Price Index for perpetual futures contracts?
The Price Index is calculated as follows:
Price Index = Sum of (Weight Percent of Exchange A * The Symbol’s Spot Price on Exchange A + Weight Percent of Exchange B * The Symbol’s Spot Price on Exchange B +...+ Weight Percent of Exchange N * The Symbol’s Spot Price on Exchange N)
Where:
Weight Percent of Exchange i = Weight of Exchange i / Total Weight
Total Weight= Sum of (Weight of Exchange A + Weight of Exchange B + ...+ Weight of Exchange N)
Please note: In the event of extreme price volatility or significant deviation from the Price Index, Binance will undertake additional protective measures, including but not limited to changing the constituents of the Price Index.
Binance applies additional protections to safeguard against poor market performance during spot exchange outages or connectivity issues:
Single Price source deviation: If the latest price of a specific exchange deviates by more than 5% from the median price of all sources, the value will be immediately capped at either 1.05 times or 0.95 times the median price, depending on whether the deviation is above or below the median. For example, if the median price of BTCUSDT index on Exchange A is 20,000 USDT and the price deviates by +7%, it will be capped at 21,000 USDT (20,000 * 1.05). Conversely, if the deviation is -6%, the accounted value will be 19,000 USDT (20,000 * 0.95). This adjustment will occur immediately after the spot price exceeds this price deviation threshold. The exchange-computed price value will be readjusted to its original value once the price value falls back within the 5% deviation threshold from the medium price of all price sources.
Exchange connectivity issues: If Binance is unable to access data from an exchange or the exchange has not updated its trading data within the last five minutes, the weight of that exchange will be set to zero in the weighted average calculation.
The “Last Price Protected” mechanism: When Binance cannot obtain a stable reference data for the Price Index and the Mark Price, it uses the “Last Price Protected” mechanism. In this case, the Price Index is temporarily updated based on the latest transaction price of the contract within a certain limit as a reference for the Mark Price to calculate unrealized profit and loss (PnL) and the liquidation call level. This helps prevent unnecessary liquidations until the situation returns to normal.
You can refer to the latest exchange reference on the Price Index for real-time updates.
Note:
Cross rate: For underlying assets with no direct quotes, Binance will use the synthetic price to calculate the cross-exchange rate as the synthetic index. For example, LINK/USDT can be calculated using LINK/BTC and BTC/USDT.
Price Index updates: Binance reserves the right to update the Price Index references from time to time without prior notice.
You can consider the Price Index as the “Spot Price”. Now, let’s look at how to calculate the Mark Price for all Unrealized PnL calculations. Please note that Realized PnL is based on actual executed market prices.
3. Mark Price of USDⓈ-M Futures contracts
The Mark Price offers a better estimate of a contract’s ‘true’ value compared to Perpetual Futures prices, as it is less volatile in the short term. Binance uses the Mark Price to prevent unnecessary liquidations and discourage market manipulations by bad actors.
On Binance Futures, the Mark Price is calculated by taking into account several factors. These include the Last Price of the futures contract, the bid1, and ask1 series from the order book, the funding rate, and a composite average of the underlying asset's spot price on major crypto exchanges.
The calculation of the Mark Price is closely linked to the Funding Rate and vice versa. Since Unrealized PnL is the key factor in triggering liquidations, it is crucial that its calculation is accurate to prevent unnecessary liquidations. The underlying asset for the Perpetual Contract represents the contract’s ‘true’ value, and the Price Index – an average of prices from major markets – serves as the primary component of the Mark Price.
How to calculate the Mark Price for USDⓈ-M perpetual futures contracts?
The Mark Price is calculated using the following formula:
Mark Price = Median (Price 1, Price 2, Contract Price)
Price 1 = Price Index * (1 + Last Funding Rate * (Time Until Next Funding / Funding Period))
Where:
The funding period refers to the duration between each time Binance charges users a funding fee, expressed in hours.
Time until next funding is the remaining time (expressed in hours) until the next funding fee is charged. For example, if the funding period is set to 8 hours, and the last funding fee charge occurred 2 hours ago, the time until the next funding would be 6 hours.
Note: The funding fee is exchanged between long and short-position holders, with Binance acting as a neutral intermediary in the transaction.
Price 2 = Price Index + Moving Average (2.5-Minute Basis)
The Moving Average (2.5-minute basis) is calculated as the average of 30 data points over a 2.5-minute period. The data point is calculated every 5 seconds by averaging the bid and ask prices and then subtracting the Price Index.
The formula is: Moving Average (2.5-minute Basis) = Sum of [(Bid1_i + Ask1_i)/2 - PI_i] /30
Where:
PI is the Price Index at the time of calculation.
Bid1_i, Ask1_i, and PI_i are recorded over 30 data points collected at 5-second intervals during a 2.5-minute period (0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, and 55 seconds past the minute).
Please refer to the Price Index for each USDⓈ-M Futures Contract for more details.
Median Calculation for the Mark Price:
If Price 1 < Price 2 < Contract Price, then Price 2 will be used as the Mark Price.
Note: The Mark Price may deviate from the spot price during extreme market conditions or deviations in price sources. In such cases, Binance will take additional protective measures, such as calculating Mark Price = Price 2.
During system upgrades or downtime, when all trading activities are paused, the system will continue calculating the Mark Price using the standard formula. However, the Moving Average (2.5-minute basis) in Price 2 will be set to 0 until the system returns to normal.
How to calculate the Mark Price for USDⓈ-M quarterly delivery contracts?
Before the delivery date:
Mark Price = Price Index + Moving Average (2.5-Minute Basis)
Moving Average (2.5-minute basis) is calculated as:
Moving Average (Bid1 + Ask1) / 2 - Price Index), calculated every minute over a 2.5-minute interval.
On the delivery date:
i) If the time to delivery is greater than 1 hour
Using BTCUSDT 0925 as an example:
Mark Price before 25 September 2020, 06:59:59 UTC
= Price Index + Moving Average (2.5-Minute Basis)
Moving Average (2.5-Minute Basis) = Moving Average ((Bid1 + Ask1) / 2 - Price Index), calculated every minute over a 2.5-minute interval.
ii) If time to delivery is 1 hour or less
Mark Price on 25 September 2020, 07:00:00 - 07:59:59 UTC
= Average of the Price Index, calculated every second between 07:00:00 and 07:59:59 UTC on the delivery day.