DeFi 知识库
搜索
K

现货交易 AMM

更新时间:2021.06.24
这篇文章写于2020年11月份,文章中的数据很多地方都已经过时。之所以还放在这里是因为文中关于 AMM 的基本概念,以及关于 AMM 机制的两个关键特点:滑点和无常损失解释的比较清楚。这些基本的概念在现在的市场环境中依然适用,有助于理解关于 AMM 不同项目之间的区别。
在介绍这些项目之前,我们在这里先介绍一下关于 AMM 的基本概念。
在金融领域,风险通常不能消除,只能转移。这一点在DeFi领域也是一样。对于 AMM 协议的 DEX 来说,不同机制的设计其实更多的是在不同参与者(LP 和交易者)的利益之间做权衡。目前的 AMM 协议项目并不能消除风险。Uniswap 的 AMM 机制简洁、优雅,滑点对于 Uniswap 来说本质上是为保护 LP 的利益而损害交易者的体验;而无常损失则是为保护交易者体验而损害 LP 利益。这一点对于 AMM 是天然存在的风险,目前来看市场上的项目并不能消除这些风险,仅仅是做了一些权衡。
在自动做市商(AMM)机制下,做市门槛得以降低,普通用户的参与程度大大提升,因此流动性的聚集也更加容易。但同时,比起订单簿模式的交易平台,高滑点和无常损失等问题则是让AMM受到诟病的方面。随着流动性挖矿引导 AMM 在三季度爆发,行业内开始愈加重视现有AMM的不足之处,新入场AMM将眼光聚焦在了高滑点、无常损失等问题的解决。

什么是滑点和无常损失

滑点和无常损失作为DeFi生态中被广泛提及的概念,为 AMM 用户带去了不少风险。在这两个概念中,滑点是指预期交易价格和实际成交价格之间的差值。滑点并非 AMM 出现后的新概念,而是传统交易市场就存在的一个问题。对于传统订单簿模式的交易所而言,流动性越高,盘口深度越好,滑点则越低。简单来说,卖出资产越多,价格越低;买入资产越多,价格越高。
而无常损失(Impermanent Loss)的概念在 AMM 出现后被首度提出,意指在AMM的运作环境下,流动性提供商(LP)向AMM资金池提供流动性时,因资产外部市场价格波动而产生的损失。无常损失仅在 AMM 模式下存在,在资产价格恢复后可能消失。但在多数情况下,由于资产价格不能恢复到原位,无常损失实际是永恒的(Permanent),也因此被称为差异损失(Divergence Loss)。

滑点

与传统的订单簿形式不同,AMM 采用资金池模式来进行做市。资金池中的资产价格则由函数决定,这意味着 AMM 中交易对的价格和其交易资产在资金池中的储备(Reserve)直接相关。因此,一旦交易发生,导致交易资产在资金池中的储备变化,资产实际的交易执行价便会发生改变,产生滑点。也因此,越是大额的、对资金池的流动性储备破坏越深的交易,滑点也就越高。
AMM 滑点的高低还取决于其采用的机制本身。首先,滑点在恒定总和做市商函数下不存在;即以X和Y代表资金池中两种资产的储备,K 为常数,X+Y=K 时滑点为0(下图中的直线)。然而,该机制将导致资产流动性枯竭,即 X 足够大时 Y 将为0,反之亦然,因此并不在实际应用中被采用。
为防止资金池流动性枯竭,则必须以滑点的方式对交易进行惩罚。以采用恒定乘积做市商制(X*Y=K)的 Uniswap 和混合了恒定总和与恒定乘积做市的 Curve 为例,其函数曲线分别如下图的虚曲线和实曲线所示。已知下图直线时滑点为0,因此当曲线越贴合于直线时滑点越小。Curve 因专注于稳定币和资产价格为1:1的交易对,而使滑点降低成为可能,但同时该机制并不能应用在价格波动剧烈的交易对上,否则低滑点下套利成本低,易导致流动性枯竭。
不同做市函数曲线;来源:Curve白皮书
此外,因 AMM 资金池必须以大量的流动性和闲置资本来确保滑点发生后资产交易价格仍具备竞争力,资金利用率便低成为了 AMM 的另一大问题,并且由于 LP 的收益来源于实际交易资本产生的交易费用,该问题直接影响了 LP 的收益。降低滑点除了能够给交易者带来更好的价格,也能为 LP 带去更多的交易费收益。

无常损失

