更新时间:2021-09-12 10:39:01点击:65
本文首先介绍了由Bancor、uniswap、balancer和curve协议实现的四种自动交易商(AMM )算法。 同时讨论AMM算法的最新发展、可能的改进和未来。
Bancor Network的联合曲线概念和交易式:
Bancor利用联合曲线的概念决定价格。 联结曲线是代币价格与其总供给量的关系。
Bancor协议通过智能合约为加密令牌提供持续的流动性
359存储. Googleapis.com/website-bancor/2018/04/01ba 8253-bancor _协议_ white paper _ en.pdf
联合曲线连接曲线:
合并曲线模型可以理解为描述“代币买卖价格”和“代币发行总量”之间的函数关系,智能合约是分布式自动执行的。
359 medium.com/linum-labs/intro-bonding-curves -和- shapes-BF 326 BC4e 11 a
Bancor网络选择的不变量为f,称为连接权。 在第一个表达式中,r表示流动性池中存储的令牌的数量,s表示流动性池外的BNT总供给量,p表示BNT和存储的令牌的相对价格。 我们可以代入p的方程式,对两边进行积分,得到p和s的关系。 这是指数公式,指数与连接权重f相关。 f在0和1之间。 f越小越大,意味着价格相对于BNT的总供给量变化越快。
两边积分
用于看板系统的公式
359驱动器.谷歌.com /文件/d/0 B3惠普- GDN7Ark VAV 3d KV L9 NS 2M /视图? 资源密钥=0- mbi网格0 B9 H8 DPNRAEB _ uta
使用这个公式和简单的点可以导出t (购买的BNT令牌)和e )支付的备用令牌)的关系。 其中,R0和S0是r和s的当前值。
如果想在令牌a和令牌b之间交换,则将令牌a卖给令牌b。 必须首先使用令牌a从池a中购买BNT令牌(注意:如果没有BNT令牌)。 然后,需要使用BNT从池b中购买令牌b。 以下是计算接受多少令牌所需的准确公式。 令牌a和令牌b之间的相对价格可以表示为BNT令牌和令牌a/B之间的相对价格。
好处: Bancor可以向某个游泳池单方面注入流动性。 这由Bancor治理决定,单方面流动性能保存多少是有限的。 这也取决于Bancor治理。 在限额内,用户作为其他代币存入单边流动性时,Bancor将补充同等的BNT代币。 这将使用户提供的高效移动性增加一倍。 在达到限额的情况下,人们要存款单边流动性,就必须等待提取单边流动性的人,或者将BNT用作单边流动性注入的人。
Bancor协议补偿在BNT中寄存单边流动性所获得的佣金(后述)的非永久性损失。 如果交易成本不能完全补偿非永久性损失,Bancor将铸造BNT以保证非永久性损失为零。 因此,流动性提供者只要将其流动性存入一定期限(100天后可以全额补偿),就可以享受稳定的收入。
优点:如上所述,所有交易都需要BNT令牌作为中介。 为此,我们将经历两个滑动点。 出于同样的理由,所有流动性池都由BNT和其他令牌构成,因此缺乏多样性。 BNT令牌的价格也可能受到影响。 因为实现非永久性损失补偿和单边流动性存款需要灵活的供给。
Bancor引入连接令牌BNT的概念,连接所有具有不同连接权重的令牌,对应决定价格的不同连接曲线。
Uniswap的无常损失计算:
Uniswap使用固定产品进行市售(CPMM )并决定价格。 在详细研究uniswap V2和V3中使用的算法之前,让我们先了解一下什么是无常损失(IL ),以及如何计算它。
固定产品制造商(CPMM ) ) )。
固定产品推向市场
两个资产储备的乘积必须总是恒定的x*y=K。 这是强制性的
359以太网. ch/t /预配-前端运行-保留- x-y-k -市场/1281
无常损失
无常损失是指流动性池的资金损失。
359财务.com/impermanent -损耗-展开/
AMM函数为凸函数(注:价格随买入上涨/卖出下跌)时,没有交易成本补偿的单一交易总是会导致流动性提供者的损失。 假设AMM函数通过事务从点1移动到点2。 第1点和第2点(函数导数的绝对值)的现货价格为P1和P2。 P3是实际的交易价格。 在凸函数的性质上,P1; P3; P2 .非永久损失定义为交易后池中流动性提供者令牌的现值与流动性提供者令牌的现值之间的差额。 如果他只有令牌而不使用令牌提供流动性,则会显示为v和vheld。 为了方便起见,无常损失和价格用令牌y表示(以1令牌y的价格为单位1 )。 通过几个简单的导出,很容易证明非永久损失总是小于零(x2 x1,P2 P3 )。
UniswapV2使用简单而强大的表达式来确定事务。 池中令牌保持的数量的乘积是常数。 与Bancor相比,摆脱了连接令牌的依赖性。 交易完全由流动性池内的代币数量决定。
倪交换
uni交换v2核心
3359 uni交换. org /白皮书. pdf
由于该函数的性质,池中的两个令牌的价值始终相同。 本文使用的价格总是相对价格。
如果使用相同的逻辑,则不容易计算uniswap v2中各个非手续费的非永久损失。 假设交易将价格从p变更为PK。 以百分比测量的非永久损失可以单独表示为k的函数。
不足为奇,但这个函数总是在零以下。 从上面的非成本非永久损失图可以看出。 如果水平轴是用对数空间绘制的,则il(k )是对称的。 结论是,相对价格波动越大,短期损失越大。 这可以通过流动性提供者更有价值的代币从游泳池购买,留下更多价值更低的代币来说明。
价格波动在2之间时的正利润:
接下来,我们来看看如果增加交易费用,il(k )会怎么样。
导出的非永久损失函数il(k,)将不计成本的非永久损失函数设定为零进行合理性验证,似乎可以得到相同的结果。 典型的uniswap V2费用的百分比为=0.3%。 如果绘制无常损失函数,则可知约在k=0.994到1 (约2Span )之间。 在该地区,非永久性损失为正意味着流动性提供者实际上获得了价值(在该地区获得的交易费优于损失)。 通过引入交易费用,当价格在一定范围内波动时,流动性提供者将获得正收益。
价格变化更不稳定时,流动性提供者似乎总是吃亏。 但是,事实并非如此。 我知道Dave white4和其他人解决了这个问题。 很遗憾,这超出了这个介绍文件的范围。 我们打算将来进一步研究这个问题。
德怀特4
国家交换基金组织
359 research.paradigm.XYZ/uni交换-关系
关于导出其他热门的AMM算法(包括uniswap V3 )的无常损失,建议Xu Jiahua的这篇论文的这些导出为下一个主题。
贾华墟
sok :集中式交换(dex ) withautomatedmarketmaker (AMM )协议
https://arxiv.org/abs/2103.12732
好处:第一种方法使用池中令牌数的凸函数来确定价格。
优点:流动性供给在所有价格区间均匀分布意味着资本效率低。
流动性分布、流动性注入、Uniswap V3范围订单:
在uniswap V3中,用户只能在特定的价格范围内提供流动性,以提高流动性的效用,降低波动性损失的风险。
倪交换
uni交换v3核心
359 uni交换. org /白皮书- v3.pdf
来自Uniswap V3白皮书
这是通过转换uniswap V2的功能实现的。
来自Uniswap V3白皮书
如上图和等式所示,将函数移动到a点的y值,向左移动到b点的x值,以确保a和b之间的有效交易结果。 这与使用绿色曲线作为价格决定函数的情况相同。 如果价格超出这个范围,任何一种代币存量都会被出售,流动性会有效地集中在那个价格范围内。
罗宾逊(注: paradim风险投资研究员总监)发表了多篇关于AMM流动性分布计算的优秀论文。
丹罗宾逊
uni swap v 3:通用AMM
359 www.paradigm.XYZ/2021/06/uni swap-V3-the -通用- AMM /
也可以简单证明在同一价位上两个流动性提供者的流动性可以轻松相加。
如上所述,在存储流动性时,uniswap V3中每项资产的价值不一定相等。 各资产的价值只有在p等于PA和Pb的几何平均值时才相等。 如果p小于几何平均值,则资产x的值大于资产y的值。 如果p大于几何平均值,则资产x的值小于资产y的值。
如果当前价格完全超出流动性提供商设定的价格范围,则uniswap V3将流动性提供商的输入计算为范围订单,并只允许存储一个令牌。 类型取决于价格范围是完全超过还是低于当前价格。 例如,考虑由ETS和装置构成的流动性池。 如果设定的价格范围完全高于eth的当前价格,则用户只允许向eth收款。 如果价格范围完全低于eth的当前价格,则只允许用户到Dai收款。 如果价格完全超出流动性提供者设定的价格范围,他存款的所有资产将转换为另一个代币。 由于用户只能存入一个代币,所以范围订单只能实现以往限价订单(利润订单和购买限价订单)的四分之二。 另一方面,无法实现止损订单和止损订单的购买。 到目前为止,我不知道限制作用域顺序令牌类型的目的是什么。
范围订单
范围顺序
本质上不是真正的订单,而是LP提供给资金池某个特定价格点的聚合流动性。 虽然不是真正的订单,但“范围订单”所表现出的特性很好地模拟了限价列表的基本功能。
359 docs.uni swap.org /协议/概念/v3 -概览/范围-订单
好处: uniswap V3引入了流动性分配的概念,允许用户在价格范围内保存流动性。 通过集中流动性来提高资本效率。 保管相同价值的资产,可以得到高流动性和低折动点。 在一定的价格范围内提供流动性也在一定程度上降低了非永久性损失的风险。
缺点:用户在范围订购时只能存储特定类型的令牌。 因此,不能购买止损订单和止损订单。
Uniswap V2和V3在AMM算法中引入了CPMM和流动性分配。 在价格范围内提供流动性基本上可以将uniswap V3作为通用AMM,通过改变其流动性分布可以作为可能的AMM。
Balancer的市函数和交易式:
Balancer将uniswap V2的双令牌池扩展到了多令牌池。 Balancer池中每项资产的值都有一定的权重,合计为1。 要证明各资产储量的幂积是常数并不容易。 资产n相对于资产t的价格也可以导出为资产t和n储量的比率,该比率通过其权重进行标准化。
平衡器
非定制端口管理器,优先级提供程序,价格传感器
3359平衡器. fi /白皮书. pdf
根据常数不变量,可以导出具有不同输入值的交易公式(资产o和资产I之间的交易)。 按照这个符号标准,资产o总是购买的资产。 资产I是出售的资产。 a和b是输入输出的令牌数和当前的令牌预约。 也可以根据价格的变化计算输入或购买的令牌的数量。
智能排序(sor )算法:
Balancer还引入了智能路由(sor )算法。
sor
智能订单路由器v2
359文档.平衡器. fi /开发人员/智能订单路由器
资料来源: https://docs.balancer.fi/v/v1 /智能合同/Sor /
该算法的整体思路是将一个订单分成几个小块,在不同的Balancer池进行交易,从而获得更好的交易结果。 假设您想在令牌池1和令牌池2进行交易。 如果交易总额n低于上图中的a,则只在令牌池1中进行交易。 这是因为托业的价格en池1总是优于令牌池2。 如果总额超过a,则在令牌池1中交易几个订单,在令牌池2中交易几个订单。 每个令牌池中的事务处理数等于每个池中的价格(B C=n )。
最佳战略可以很容易地证明,总是使各游泳池的价格相同。 如果价格不一样,总能找到更好的游泳池来改善交易结果。
对交易量的价格函数通常是非线性函数。 Balancer将价格函数简化为线性函数。 如果有n个令牌池,最佳策略可以表示如下:
如果剩余价格函数的价格函数总是大于或小于范围(0,n ),则必须从上述计算中删除价格函数及其对应的池,以验证结果是否有效。 如果价格函数总是很小,则更换池中的所有令牌显然是最好的方法。
在这个计算中,没有考虑天然气的成本。 事实上,最好的战略是在收益和天然气成本损失之间保持平衡。
相信SOR算法可以在更广泛的背景下使用。 例如,价格函数可以是其他AMM协议池的函数。 由于现有知识的限制,实际的AMM聚合器是否使用相同的逻辑实现了更好的价格还不清楚。 下面将介绍价格函数不近似的更常见的解决方案n。
好处: balancer将两个令牌池扩展到多个令牌池,并引入sor算法,为用户提供更好的价格。
优点:“流动性池的强度依赖于最弱的资产。 ’池中的令牌种类越多,风险就越高。
Balancer是一种多令牌组合管理工具,可以灵活分配令牌价值,并具有价格优化算法。