关于 NEST Protocol 报价佣金动态参数设计的构思。
撰文 | Danny
出品 | NEST爱好者(nestfans.com)获作者授权发布
引言: NEST预言机是一个链上博弈模型:报价者提供一个双向期权,由套利者来进行验证。这套机制保证了链上生成的价格和市场均衡价格接近,并通过一轮轮的报价——验证博弈,最终输出一个链上价格信息流。该信息流与市场均衡价格的偏差尽可能小,信息密度(价格生效密度)尽可能高。
仔细研究该博弈(https://cofix.io/doc/CoFiX_White_Paper.pdf)会发现,决定 NEST 价格和市场价格偏差的主要变量有:交易费用、对冲成本和双向期权成本(跟报价佣金没有关系)。 我们用bias来表示NEST价格和市场价格的偏差:
交易费用按比例记为 g/E,其中 g 为每次报价的 gas fee,E 为报价的规模,对冲成本记为 h,可以理解为交易所交易产生的交易费率(加上冲击成本比例,对于高流动性资产,该成本可忽略),单位规模报价的双向期权成本记为 c,该成本是秒级波动率 σ 的函数,根据链接中的计算,基本和 σ 值相当。以套利的思想来看待偏差的话,当 bias 超过了验证者的套利成本时,该价格就会被验证,从而在有效套利的假设下,可以认为bias < g/E+h+2c ,其中 2c 是因为验证者需要双倍报价,近似可以表示成bias<g/E+h+2σ 。
根据实际数据来看,专业验证者的h应该较小,如果报价规模不大,没有冲击成本,该 h 在0.05% 以内,σ 一般在 0.02% 到 0.2%(极高波动可能达到 1%,如 312,519 行情),因此一般后两项的成本大约在 0.1% 到 0.5%。
但 g/E 这一项波动极大,gas 消耗是以太坊生态拥堵情况决定的。 按照以太坊生态当前的繁荣程度,在网络非常流畅的情况下,消耗 10 gwei,燃烧 50000 gas limit,可被交易成功,即消耗
根据 NEST 报价所消耗的 gas limit 在 8 - 10 万的数据,我们假设将燃烧值设定为 100000 作为参考,那么当 gas price 为 1gwei 时,该 gas fee 为0.0001 ETH,按照 30 ETH 报价,这一比例 g/E 为0.00033%,可以忽略不计,如果是 20 gwei,则为 0.0067%,如果报价规模按照10 ETH,则为 0.02%,是一个需要考虑的值。一旦 gas price 上升到 200 gwei,在 30ETH 的基础报价规模下,g/E 就会造成 0.067% 的影响,2000 gwei 甚至造成 0.67% 的影响(当然,此时链上各种交易都失灵)。因此综合考虑,价格的波动率在极端情况下对价格偏差会造成 0.2% 的影响,而拥堵可能造成 0.67% 的偏差,甚至更高,因为极端拥堵时,以太坊生态其他交易者可能会将 gas limit(燃烧值)设的更高。
假设 gas limit = 100000,如图:
分析以上变量会发现,波动率影响的期权成本是外生变量,而拥堵造成的偏差比例,却可以通过提高报价规模来降低。 比如用 300ETH 报价时,即使是 2000gwei ,对价格偏差的影响也不过是 0.067%,而 3000ETH 则可忽略不计。但这里整个矿工报价的门槛提升了,同时在流动性并不高的标的里,h 成本反而会因为规模上升而急剧增加。因此报价规模在 ETH/USDT 轨道设计成 300ETH,或许还能接受(矿工变成矿池),对其它交易对,显然是不太合适的,这也是为何我们选择 10-30 这样一个报价规模的原因。换个角度,如果一个资产的流动性很低,则验证上的偏差可能稍微大一些,因为价格本身就并非那么有效。因此 1ETH 下,偏差 1%-5% 都能接受。如果我们设计一个动态的报价参数,则需要针对交易对的流动性进行设定:1ETH-100ETH。问题是,流动性参数并不是一个内生变量,我们也不能根据平均波动率来反映流动性的高低,这种设定只能通过某种约定(比如新资产可以用更低的报价规模,常用资产更高)或者 DAO 投票来修订。
价格密度是一个区块数量的参数,用平均多少区块生效产生一个链上价格来度量。区块数量越小,报价密度越高。因此影响 NEST 价格密度的主要有两个指标:NEST 挖矿成本和报价对的价格波动率。这是因为,挖矿成本决定报价密度,而价格波动率决定生存概率,二者的乘积才是价格密度(注意报价密度和价格密度的差异)。
NEST 挖矿成本主要取决于 NEST 价格和报价手续费。矿工基于 NEST 价格来确定挖矿的成本,我们可以近似认为二者是线性关系,NEST 价格越高,挖矿成本越高,或者说单位成本=NEST 价格 ,而 挖矿的成本=(报价手续费+g)/(报价区块间隔 单位区块出矿量) ,也即报价区块间隔=(报价手续费+g)/(NEST 价格 单位区块出矿量) ,由于单位区块出矿量相对固定,240W 区块才衰减一次,因此近似为常数,NEST 价格则为动态变量,一旦价格较低,则报价区块间隔就越高,报价密度越低。在公式里,NEST 价格是由市场决定,报价手续费可以由合约确定,g 是由 ETH 拥堵程度确定,一般来说,手续费是 g 的高一个数量级,为此,我们可以通过降低报价手续费来提高报价密度,从而提升价格密度。
一种更加动态的思路是,根据 NEST 价格来确定报价手续费,从而使得报价密度始终动态维持在一个高可用的范围内,这种方案可以写成,报价区块间隔=k/单位区块出矿量,而报价手续费/NEST价格=K,这种设计可以按照每天触发一次修正(矿工到了某个区块高度报价即触发),每次触发时给予一定 NEST 挖矿加成。这种方案可以保证 NEST 在大部分情况下稳定报价,也避免了冗余。
但是有一种情况可能锁定了这种调整,即当 NEST 价格极低,报价手续费为 0,但 g/NEST 价格>K,这会使得报价区块间隔增加,如果 NEST 价格极低,可能在 0 手续费的情况下依然报价区块间隔极大,这时候,NEST 处于“底部旋涡”。要走出旋涡,只有 NEST 价格上涨。
根据链接中的计算,当资产价格波动率上升时,一些正常的报价也会被吃掉,被吃掉的价格比率被称之为验证概率。一般来说,验证概率的极限为 50%,即波动率再大,正常报价下也会有一半的价格留下来,而在常规情况下,波动率为 0.01%-0.02% ,验证概率为 5%-7% 。大家可以根据链接 1 的数据来计算验证概率。报价区块间隔/(1-验证概率)=生效区块间隔 ,即价格密度。因此极端情况可以进一步将波动率引入到 K 值,即动态 K=K0 (1-验证概率)* ,这样对报价密度进行修正,使其等于价格密度。
最后,也需要对极端的 NEST 价格进行设计,即极端情况下,不再使用这一 K 值,而是直接使得报价手续费等于 0,这一处理也需要反映在算法里。
根据以上分析,我们提出了一个基于流动性的动态规模调整模型,和一个基于 NEST 价格与报价对波动率的动态手续费模型,从而提升 NEST 的价格密度和质量。需要注意的是,这种动态调整是有其成本的:部分原本属于回购的价值,将按照比例耗散给 ETH 矿工,降低了回购价值,要求下游应用贡献更多调用才能达到 NEST 增值。这一部分可以做更精细的分析。
注:未充分了解项目的情况下,不构成投资建议。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!