在最初的定义当中,无常损失仅作为 Uniswap 的风险被检测。在 Uniswap 的机制下,LP 因外部市场资产价格偏离而产生的损失十分典型。具体而言,一方面,由于 Uniswap 的资产定价和资金池储备相关,价格发现在链上完成,不和外部市场价格联通。因此当外部市场资产价格波动时,Uniswap 需要依赖套利者(Arbitrageurs)去修正链上价格,使其和外部市场价格达成一致。
另一方面,LP 在将流动性提供给资金池后,获得资金池的部分所有权,即资金池资产的“股份”。套利者在修正链上价格的过程当中,其获得的利润便是资金池的损失,也因此使得 LP 和被动持有资产相比受到损失。若不计交易手续费和滑点,无常损失的具体发生步骤如下所示:
  1. 1.
    假设 ETH/DAI 资金池拥有 10 个 ETH 和 5,000 个 DAI,内部价格1 ETH = 500 DAI,初始市场价 1 ETH = 500 DAI。资金池内部价格和市场价相等,资金池平衡;
  2. 2.
    假设 LP Alice 为上述资金池提供了 1 ETH / 500 DAI,则 Alice 拥有上述资金池 10% 的“股份”;
  3. 3.
    ETH外部市场价格上升,1 ETH = 700 DAI,而资金池内部价格仍然为 1 ETH = 500 DAI,套利空间产生;
  4. 4.
    套利者 Bob 从资金池以 500 DAI 的价格买走 1 个 ETH,资金池剩余 9 ETH 和 5500 DAI,资金池失衡,ETH 储备减少且资金池内部 ETH 价格上涨,套利空间持续存在,直至 ETH 内部价格涨至 700 DAI(外部市场价格);
  5. 5.
    Alice 想在资金池为 9 ETH / 5500 DAI时撤回资金,Alice 实际撤回的为10% 的 9 ETH / 5500 DAI,即 0.9 ETH / 550 DAI。
  6. 6.
    Alice 此时的资产价值为 0.9*700 + 550 = 1180 DAI; Alice 若被动持有 1 ETH/500 DAI,其资产价值应当为1*700 + 500 = 1200 DAI。作为 LP,Alice 产生了 20 DAI的无常损失。
由上述无常损失的产生逻辑可知,无常损失的大小和资产价格波动程度正相关,并且所有采用资金储备对资产进行定价、依赖套利者调整链上资产价格模式的 AMM 都一定存在无常损失。取决于资产外部价格波动的大小,LP 产生的无常损失可能被交易手续费和流动性挖矿收益补偿。同时,由数学公式推导,无常损失的函数曲线形态如下图所示:
无常损失函数曲线;来源:TokenInsight

其他风险

除滑点和无常损失的风险外,上文分析的资金利用率也是 AMM 被认为不足的方面。此外,当 AMM 资金池要求用户必须抵押超过一种资产,并以交易对资金池“股份”的形式作为 LP 兑现收益的流动性提供凭据时,本身只持有一种资产的 LP 将被迫承担多种资产的风险敞口。
总体而言,根据上述分析,AMM 机制的风险和不足主要有以下方面:
  • 滑点:滑点高,对于大额交易尤其不友好;
  • 资金利用率低:资本闲置程度较高,阻碍LP手续费收益;
  • 无常损失:在资产价格波动,偏离资金池内部资产价格时造成LP损失;
  • 多资产风险敞口:流动性提供者可能被迫承担多资产风险敞口。

问题优化方案

上文分析了 AMM 机制的不足和风险以及产生不足和风险的原因。由上述原因可知,针对滑点和资金利用率的问题,可采取的优化方案包括改变做市函数曲线和采用预言机对交易资产进行喂价。但由于滑点同时能防止资金池内的资本损耗,对资金池内资产的流动性起到保护作用,故贴合 0 滑点的做市曲线仅对资产价格 1:1 的交易对具备良好应用场景。
针对无常损失问题,优化方案同样包括引入预言机喂价,使资金池内的价格和外部市场价格保持一致,不依赖套利者对池内价格进行修正;同时,无常损失以及资产价格波动引起的风险还可通过对冲的方式被管理。而针对多资产风险敞口问题,则可通过给予LP单一资产资金池“股份”的形式,使 LP 仅承担单一风险敞口。
总体而言,有效的优化方案如下:
  • 改变做市函数曲线,缩小交易应用场景,仅提供价格较稳定资产的交易,如包括Curve在内的稳定币交易;
  • 引入预言机,对资金池内部资产进行喂价。此方案被多个项目采用,如Bancor V2、DODO、以及CoFix;
  • 引入风险对冲策略,如CoFix;
  • 允许单一资产的风险敞口,如DODO、Bancor V2。
