指數價格
為保證現貨指數價格合理反應每個幣種公允的現貨市場價格,平臺要針對每個合約幣種選擇3家以上主流交易所的幣對作為指數權重成分,並設計了異常處理邏輯,保證單個交易所價格出現大幅偏離時,指數波動在正常範圍內。
Aibit根據市場上多家交易所的最新成交價格,進行加權平均,計算而得到的指數價格,USDT永續合約的每個幣種合約,都有一個指數。如 BTC/USDT永續合約,使用 BTC指數價格。
指數價格獲取邏輯
即時獲取該幣種所有指數成分交易所幣對最新成交價及成交量;每 1 秒鐘(根據指數更新的間隔決定)通過 API 獲取表格中交易所的最新價格。
系統維護或最新成交價及成交量一段時間內(30分鐘以內)未更新的交易所置為無效,本次不參與計算;
若有計價貨幣為BTC的交易對,需乘以Aibit的 BTC美元指數,換算為美元價格;
判斷當前剩餘有效交易所數據有幾家:
>=3家,按相等權重加權有效交易所數據;PS: 如果某家交易所(包括此交易所本身)價格相對所有交易所價格 中位數偏差±3%以上,則該交易所價格按照中位數*0.97或中位數*1.03計算。
=2家,按相等權重加權有效交易所數據;
=1家,直接取剩餘一家有效交易所的價格作為指數價格;
舉例:
某交易所當前價格為 518 USDT/BTC,而其他5家交易所的價格分別為500 USDT/BTC、501 USDT/BTC、502 USDT/BTC、503 USDT/BTC、504 USDT/BTC,則當前所有樣本交易所價格中位數為(502 + 503) / 2 = 502.5 USDT/BTC。該交易所與中位數價格偏離(518 – 502.5) / 502.5 = 3.08% > 3%,則該交易所將以502.5 *1.03= 517.57 USDT/BTC的價格參與指數計算,該次指數為(517.57 + 500 + 501 + 502 + 503 + 504)/ 6 = 504.59。
指數價格異常處理
1. 單個交易所的價格比其他交易所大幅偏離。處理方案:
若指數內只有2家有效交易所(指數內只有2家交易所,或由於行情丟失,暫時剔除部分交易所而導致)。若兩家平臺獲取的價格偏差大於25%,認為與上一次計算的指數價格偏差較小的那家價格正常,另一家出現了烏龍指。此時指數價格臨時錨定價格正常的那家交易所。
若指數價格某一時刻僅依據一家交易所的價格(其他所有交易所都出現了異常被剔除)。若獲取到的價格與上一時間獲取到的指數價格偏差大於25%,認為出現烏龍指,指數價格取上一時間的價格。
2. 交易所的行情數據丟失。處理方案:
若某一交易所在某個時間點未能取得行情數據(交易所休市,行情中斷,遭遇攻擊等原因),則該時間點的價格將按照最新一次取到的有效價格進行計算。若某一交易所在過去100個數據點(10min),取得的有效數據低於10個點(10%),我們將會認為此交易所的價格失去指導意義,並將該交易所價格的權重暫時調整為0,在該交易所恢復數據後,若過去的100個數據點中個至少有90個數據點的數據是有效的(90%),那麼我們將會恢復該交易所的權重。
3. 單交易所價格長時間大幅偏離。處理方案:
當某一交易所的價格長時間相對其他交易所大幅偏離時,我們認為該交易所的價格可能失去指導意義,將會對指數的樣本以及權重進行調整,具體調整方案以平臺公告為准。
標記價格
為了減少用戶不必要的強平,USDT永續合約使用標記價格作為強平時的另一個參考價格。即當系統判斷用戶倉位是否觸發強平時,必須同時滿足;使用標記價格和最新價,盡可能避免由於市場被操縱或是缺乏流動性而與價格指數發生不必要的偏差,並引發連環強平的風險。
標記價格計算
標記價格=現貨指數價格+合約基差移動平均值
基差移動平均值計算方式:
基差=合約中間價 - 現貨指數價格);
=((合約賣一價 + 合約買一價)/2 - 現貨指數價格);
設基差為x,則基差移動平均值=(x1+x2+x3)/3
x1:當前合約中間價的基差;
X2:一分鐘前的合約中間價基差;
X3:兩分鐘前的合約中間價基差;
......
30分鐘前的合約中間價基差 ,以30分鐘為間隔,每分鐘採樣取值。