FAQ
Home
Support Center
FAQ
Crypto Derivatives
Futures Contracts
COIN-M Futures Contracts
Mark Price and Price Index of COIN-Margined Contracts

Mark Price and Price Index of COIN-Margined Contracts

2020-06-11 07:38
Binance Futures uses Mark Price as a reference in liquidations and calculations of unrealized PNL. Mark Price is an estimated fair value of a contract and it differs from ‘Last Price’. Mark Price is used to prevent unfair and unnecessary liquidations that may happen when the market is highly volatile. Additionally, it also helps prevent price manipulation.
It is important to note that mark prices in both perpetual contracts and quarterly contracts are different and they are computed with different formulas and methodologies. We highly recommended reading both support pages (Mark Price in Perpetual Futures and Mark Price in Quarterly Futures) to get a clear understanding of Mark Price methodologies.
A Mark Price consists of two components: Price Index and Moving Average (MA) Basis.
A moving average basis is used as the second component of a Mark Price calculation. It helps to smooth out the price data over a specified period of time by creating a constantly updated average price. This methodology reduces the possibility of unfair and unnecessary liquidations when the market is highly volatile.
Price Index is an aggregate price extracted from the major spot exchanges, weighted by their relative volume; this is done to prevent price manipulation from a single exchange. The Price Index for COIN-Margined contracts derives prices from Bitstamp, Coinbase Pro, Kraken, Binance, Huobi, Kucoin, and OKX.
More information can be found on the Price Index references of each COIN-Margined contract.

Mark Price of COIN-Margined Perpetual Contracts

Mark Price = Median * (Price 1, Price 2, Contract Price)
Price 1 = Price Index * (1 + Last Funding Rate*(Time Until Funding / 8))
Price 2 = Price Index + Moving Average (5-Minute Basis) *
*Moving Average (5-Minute Basis) = Moving Average ((Bid1 + Ask1) / 2 - Price Index), which measures every minute in a 5-minute interval.
**The Moving Average (5-Minute Basis) is calculated by taking the average of the bid and ask prices and subtracting the Price Index, before taking the average of that value over the last 5 minutes, calculated every 5 seconds (60 data points).
Moving Average (5-Minute Basis) = sum of [(Bid1_i + Ask1_i)/2 - PI_i] /60
*Median: If Price 1 < Price 2 < Contract Price, then take Price 2 as Mark Price.
Please note that due to extreme market conditions or deviations in price sources, which may lead to the Mark price deviating from the spot price, Binance will take additional protective measures, i.e., Mark Price = Price 2 in this scenario.
During the system upgrade or the system down that pending all trading activities, the Mark Price calculation is as follows:
Keep the Mark Price formula but set Moving Average (5-minute Basis) in Price2 to 0 until the system is back to normal.
Mark Price is a better estimate of the ‘true’ value of the contract, compared to Perpetual Futures prices which can be more volatile in the short term. We use this price to prevent unnecessary liquidations for traders and to discourage any market manipulations by bad actors.

Mark Price of COIN-Margined Quarterly Contracts

Traditionally, the price of a quarterly Futures contract will converge with its corresponding spot price as the contract expires after the three-month period. As the contract runs down towards expiry, the Mark Price will closely reflect spot prices and the moving average basis component will no longer be part of the Mark Price calculation. This means that the Mark Price of a quarterly Futures contract will be computed differently as it reaches the time of expiration.

Before delivery date:

Mark Price = Price Index + Moving Average (15-Minute Basis) *
*Moving Average (15-Minute Basis) = Moving Average ((Bid1 + Ask1) / 2 - Price Index), measures every minute in a 15-minute interval.

On the delivery date:

i) The time to delivery is greater than 1 hour
Using BTCUSD 0925 as an example:
Mark Price before 25 September 2020, 06:59:59 UTC
= Price Index + Moving Average (15-Minute Basis) *
*Moving Average (15-Minute Basis) = Moving Average ((Bid1 + Ask1) / 2 - Price Index), measures every minute in a 15-minute interval.
Please note:
During the system upgrade or the system down that pending all trading activities, the Mark Price of a quarterly Futures contract whose time to delivery is greater than 1 hour is calculated as follows:
Keep the Mark Price formula but use the Bid1 and Ask1 at the system stopped time to calculate Moving Average (15-minute Basis) until the system is back to normal.

How to calculate Mark Price (time to delivery is greater than 1 hour)?

Step 1: Calculate the Price Index
Assume Binance uses an equally-weighted price average, the prices of BTCUSD trading pairs on the selected exchanges are 10,000 USD, 10,0001 USD, 10,0002 USD, 10,003 USD and 10,004 USD respectively.
Price Index = (10,000 + 10,001 + 10,002 + 10,003 + 10,004) / 5 = 10,002 USD
Step 2: Calculate the Moving Average on 15-minute Basis
Moving Average (15-minute Basis)
= Moving Average (Mid-Price* - Price Index), which measures every minute in a 15-minute interval.
*Mid-Price = (Bid1 + Ask1)/2
To calculate the moving average, we need to get the mid-price from the order book and Price Index of the first second of every minute for the past 15 minutes, then we will have n=15 in total.
For example, if we want to calculate the Mark Price of BTCUSD 0925 at 12:15:00 UTC, the Mid-Price and Price Index are as follows:
Time (UTC)
Mid-Price
Index Price
12:00:01
10,003
10,001
12:00:06
10,004
10,002
12:00:11
10,005
10,006
...
...
...
12:14:56
10,003
10,002
Moving Average (15-minute Basis)
= Moving Average (Mid-Price - Price Index)
= [(Mid-Price - Price Index)1 + (Mid-Price - Price Index)2 + … + (Mid-Price - Price Index)180 ] / 180
= [(10,003 - 10,001) + (10,004 - 10,002) + … + (10,005 - 10,006)] / 180
Step 3: Substitute the Price Index and Moving Average (15-minute Basis) into the formula
Let say Price Index = 10,002 USD and Moving Average (15-minute Basis) = -1
Mark Price at 12:15:00 UTC
= Price Index + Moving Average (15-minute Basis)
= 10,002 USD - 1 USD
= 10,001 USD
ii) Time to delivery is equal or less than 1 hour
Mark Price on 25 September 2020, 07:00:00 - 07:59:59 UTC
= Average of Price Index (every second from 07:00:00 and 07:59:59 UTC on the delivery day)

How to calculate Mark Price (time to delivery is equal or less than 1 hour)?

Step 1: Calculate the Price Index
Assume Binance uses an equally-weighted price average, the prices of BTCUSD trading pairs on the selected exchanges are 10,000 USD, 10,0001 USD, 10,0002 USD, 10,003 USD and 10,004 USD respectively.
Price Index = (10,000 + 10,001 + 10,002 + 10,003 + 10,004) / 5 = 10,002 USD
Step 2: Calculate the Average of Price Index
Mark Price at Time n
= (Price Index 1 + Price Index 2 + … + Price Index n) / n
Example:
Mark Price at 07:00:02 on 25 September
= (Price Index at 07:00:00 + Price Index at 07:00:01 + Price Index at 07:00:02) / 3
= (10,002 + 10,003 + 10,004) / 3
= 10,003
Time (UTC)
Price Index
Mark Price
07:00:00
10,002
= 10,002/1 = 10,002
07:00:01
10,003
= (10,002 + 10,003) /2 = 10,002.5
07:00:02
10,004
= (10,002 + 10,003 + 10,004) / 4 = 10,003
...
...
...
07:59:59
10,003
= (10,002 + 10,003 + 10,004 + ... + 10,003) / 3,600 = ...