原文作者:DaveWhite,Frankie,JustinRoiland
原文编译:Kyle,DiFi之道
NFT。
如果我们想每天卖出100个NFT,但实际只能卖出10个,那么CRISP会慢慢降低“立即购买”的价格。如果我们想每天卖出100个NFT,但实际能够卖出200个,那么CRISP会在每次新卖出时迅速提高“立即购买”的价格。
我们提供了一个Pythonnotebook来模拟这个机制的行为,以及一个参考Solidity实现。
机制
销售速度
我们使用指数移动和或EMS来衡量销售速度。
EMS是对指数移动平均线的调整,通常用于量化交易,以衡量某个数量在最近加权时间窗口内的累积。它的计算成本很低,并且需要很少的存储空间。
CRISPEMS特别是用来跟踪最近一段时间内出售的NFT数量,该时间段由销售平均半衰期定义。平均半衰期为100的销售意味着100个区块前的销售只会增加当前EMS的1/2。
区块b中的EMS递归定义为:
其中S_b是一个变量,表示在区块b中发生的销售数量。
给定两个区块b_1和b_2,假设区块之间没有发生销售,我们有
我们可以使用上述公式将目标销售速度转换为一个目标EMS。假设我们的目标是每n个区块进行1次销售,那么目标EMS应该是
然后设定
其中价格上涨速度控制价格对目标价格和观察价格之间差异的反应速度。
在此示例中,我们在200个区块的周期内对CRISP进行建模。我们的目标是每100个区块进行一次销售,并使用700个区块的销售半衰期。在给定的时期内,我们看到每50个区块发生一次购买,这超出了我们的目标。这会在每次购买时将EMS推高,价格也会相应做出反应。
当前EMS低于目标时,销售速度太低。因此,我们希望为下一个NFT收取更少的费用,使其成为更具吸引力的购买方式。
但是,我们希望随着时间的推移缓慢降低价格,因为我们设法以之前的价格达到了目标速度,而且我们不希望降价超过我们必须的水平。
假设最后一笔交易发生在区块b_1的price_{b_1},那么区块b_2的价格由下式给出:
其中价格衰减半衰期控制衰减速度。
因为我们只想在销售速度低于目标时衰减价格,如果当前销售是自销售速度低于目标速度后的第一次销售,我们从低于目标时的区块开始计算衰减,而不是从自上次销售以来的时间。
在此示例中,我们在300个区块的周期内对CRISP进行建模。同样,我们的目标是每100个区块进行一次销售。在给定的时间段内,只有一次购买发生在第200个区块。我们看到当前EMS在前200个区块上缓慢下跌,但价格直到第100个区块左右才开始下跌,此时当前EMS跌破目标。由于购买后,EMS仍然低于目标,价格没有上涨。
https://github.com/FrankieIsLost/CRISP获得。
附录
将目标销售速度转换为目标EMS:证明
假设我们的目标是每第n个区块销售1次。然后,使用公式(1),第k^{th}次销售的区块上的EMS为
这是一个几何级数,收敛于
因此,我们可以在目标销售速度和目标EMS之间进行转换。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。