We do not store the mark price on our site, however it is possible to recreate the exact mark price at the time of your liquidation, using the REST API, in order to verify if a liquidation was correctly processed by the liquidation engine.


Using the formula presented in our references and our API explorer you can easily calculate the mark price at the exact time of your liquidation if you follow the steps below.


This is the formulas used for calculating the mark price:


  • Funding Basis = Funding Rate * (Time Until Funding / Funding Interval)
  • Fair Price = Index Price * (1 + Funding Basis)


You can pull the data from the REST API, using either the direct links or the API explorer, the respective end points for the API explorer are:


  1. Instrument/Instrument_getCompositeIndex
  2. /Funding/Funding_get


Please note that the .BXBT price that you note on the graph, is pasted in one minute intervals, and does not include the 5-second snapshot price movements of the index (this counts for any and all liquidations.) 


For this we need to use the composite index, which is a constant 5 second snapshot, that is used to calculate the one minute average index price. (1)


To Begin


There are a few details which you must ensure that you include if you would like the correct results to be printed by the REST API, below is an image of BitMEX's API Explorer.



1) The most common mistake is inputting an incorrect startTime and endTime, both dates need to be in JSON format. 


Provided in the yellow example box: 2018-02-22T09:11:02.774Z = 22 February 2018 at 9:11:02 AM UTC, where the 02 is seconds & the .774Z is the milliseconds.


You need to ensure that your startTime and endTime interval include the timestamp of your liquidation, which is given in your liquidation email. (Example below, date highlighted)



The above date (Tue, 16 Jan 2018 11:47:08 GMT) can easily be converted to JSON if you alter the dates provided in the API Explorer in the example value. It would be: 2018-01-16T11:47:08.000Z 




Part 1: .BXBT Index


We find the following API link: 

https://www.bitmex.com/api/v1/instrument/compositeIndex?symbol=.XBT&count=100&reverse=false&startTime=2018-01-16T11%3A47%3A00.000Z&endTime=2018-01-16T11%3A47%3A10.000Z


With the following response body (the data you need):


BMI is the Index price, 50/50 weighted of the last price on GDAX and Bitstamp at the timestamp.


[
  {
    "timestamp": "2018-01-16T11:47:00.000Z",
    "symbol": ".XBT",
    "indexSymbol": ".XBT",
    "reference": "BMI",
    "lastPrice": 12392.45,
    "weight": null,
    "logged": "2018-01-16T11:47:00.098Z"
  },
  {
    "timestamp": "2018-01-16T11:47:00.000Z",
    "symbol": "BTC-USD",
    "indexSymbol": ".XBT",
    "reference": "GDAX",
    "lastPrice": 12395.91,
    "weight": 0.5,
    "logged": "2018-01-16T11:47:00.098Z"
  },
  {
    "timestamp": "2018-01-16T11:47:00.000Z",
    "symbol": "BTCUSD",
    "indexSymbol": ".XBT",
    "reference": "BSTP",
    "lastPrice": 12388.99,
    "weight": 0.5,
    "logged": "2018-01-16T11:47:00.098Z"
  },
  {
    "timestamp": "2018-01-16T11:47:05.000Z",
    "symbol": ".XBT",
    "indexSymbol": ".XBT",
    "reference": "BMI",
    "lastPrice": 12399.5,
    "weight": null,
    "logged": "2018-01-16T11:47:05.098Z"
  },
  {
    "timestamp": "2018-01-16T11:47:05.000Z",
    "symbol": "BTC-USD",
    "indexSymbol": ".XBT",
    "reference": "GDAX",
    "lastPrice": 12400,
    "weight": 0.5,
    "logged": "2018-01-16T11:47:05.098Z"
  },
  {
    "timestamp": "2018-01-16T11:47:05.000Z",
    "symbol": "BTCUSD",
    "indexSymbol": ".XBT",
    "reference": "BSTP",
    "lastPrice": 12399,
    "weight": 0.5,
    "logged": "2018-01-16T11:47:05.098Z"
  }
]


We take the lastPrice: 12399.5




Part 2: Funding Rate





We find the following API link: 

https://www.bitmex.com/api/v1/funding?count=100&reverse=false&startTime=2018-01-16T11%3A47%3A00.000Z


With the following response body (the data you need):


