指数价格

须知:指数也叫Oracle,是来自外界的公允价格

什么是指数价格?

指数价格广泛存在于合约交易中,合约交易铆钉的标的是现货的价格,那现货的价格在各个交易所是不一样的,得用一个统一的值来量化这个币对的价格,这就算指数价格。指数价格代表市场的公允价格,为了公平起见,指数价格一致采用各个大所的现货价格的加权平均值,并进行异常处理,以求得到公平、稳定、精确的价格。

指数价格的计算

1. 寻找来源交易所并设置权重

用BTC/USDT交易对作为例子:

以Binance、OKX、Coinbase、Huobi四个交易量较大的交易所作为指数价格来源,设置以下权重:

来源交易所权重

binance

25%

okx

25%

coinbase

25%

huobi

25%

2. 拉取指数价格

系统会每秒拉取一次来源交易所一段时间内的所有成交价格,并进行一次计算,得到的结果作为该来源交易所的最新价格。这样做是为了让最新价格更符合实际情况,如果很久没有最新成交,这时候最新的成交价将不是最新的市场价格。

来源交易所最新价格 = 中位数(买一价, 卖一价, 最新价格)

3. 异常价格处理

过期时间

当某来源交易所的价格在过期时间内没有更新,我们都会认为价格已经过期,在本次计算时不采纳。

如:过期时间 = 40,000ms

错价比例

当某来源交易所的价格相比上一次价格偏离太大,我们都会认为此次价格不具有参考价值,在本次计算时不采纳。

如:错价比例 = 10%

价格偏离 = ABS(最新来源价格 - 上一次来源价格) / 上一次来源价格

当 价格偏离 >= 10% 时:不采纳此次价格

价格偏离矫正

当某来源交易所的价格偏离其他交易所价格的中位数太大,就认为此次价格过于偏激(可能是由于市场波动或市价单导致),需要对这个交易所的价格进行矫正后,才能纳入计算。

矫正规则:如果它小于其他交易所中位数且两者差距大于3%,按照其他来源价格中位数0.97计算;如果它大于其他交易所中位数且两个差距大于3%,则按照其他来源价格中位数1.03计算。

如:价格偏离矫正 = 3%

价格偏离 = ABS(此来源价格 - 其他来源价格中位数) / 其他来源价格中位数

当 价格偏离 > 3% 时:

矫正后价格 = clamp(其他来源价格中位数*0.97, 其他来源价格中位数*1.03, 来源价格)

4. 指数加权计算

加权计算

每秒按照设置的权重对异常处理后的来源价格进行加权平均。

指数价格 = SUM(来源价格 * 权重)

无可用指数源

当没有可用指数价格的时候,取上一次的指数价格为最新指数价格。并尝试重连,重连数次之后自动重启服务。

指数价格 = 上一次指数价格

Last updated