指数价格
为保证现货指数价格合理反应每个币种公允的现货市场价格,平台要针对每个合约币种选择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分钟为间隔,每分钟采样取值。