Note that the fundingRate must be multiplied by 100, to convert the value into percentage!


You need to take the first fundingRate that occurs after your liquidation as that will be the fundingRate at the time of the liquidation, in this examples case, 12:00:00 is the first funding timestamp after 11:47 UTC. 

[
  {
    "timestamp": "2018-01-16T12:00:00.000Z",
    "symbol": "XBTUSD",
    "fundingInterval": "2000-01-01T08:00:00.000Z",
    "fundingRate": -0.000559,
    "fundingRateDaily": -0.001677
  }
]



Now that you have the respective data you can calculate the exact mark price at the time-stamp of your liquidation.




We recall the formulas used for calculating the mark price:

  • Funding Basis = Funding Rate * (Time Until Funding / Funding Interval)
  • Fair Price = Index Price * (1 + Funding Basis)



As regards (Time until funding/funding interval), from the reference page it is stated that funding occurs every 8 hours. 


Therefore you must calculate the (Time until funding) value from your timestamp. We know that the timestamp used in this example is 11:47, therefore time until funding is 13 minutes. However, we need to convert this into hours and thereafter we can calculate the first part of the formula (Funding Basis)


To convert into hours: 13/60 minutes = 0.21666666666 hours


Funding Rate: -0,000559 x 100 = -0,0559


Funding Basis: -0,0559% x (0.21666666666/8) = -0.00001513958


Index (.BXBT) price at the timestamp = 12399.5 


Finally you calculate your fair price


Fair price = 12399.5 * (1 - 0.00001513958)

               

 = 12399.3122768





Therefore we can conclude that the liquidation was valid if the fair price you calculate and the mark price on your email match after rounding and that the liquidation engine properly liquidated your position in accordance with the liquidation engines parameters as set by the formulas.


If you need any further clarification, please don't hesitate to contact support.



Как вручную подсчитать и подтвердить цену маркировки вашей ликвидированной позиции по XBTUSD?


Мы не храним цену маркировки на сайте, при этом, вы можете воссоздать точную цену маркировки на время ликвидации вашей позиции с помощью REST API, чтобы уточнить корректность обработки ликвидации модулем ликвидации.

С помощью формулы в наших справочных материалах и API explorer вы можете легко подсчитать точную цену маркировки на момент вашей ликвидации, если предпримете следующие шаги:

Формулы для подсчета цены маркировки:

  • Базис финансирования = коэффициент финансирования х (время до финансирования/интервал финансирования)
  • Справедливая цена = цена индекса х (1+базис финансирования)

Выможете взять данные из REST API, используя или прямые ссылки, или API explorer, соответствующие разделы API explorer следующие:

  1. Instrument/Instrument_getCompositeIndex
  2. /Funding/Funding_get

Пожалуйста, учтите, что цена .BXBT, которую вы видите на графике, отражает движение цены с минутным интервалом, и не включает 5-секундные движения цены индекса (это относится ко всем ликвидациям).

Для этого нужно использовать комплексный индекс, который является снимком цены с 5-секундным интервалом, который используется для расчета средневзвешенной минутной цены индекса. (1)

Для начала


Есть несколько пунктов, которые вы обязательно должны учесть, если хотите получить от REST API правильные результаты. Ниже – изображение из API explorer BitMEX.



 

1) Частая ошибка – внесение некорректных startTime и endTime, оба значения должны быть в формате JSON.

В желтой рамке примера: 2018-02-22T09:11:02.774Z= 22 февраля 2018, 9:11:02 UTC, где 02 – это секунды и .774Z– миллисекунды.

Вам нужно убедиться в том, что интервал между startTime и endTime включает временную отметку вашей ликвидации, которая указана в сообщении о ликвидации, которое вы получили. (пример нижедата выделена цветом)




Дата выше (Tue, 16 Jan2018 11:47:08 GMT) может быть легко конвертирована в JSON, если вы измените значения в API Explorer на значения в примере. Вы получите 2018-01-16T11:47:08.000Z.


Часть1: Индекс.BXBT


Мы получаем ссылку на API следующего вида:

https://www.bitmex.com/api/v1/instrument/compositeIndex?symbol=.XBT&count=100&reverse=false&startTime=2018-01-16T11%3A47%3A00.000Z&endTime=2018-01-16T11%3A47%3A10.000Z

 