引入预言机因能对滑点和无常损失有效改善而成为新入场AMM(如DODO、Cofix)以及 AMM 升级(如Bancor V2)提供的解决方案。

预言机引入后依然存在的风险

预言机的引入能够同时改善滑点和因资产价格波动产生的风险,但是,预言机引入后的 AMM 在改善现存问题的同时,是否又带来了新的风险?首先,预言机作为第三方喂价工具,本身就存在一定风险:预言机攻击屡见不鲜,在 DeFi 生态中造成了大量损失。
另外,以 Uniswap 为代表的AMM机制原理看似简单,但设计精巧,存在其成功运转的合理性,整体机制设计上牵一发而动全身,任何针对滑点和无常损失的优化甚至消除往往需要以其它方面的牺牲为代价。
下文以新入场的 AMM DODO 和 CoFix 为代表,对以引入预言机来降低风险、改善不足的 AMM 做具体分析。

DODO

DODO 引入 Chainlink 作为对其交易资产进行喂价的预言机,采用PMM(主动做市商)作为其做市算法。PMM算法即为使用预言机来向资金池交易对喂价,当外部市场价格发生变动时,主动地调整内部交易价格。
首先,DODO 资产交易价格不因资金池资产储备而变化。而是根据预言机的喂价主动调整,故能起到降低滑点的效果,也消除了狭义上因外部价格波动、资金池失衡而产生的无常损失。同时,为平衡因交易导致的资金池储备失衡,DODO 仍然需要允许套利者的存在;如下图所示,以用户卖出 B 为例,当池中 B 储备上升时(图中左侧),DODO 将把 B 的价格调整至低于市价,以鼓励套利者从池中买入 B。因此,该模式需要不断地、快速地、准确地对池内价格进行调整,对预言机的喂价能力十分考验,而一旦无法及时跟踪市价,将无法对资金池有效平衡,造成 LP 损失。
DODO资金池平衡原理;来源:DODO白皮书
TokenInsight 观测了 DODO 的7个交易对资金池,如下图所示,Y 轴的值为1时对应上图中 B 和 Q 的虚线位置;理论上来讲,资金池应保持一侧大于1、一侧小于1的状态。但是,7个资金池中仅 WBTCUSDC 较好地维持了这种状态:
DODO资金池平衡情况;来源:DODO Pool Tracker
同时,DODO 允许单一的风险敞口,即允许 LP 提供单一资产的流动性,并以该资产(而非交易对)流动性“股份”的形式对 LP 分配收益。仍以上图为例,当 B 储备上升时,需牺牲 Q 池 LP 的利益来鼓励套利者买入 B。而两侧资金池都不足1时(多数 DODO 资金池的现状),则代表两侧 LP 都遭受了损失。
此外,DODO 将流动性聚集在市价附近以降低滑点,因此,随着交易额的增大,将出现滑点激增的情况。和 Uniswap 相比,DODO 更适用于小额交易。
总体而言,DODO 的优势和风险可总结如下:
优势
风险和不足
较低的滑点,较高的资金利用率
更加适用于小额交易,大额交易滑点激增
无狭义上的无常损失
对预言机高度依赖,存在预先交易和套利损失风险;资金池失衡风险造成双侧LP的损失,价格波动越频繁的资产风险越高
单一风险敞口
无法消除单侧LP利益损失风险

CoFix

