New Protections for BitMEX Indices

Traders,

During the past weeks, many major exchanges have experienced issues with their banking relationships, and one sent incorrect prices. These prices caused liquidations on multiple platforms, including BitMEX. Affected traders were reimbursed from BitMEX funds.

We intend for the BitMEX index to accurately represent asset prices on functioning, liquid exchanges. Unfortunately, the landscape is shifting quickly. We expect more index changes to come as exchanges lose and regain their banking relationships.

In preparation for this, we are instituting the following protections to all BitMEX calculated indices:

  • For an index with 3 or more constituents, if any constituent’s price is X% away from the median price, that constituent will be removed until BitMEX manually reinstates it.
  • For an index with 2 constituents, if any constituent’s price is (X% / 2) away from the currently calculated index value, the index value published will be the last calculated index value.
  • For an index with only 1 constituent, if the constituent’s price is X% away from the last calculated index value, the index price will remain unchanged.

For Bitcoin / Fiat currency pair based contracts, the tolerance will be 25%. For Altcoin contracts, the tolerance will be 50%. The tolerance is subject to change with notice.

Additionally, the following protection has been in place since launch:

  • If any constituent exchange’s API feed is not responsive, the last valid price is used. If an exchange’s feed is stale for over 15 minutes, it is removed until the feed is operational again.

Example 1 (3-Exchange Index):

The index is equally weighted between exchanges A, B, and C. The initial price on exchanges A, B, and C is 100, and the tolerance is 25%. The median index price is 100. The price observed on exchange C changes to 50. Exchange C will be removed, the index price will remain at 100, and the index will now be equally weighted between exchanges A and B.

Example 2 (2-Exchange Index):

Tolerance: 25%

Time 0:

Exchange A Price: 100

Exchange B Price: 100

Published Index Price: 100

Time 1:

Exchange A Price: 100

Exchange B Price: 50

New Calculated Index Price: 75

Last Published Index Price: 100

New Published Index Price: 100

Because the difference between the two exchange prices and the New Calculated Index Price is greater than 12.5% (Tolerance / 2), the Last Published Index Price will be used.

Time 2:

Exchange A Price: 50

Exchange B Price: 50

New Calculated Index Price: 50

Last Published Index Price: 100

New Published Index Price: 50

Because the difference between the two exchange prices and the New Calculated Index Price is less than 12.5%, the New Calculated Index Price will be used.

Example 3 (1-Exchange Index):

The index is made up only of exchange A. The price on exchange A moved from 100 to 50. Given that the tolerance is 25%, and exchange A’s price moved 50% (50 vs. 100), the index value remains at 100. If exchange A’s price changes to 51, the index value will still remain at 100. If exchange A’s price were to change to 80, the index value would become 80.

Example 4 (Downtime):

The index is equally weighted between exchanges A, B, C, and D. The API feed for Exchange D has been down for 15 minutes. Exchange D will be removed, and the index will now be equally weighted between A, B, and C. 5 minutes later, D begins responding and is reinstated.