Со следующим полем ответа (данные, которые вам нужны):

BMI – цена индекса, на 50% - цена на GDAX и на 50% - на BitStamp на данной временной отметке.


[{"timestamp":"2018-01-16T11:47:00.000Z","symbol":".XBT","indexSymbol":".XBT","reference":"BMI","lastPrice":12392.45,"weight":null,"logged":"2018-01-16T11:47:00.098Z"},

{"timestamp":"2018-01-16T11:47:00.000Z","symbol":"BTC-USD","indexSymbol":".XBT","reference":"GDAX","lastPrice":12395.91,"weight":0.5,"logged":"2018-01-16T11:47:00.098Z"},

{"timestamp":"2018-01-16T11:47:00.000Z","symbol":"BTCUSD","indexSymbol":".XBT","reference":"BSTP","lastPrice":12388.99,"weight":0.5,"logged":"2018-01-16T11:47:00.098Z"},

{"timestamp":"2018-01-16T11:47:05.000Z","symbol":".XBT","indexSymbol":".XBT","reference":"BMI","lastPrice":12399.5,"weight":null,"logged":"2018-01-16T11:47:05.098Z"},

{"timestamp":"2018-01-16T11:47:05.000Z","symbol":"BTC-USD","indexSymbol":".XBT","reference":"GDAX","lastPrice":12400,"weight":0.5,"logged":"2018-01-16T11:47:05.098Z"},

{"timestamp":"2018-01-16T11:47:05.000Z","symbol":"BTCUSD","indexSymbol":".XBT","reference":"BSTP","lastPrice":12399,"weight":0.5,"logged":"2018-01-16T11:47:05.098Z"}]


Мы берем lastPrice: 12399.5


Часть 2: коэффициент финансирования



Мы получаем ссылку на API следующего вида:

https://www.bitmex.com/api/v1/funding?count=100&reverse=false&startTime=2018-01-16T11%3A47%3A00.000Z

Со следующим полем ответа (данные, которые вам нужны):


Имейте в виду, что fundingRate нужно умножать на 100, чтобы перевести в проценты!

Вам нужно взять первое значение fundingRate, которое появляется после вашей ликвидации, поскольку это будет fundingRate в момент ликвидации, в случае с этим примером 12:00:00 – это первая отметка финансирования после 11:47 UTC.



[
 {
"timestamp":"2018-01-16T12:00:00.000Z",
"symbol":"XBTUSD",
"fundingInterval":"2000-01-01T08:00:00.000Z",
"fundingRate":-0.000559,
"fundingRateDaily":-0.001677
 }
]



Теперь, когда у вас есть соответствующие данные, вы можете подсчитать точную цену маркировки на временной отметке вашей ликвидации.


Мы вспоминаем формулы для подсчета цены маркировки:

  • Базис финансирования = коэффициент финансирования х (время до финансирования/интервал финансирования)
  • Справедливая цена = цена индекса х (1+базис финансирования)


Касательно (время до финансирования/интервал финансирования): на странице Справочных Материалов указано, что финансирование происходит каждые 8 часов.

 

Следовательно, вы должны подсчитать значение (время до финансирования) от вашей временной отметки. Мы знаем, что отметка в этом примере – 11:47, поэтому время до финансирования – 13 минут. При этом, нам нужно перевести это в часы и затем мы сможем рассчитать первую часть формулы (базис финансирования)

Чтобы перевести в часы: 

13/60 минут = 0.21666666666 часа


Коэффициент финансирования: -0,000559 х 100 = -0,0559

Базис финансирования: -0,0559% x(0.21666666666/8) = -0.00001513958


Цена индекса (.BXBT) на временной отметке = 12399.5


Наконец, вы рассчитали свою справедливую цену


Справедливая цена = = 12399.5 * (1 - 0.00001513958)

 = 12399.3122768


Следовательно, мы можем сделать вывод, что ликвидация была правомерна, если подсчитанная вами справедливая цена и цена маркировки в вашем сообщении совпадают после округления, и что модуль ликвидации корректно ликвидировал вашу позицию в соответствии с определенными формулами, определяющими параметры модуля ликвидации.

 

Если у вас еще остались вопросы, пожалуйста, обратитесь в службу поддержки.