CoFix 在对于传统 AMM 的改进上比 DODO 更加大胆,CoFix 直接取消了算法定价,使用 Nest Protocol 预言机给的外部市场价格来作为交易价格。由于价格由外部市场的资产供需决定,CoFix 称其定价模式属于均衡定价模型(EPM)。
在 CoFix 的模式下,滑点能够被消除。但是,失去了滑点作为资金池流动性的保护,将存在资金池内交易对一侧的资产被消耗完,资金池枯竭的风险。如下图所示,CoFix 总锁仓值持续下降:
CoFix总锁仓值;来源:DeBank
CoFix 应对该问题的方法是引入“冲击成本”,即当单笔交易额足够大时触发冲击成本,提升交易的价格。但触及冲击成本后,提升后的交易价格和正常交易价格差别十分小(相对其它 AMM 而言),因此对资金池流动性的保护作用也有限。
CoFix 滑点差别;来源:CoFix 官网
另一方面,由于资金池内部价格与市场价格保持一致,将不存在无常损失风险,但这并不意味着LP提供流动性没有风险。
CoFix 虽然允许 LP 存入单一资产种类,但 LP 的收益计算仍然基于交易对资金池,即不提供单一资产的风险敞口,LP 仍然需要承担多资产风险敞口。而由于资产价格和资金池内资产储备完全脱钩,价格无法如在 DODO 的模式下一样用来作为平衡储备的调节因素;为保证在单侧资产储备下降时 LP 不致于承担全部损失,CoFix 必须使 LP 承担资金池双侧的风险敞口。双资产风险敞口对于LP而言某种程度上是一种保护。
为优化资产储备变化导致的 LP 风险问题,CoFix 采用风险量化和风险对冲的方式。具体而言,即开发脚本,当资金池资产储备变化大于前设的临界值时,通过在中心化交易所卖出增量资产或买入缩量资产进行对冲。
总体而言,CoFix 的优势和风险可总结如下:
优势
风险和不足
触发交易额临界值前无滑点,且交易额临界值高
缺乏对大额交易的惩罚,存在资金池枯竭的风险
无传统意义上的无常损失
高度依赖预言机,存在预言机攻击风险
提供风险对冲策略
在外部中心化交易所执行对冲,实际效果有待考量

综合对比

基于上述分析,TokenInsight 对 Uniswap V2、DODO、CoFix 和Bancor V2 进行了多维度的总结,并测算了资金利用率、滑点等数据。
和 TokenInsight 分析一致,DODO 在小额交易上价格较佳,在流动性远低于 Uniswap 的情况下,小额交易价格依然优于 Uniswap;资本利用率也较高。CoFix 因没有滑点,有利于交易者,因此交易额表现较好;但同时其锁仓值自上线以来持续下降,交易额远超其锁仓值。Uniswap 虽然在机制设计上受到滑点、无常损失的质疑,但其依然是流动性最好的 DEX,并且由于其流动性充足,实际上滑点问题相对而言并不严重。同时,Bancor V2 虽同样引入了预言机,但并不具备太强的价格优势,因此交易额相对也不高。
从各数据来看,对交易者而言,CoFix 无疑是较好的选择;DODO 小额交易价格较好,同时为 LP 提供单一资产风险敞口的选择。而 Uniswap 流动性高,价格增长曲线较为平滑。
各 DEXes 信息和数据详情如下表所示(数据截止日期为2020年11月24日):
Uniswap
DODO
CoFix
Bancor V2
算法
恒定乘积(CFMM)
主动做市(PMM)
非算法定价(EPM)
混合做市(Hybrid CFMM)
锁仓值(2020/11/24)
1.37B
24.54M
7.26M
80.2M
日交易量(2020/11/24)
143.77M
6.27M
16.23M
1.79M
预言机
Chainlink
Nest Protocol
Chainlink
主要风险
无常损失风险
套利风险
资金池枯竭风险
套利风险
资金利用率(2020/11/24)
10.5%
25.6%
224%
2.2%
单一风险敞口
允许
允许
滑点(以卖出ETH/USDC为例,以1ETH价位为基准计算)(2020/11/24)
1ETH:604.7USDC
1ETH:605.3USDC
不触及冲击成本线时无滑点
1ETH:601.3USDC
滑点(以卖出ETH/USDC为例,以1ETH价位为基准计算)(2020/11/24)
100ETH:604.2USDC(滑点:0.08%)
100ETH:603.6USDC(滑点:0.28%)
不触及冲击成本线时无滑点
100ETH:590USDC(滑点:1.9%)
滑点(以卖出ETH/USDC为例,以1ETH价位为基准计算)(2020/11/24)
10,000ETH:558.2USDC(滑点:7.7%)
10,000ETH:204.9USDC(滑点:66.1%)
不触及冲击成本线时无滑点

参考资料

How to Bring More Capital and Less Risk to Automated Market Maker DEXs:https://blog.chain.link/challenges-in-defi-how-to-bring-more-capital-and-less-risk-to-automated-market-maker-dexs/

项目

😋
Uniswap

😋
SushiSwap

😋
Balancer

😋
1inch

😋
Curve

😋
Bancor

😋
DODO

😋
Serum (Solana)

😋
Raydium (Solana)

😋
Pancakeswap (BSC)