在去中心化金融(DeFi) 的世界中,去中心化交易所(DEX) 为最重要且最核心的一环。
其中最具代表性的为Uniswap,以一行简洁且优美的数学式作为模型核心,建构出一个全自动的交易市场。
Balancer则可看作广义的Uniswap,赋予Uniswap更大的弹性,让任何人都能在以太坊上打造自己专属的资产配置组合,且还具备自动再平衡的功能!
相对的,Balancer 的数学模型会复杂些,但本质与Uniswap 无太大的差异。
本篇文将从Uniswap 出发,用图解搭配四则运算介绍交易如何发生,再以简化的方式将其推广至Balancer 的做市机制。
Uniswap恒定乘积做市商模型简介
一切从这行简单的公式出发:(以ALT/USD pair 为例)
在没人增加或移除流动性的前提下,池中两边代币总量的乘积为常数
然而上面那句话的叙述其实是错误的,每次只要有人进行交易贡献手续费,k值就随之改变,但改变的幅度极小,因此,为简化讨论以下的计算都先暂时忽略手续费的影响。
交易如何发生?
任何交易的发生都离不开上面那条等式,假设预期买入Δx 个ALT,那会需要花费多少个USD?
买入及卖出会改变池内tokens 的数量
买入ALT 会让池中ALT 的数量减少;付出USD 会让池中的USD 数量增加。
无论如何改变x 或y,池内tokens 数量必须满足前述等式,将其画成图如下,蓝线为双曲线的一支。
在蓝线的限制条件下,给定Δx 就自动决定Δy,反之亦然
所以只要有交易发生,该点就会在蓝线上移动。
成交价格如何决定?
有了Δx 及Δy 后就能算出此笔交易的成交价格:
单位:USD/ALT
例如:買 50 ALT (Δx) 花了 100 USD (Δy),成交價格就是 100/50 = 2 USD/ALT
由图可观察出,成交价格即为两点相连之直线斜率(取绝对值)。
不同买入量对成交价格的影响
不同的买入量Δx会对应不同的Δy,而产生不一样的价格。
一次买入越多,成交价格就越高(斜线越斜),此即为滑价的成因。
BlackHoleSwap以及Curve皆以神奇的数学或DeFi乐高的堆叠很巧妙的减少了稳定币互换的滑价问题。
现价(Spot Price) 及总资产价值
所谓交易深度夠好,不容易滑價,在DEX中代表流動性佳,正常人一次交易不會改變價格太多,以数学来表示即为Δx << x & Δy << y。所以在Uniswap中我们指的現價就是Δx 非常小時的成交價。
看起来可能有点像是废话,但证明会需用到微分(略)
所以我们只要知道池内USD及ALT的数量就能算出现价,有了现价就可以算出池内总资产:
简单证明了在Uniswap 的流动池中,两种资产永远会保持1:1 ,各占50%。
由上可知,在此类自动做市商模型中,价格是在交易中产生,这点跟挂单搓合式交易有极大的差别。
以台股为例,若市场预期大好,开盘即涨停(+10%),则唯一能成交的价格就只有涨停价。卖方能一次获得10% 的利润,不会有任何中间的价格成交。
但在Uniswap 中,兼身买方及卖方的流动性提供者会被方程式所限制,必须沿着线一路往上卖,此时无法将利润最大化。但相反来说,若市场大跌也会一路向下买,不用直接面对-10% 的卖单。
Balancer 简介
Balancer 的数学模型看似复杂,但其实能看作一个广义(Generalized) 的Uniswap,只需经过几个步骤的简化就能更直观地去理解其运作的机制。
做市模型
此为Balancer 白皮书的定义:t 为tokens 的种类数;V 为常数:W 为权重,其总和为 1
先将其改写为较为亲民长相,这里先假设这个池子内只有3种资产(即t = 3)
x, y, z 分别为三种资产在池内的数量,k 为常数
次方上的权重W即为该资产在池子内的比例,其总和为1 (100%)。
若将其设为1/3、1/3、1/3,则可再简化方程式:
有没有发现长得越来越像Uniswap!由于k 跟k’ 都为常数,后面所有常数都统一以k 来表示
池中有三种资产,这样怎么交易?
Ans: 先把其中一種遮起來,留下要交易的那兩種即可。
所谓交易就是拿A币换B币。
假设x、y、z分别为ALT、USD、SHIT三种的数量,若我今天打算用USD买入ALT,那整个过程其实跟SHIT的数量没有关系,因此可以将z当成常数合并到k之中,如此一来方程式就变得跟Uniswap完全一样了!
Balancer = Uniswap QED (?
改以图像再次说明这件事情:
三维曲面为函数xyz = k所绘制的图形,绿色为z = const.的平面,两者相交即为双曲线(的一支)
将z 视为常数之后,剩下由x 和y 两个自由度所构成的二维曲线与前述之Uniswap 数学模型完全相同。
可以说Balancer 内其实藏着Uniswap!
再更复杂些:加入更多币种,任意调整权重
实际上Balancer 的运作可以更复杂,例如Hakaa Finance 的流动性挖矿Pool 2,用的就是2% HAKKA + 4% DAI + 4% USDC + 90% BHSc$ 这个配置。
但从前面的说明可以了解到,无论池内有几种币,在做价格计算时仅会用到2 种,其他皆可看作常数。
这边以20/60/10/10 比例的ALT/USD/SHIT1/SHIT2 池来进一步的说明:
若每个币种的配置比例不均等的话,那无法将方程式化简成Uniswap 的形式,会多出一个次方项。
此时可再多做一次转换,重新定义变数,再次化简方程式:
重新定义变数
将y 的3 次方重新定义成Y 之后,最熟悉的Uniswap 又出现了!
这时就能回头套用最初Uniswap 的图:
经过座标转换后,Balancer 跟Uniswap 的数学式相同
接着就能按照前述定义计算成交价:
注:计算价格是以实际付出的token数量去计算,因此分子是Δy而非ΔY
资产配置比例如何影响价格?
有了上述概念后,接着将权重的数字以符号替代,重新再整理一次:
两个币种权重的比值决定价格变化的程度
比较Balancer 与Uniswap 的成交价公式(下式设Uniswap 的y = Y 以便比较)
由上比较可看出,在成交价的计算中Uniswap与Balancer的形式基本相同,唯一的区别只在次方项,且该数值由权重决定。
现价(Spot Price) 及总资产价值
如前所述,知道成交价的计算方式后,只要让Δx << x(即Δx 0)即可求得现价:
将y 对x 做一次微分就能得到现价。单位:USD/ALT
有了现价就能计算出池内各个币种的价值:
池中ALT 的资产价值(单位:USD)
池中总资产价值(单位:USD)
以上计算可证明个别资产 = 总资产 × 权重这个基本的事实。
Aave宣布启动AMM市场,为DeFi带来更多流动性
去中心化借贷协议Aave 于昨日宣布启动AMM(自动化做市商)市场,支持两大AMM 平台的部分LP 代币作为借款抵押品。 启动AMM 市场 由于LP 代币的风险与单一资产相比更高,因此,AMM 市场的
代表无论池内资产数量如何变化,每个币种的价值都会维持在最初设定的比例。
在Balancer 中打造自己专属的资产配置!
如前所述, Balancer内部的每种资产会固定于初始设定的比例,我想这也是为什么要叫做“Balancer”的原因。
因此我们可以利用此性质,在Balancer 中打造自己专属,且全自动的投资组合!
假设举例来说:
我希望自己Crypto的资产配置能固定为10% DAI + 45% PERP + 45% HAKKA
狀況 1:单纯持有现货,将其放于钱包/交易所
当其中一个币种的价格产生了变化,整体的比例就会失衡,需自行在三个币种之间买卖以调整比例,此动作称为再平衡。
要想一直维持比例必须频繁的执行,且还须精算每个币种要买卖的数量,既麻烦又花时间,还要花额外的手续费。
狀況 2:利用 Balancer 打造自己专属的流动池
若想将上述的流程自动化,则可直接在Balancer 上增加自己专属的流动池,操作介面如下图:
若将锁解开则能任意输入想存入的数量,这代表着自行对池内资产定价。一旦与池外有价差则可能会有机器人大军前来进行套利以平衡价格,将会白白损失部分资产。
建好池后,当其中任一种币的价格产生变化,就会有人前来套利以平衡价格,相当于有人替我执行了再平衡的操作,如此不仅不需花手续费,还会有手续费的收入(Swap fee)。
備註:
Balancer 的router 会自动在现有的池中挑选价格最好的交易,所以套利者不需逐池检查最优价格在哪。
值得特别注意的是,以上说明必须在资金量体足够大时才能被妥善执行,因为要是流动池太浅,会非常容易滑价,滑价代表价格差,则router就会优先让其他深度好的池先被交易,此状况在比例不均的池尤其严重(此点将于下节分析)。
深度不足解决方式有二:
- 多准备一些钱,让流动池变深。
- 让别人加入你的池(Shared Pool),或找现成的池去去增加流动性(那当然就会是跟着对方配置的比例)。
Build Your Own ETFs
「固定资产比例+再平衡」即为市面上大部分ETF 的运作模式。
所以其实任何人都可以很容易用Balancer发行自己专属且指數成分自定義的ETF,LP token即为该ETF的token。
此基金不仅不会有内扣的管理费用,且还会有额外的手续费收入!
(因为不需主动执行再平衡,会有套利者送钱来帮你做。)
滑价(Slippage) 分析
当有人建立了流动池后,任何人就能对其进行交易(Swap),而身为交易者最关心的就是价格。
本节将简单探讨池子的权重如何影响交易深度。
先来个小测验:
假设有三种Balancer Pool,Liquidity都是100M (USD + HAKKA)权重分别为:
(1) 20/80
(2) 50/50
(3) 80/20試問:假設我手上有 10M 的 USD 要入場買 HAKKA,哪個比例的池滑價會最小?
答案:(2)50/50 -溢价20% 其他两个分别为:(1) 20/80 -溢价29.67% (3) 80/20 -溢价33.08%
在这类Uniswap-like的DEX中,只要任一边的资产数量被大幅度改变,就会对价格造成严重影响。
10M USD入场购买HAKKA ,在20/80池中相当于一次增加池內 50% 的 USD 總量;在80/20池中则等同于于一次買走池內 37.57% 的 HAKKA。所以50/50会是对两边影响皆最小的比例*,因而滑点最小。
此为10M USD 入场买HAKKA 时的滑点图。横坐标为USD 的权重
由图可观察出,比例越极端,滑点越高,这也是为什么当初DAI/YFI的98:2池开挖之后YFI会暴涨的主要原因之一,那时很多人在没研究透彻的情况下直接single-sided add liquidity,或什至直接在Balancer买入YFI,从上图可以看出这种买法会疯狂的拉抬币价,使YFI疯狂的翻倍。
注* 其实理论上滑价最小的比例非刚好50/50,而是会略小于50% (USD)。有兴趣了解计算细节的可以找我讨论!
提醒:
实际交易时,滑点的大小在Balancer 中会以“Price Slippage” 来表示,在Uniswap 中则是写“Price Impact”。
但若以不同的单位(USD/HAKKA或HAKKA/USD)去计算滑价会得到不一样的数值,所以建议在交易时不要看Uniswap或Balancer上Slippage的数字,请直接看它预估的成交价格。
损益(Profit and Loss) 及无常损失(Impermanent Loss) 分析
无常损失不等于币价下跌后总资产的亏损。
假设一个状况:
我看好HAKKA 将来会涨,所以想买入持有,且手上有一笔能拿来投资的资金1,000 USDC
依据个人风险承受能力的不同,每个人的做法会不同。
可能出现的状况如下:
- 100% 梭哈买入,承担所有大起大落的波动风险。
- 98% 近乎梭哈买入,仅保留2% 现金。
- 80% 部分买入,稍微降低些波动风险。
- 50% 一半买入,预留一半现金,保守投资。
此时手上会有部分HAKKA及部分USDC,这时除了单纯握着现货之外,还能选择将所有资产都投入流动池,池内总资产变化如下图:
在Balancer 中,各种比例的流动池内的总资产变化。
显而易见的,一次买入越多HAKKA,资产变化得越剧烈。
若有预留现金,虽然涨的时候会少赚些,但跌时也会少赔点。
一但投入流动池之后任何人都能前来交易,好处是能获得手续费,但坏处是会有Impemanent Loss,相较于不进池,可能会有额外的损失。
>
相较于拿着现货,进池后因价格发生变化而产生的额外损失
50/50 的池会有最大的无常损失,价格变化越多,额外损失越大。
但对于流动性提供者而言,只要交易手续费的收入大于无常损失,那就会比在池外的HODLers 有更高的收益。
所以到底要用什么比例啦!
先简单整理一下以上资讯,以两个极端来举例:
50/50
基本上是最不易滑价格的比例,能提供最稳定的交易,这也是为什么Uniswap使用起来很香的原因,能有最大的交易量及最多的手续费收入,但是会有最大的无常损失。
98/2
几乎没有无常损失,但此交易对非常容易滑价,价格十分不稳定,无法吸引人前来交易,因此交易量势必较小,手续费也因此较少。
这是天秤的两端,需要在两者中做取舍:
无常损失越大,滑价越小;
无常损失越小,滑价越大。
流动性的增加对于一个项目的发展来说是很重要的,好的交易深度能让更多人参与二级市场,因此出现了各种奖励机制吸引大家主动增加流动性。
80/20是个折衷的选项,有不太大的无常损失,同时也具有不错的价格稳定性,此即为Perpetual Protocol选择此以比例作为奖励池的原因。另一方面还能降低投资者的风险,不用梭哈PERP,手中能保有一些现金,降低整体资产的波动率,面面俱到,两全其美。
结论
个人认为Uniswap 及Balancer 等AMMs 的出现是去中心化世界的一大里程碑,能以一条简单的方程式建构出一个全自动且完整的交易系统,再搭配奖励机制(如UNI 或BAL)吸引更多人投入,以正向的循环让整个生态更加完善(两天就破的各种Yield Farming 圈钱泡沫不在此列)。若有兴趣参与这个市场,除了关注商业模式外,多了解运作原理也能避免自己不小心落入陷阱——至少要知道自己如何归零的。
后记
最初是希望能以较直观的方式去解释Balancer的运作原理,再搭配数学一步一步从最基本的关系式,往下推导出后面所有的结果,但实际动笔后发现做不到⋯⋯全部列出来内容会太繁杂,且Medium不支援LaTeX实在很难排版方程式,更重要的是,应该没人想看。所以后半段都只呈现图表及结果,省略了计算过程及数学式,对过程真有兴趣的欢迎找我讨论,有发现任何错误的还不吝告知!
(但其实只要有前半段的数学基础,再搭配一些四则运算就能推出后面所有结果了,有兴趣的可以试试看!)
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
以太坊现在最热门的Dapp有哪些?
根据State of the DApps的数据,目前有超过3000个DApps即去中心化应用活跃在Ethereum区块链上。虽然DeFi类以约375个DApps而广受欢迎,但Gaming和Gambling排名更高,分别拥有约535和416个DApps。 正如我