# 解读Dex中的无常损失:原理,机制,公式推导 

By [shisi.eth](https://paragraph.com/@shisi-eth) · 2023-01-20

---

本文源于十四正在撰写的《UniSwap 从V1到V3的去中心化交易所之路》中用作资料援引，也发现市面文章的推导公式都颇为复杂，且重要逻辑转换缺乏描述，而无常损失又是 Dex 中 AMM 的重要部分，故单独成文。

如读者对无常损失以及对应影响有兴趣的，**亦可直接跳转文末阅读白话版本**

本文推导基于 AMM 经典恒积公式

![](https://storage.googleapis.com/papyrus_images/402ad26403639c9b1cf6788f6a6d2be534feb4d05880800ede04cd4a0fe7a21f.png)

AMM 机制简介可阅读：[一文讲清-NFT市场新秀 SudoSwap 的 AMM 机制-创新挑战与局限](https://mp.weixin.qq.com/s?__biz=MzIyMTQ5MTg5Mw==&mid=2247483943&idx=1&sn=fe2caeb811f3aa5adfe9dc5a3a6d3367&chksm=e83aa5fddf4d2ceb6dd5c978aa209fd36f4ac2917718aaa094016292f9ec038b2c733547936b&scene=21#wechat_redirect)

部分公式中虚线系公式编辑器误操作，无实际意义

如需 word 源文档可在公众号后台**回复“无常损失”获取**

Part 1: 计算初始持有价值
----------------

假定我持有若干 e 0(ETH) 以及若干 t 0(Token)，初始两者价值相等，如 1 e 0 = 10 t 0 ，用公式表达其 token 的价格（用 ETH 本位计）则 p 0 为:

![](https://storage.googleapis.com/papyrus_images/d49f4270b581a6350553ea58f1945210064d7209fdcb53f04eb6b70aef2946e5.png)

则我持有的总价值（用 ETH 计）等于数量\*价格为:

![](https://storage.googleapis.com/papyrus_images/ee63ff98df3dee04304876ce1e760d5ab93f100fe0d5dcb61bc68ae9a6f750a6.png)

如果未进行Uniswap注入 Lp 的行为，则未来即使 token 对比 Eth 的价值变动，产生了新的价格，则我介时的资产总值 VH 为:

![](https://storage.googleapis.com/papyrus_images/ba844b6f1fe9c9041e2bcc93f20fb6e8bdc4154a546e07a3c6b123a203670a26.png)

Part 2 ：为 UniSwap 注入流动性
-----------------------

我们可以将 ETH 和代币两者按一定比例注入流动性，这里方便计算假定为按总值各占 50% 的注入，流动性池会给我们 Lp 的凭证，如 10 个 LpToken 用于证明我们占据当前总流动性的分红权益股份。由于恒积公式，只有注入和抽离 LP 会改变 K 值（本文中均不算手续费收入）

![](https://storage.googleapis.com/papyrus_images/821cba8bfe798c052aac276df5baa56a652a43a259ad71b6bba195740b8f3527.png)

所以可以推导出计算当前 e 1 的数量公式：

![](https://storage.googleapis.com/papyrus_images/9301006b786d73b22d1ad2ded2c9af740964f4cefdff374c41a0ae601121d392.png)

最终

![](https://storage.googleapis.com/papyrus_images/a3b69bcd5a3d3a065695622a8b6578dd7b409c8fdf3b1d894a5d099bab56d952.png)

如此综合计算我们可以提取的流动性价值 VU 是

![](https://storage.googleapis.com/papyrus_images/485db4655ad624f1f1548450d4893b2424177ad49eb35c647a132ba68491cdc9.png)

此处得出 VU 的将构成后续无常损失部分的被减数，因此特地为 VU 推导了上诉的两个采用 e 1 以及不采用 e 1 的公式

Part 3 ：无常损失公式推导
----------------

依据 Part 1 我们得出了保持持有当前 token 的价值 VH，

依据 Part 2 我们得出了不用持有而是投入 Uniswap 做 LP 的总价值 VU，

显而易见：Divergence loss（无常损失或者发散损失）应该是 VD

![](https://storage.googleapis.com/papyrus_images/3ee73c51419cebb79c2fd8085d5a67b18a4b41a8f6ce293747a0313e5d39cadd.png)

由于价值涨跌应该依据其对于原始价值的比值，所以我们把等式两边都除以 VH

![](https://storage.googleapis.com/papyrus_images/ece2ce53e6e2d10466d42ab9b5abb08611a004ae79c0aeb903a89d7d833b0a1f.png)

此处带入上文 Part 1 和 2 结论中的 VH 与 VU 详细公式

![](https://storage.googleapis.com/papyrus_images/b6a80941648c1be8380f029f8de6ec7d380c9eab3486ffe8f5ea6dfa36704b06.png)

所以无常损失率 VD/VH 为：

![](https://storage.googleapis.com/papyrus_images/951a1bfd44a8143f6e15fcb8c73c53511049f376d6a0928671dab27a39b5e7ea.png)

这时最关键的一步，**无常损失发生在有价格差的两个时间段上**，所以我们来带入价格的变化率 R，其等于两个时间的价格相除

![](https://storage.googleapis.com/papyrus_images/9f7a4c21d560982df60b9c2a4c938e77e7d3c3826eb738f67a290d0413f4146a.png)

结合 Part 1 中的公式

![](https://storage.googleapis.com/papyrus_images/efb70f7a61485088d5086fdadb93181b64d222320c28846e38bbefdbac8c0fde.png)

所以 R 也等于

![](https://storage.googleapis.com/papyrus_images/0314f2b9bc80fd35a65bd1b2116e03f1866c4d3f702e7dcea58af7b57ad661bf.png)

结合无常损失率 VD/VH 我们将核心部分都乘以 e 0 来形成只有 R 的最终公式

![](https://storage.googleapis.com/papyrus_images/6e899ed1d4bf94f06b0ead075f3956c90094c2d6d5e08920fdc31db779fe0ae1.png)

这样则可以化简出只有 R 来表示的无常损失率

![](https://storage.googleapis.com/papyrus_images/22fd08eaf629f289ab66ed9a60d6b4f77ef5c24eda6cdd1c5517004b626567ba.png)

由于最终无常损失率值和 R 值有关系，则也意味着只要 R 有变动，无论增加还是减少，都将产生无常损失，并且按倍数衡量是一个对等的数值

Part 4 图表化无常损失公式
----------------

我们可以通过绘图工具来呈现这个公式的结果，虽然下图看似是一个非对称的曲线，但实际上是对称的，因为他是一个相对的倍率，即对于原价值的 1 ETH= 100 Dai 而言，跌到 1 ETH= 50 Dai 是下跌 1 倍，等于涨到 1 ETH= 200 Dai 则是上涨 1 倍，其无常损失是相同的均为 5.72%

![](https://storage.googleapis.com/papyrus_images/2b671f9e6a40ed74796cc6ef02dc61b897d7a15fb0a307fb3e731df448dce52c.png)

![](https://storage.googleapis.com/papyrus_images/efa09655005ef0dfa51f6cd2bc83f6d95f2332f1eb26d98bfb8fd81a635b948f.png)

### 如何理解无常损失？

*   **无常是什么意思？**
    

首先他是命名不恰当，之前选择“无常”（ impermanent loss）这个词是因为如果价格背离被逆转，那么由于价格背离造成的损失也会被逆转，后来更多的文章会采用（divergence loss）来描述他。

*   **无常损失在何时发生？**
    

如果价格回到与流动性提供者增加流动性时相同的价值，这种损失就会消失。这种损失只有在流动性提供者撤回其流动性时才会实现，并且是基于存款和取款之间的价格差异

*   **无常损失会超过导致 LP 入不敷出吗？**
    

流动性提供者的实际回报，其实是价格差异造成的背离损失与交易所交易的累计费用之间的平衡。

![](https://storage.googleapis.com/papyrus_images/1eec78267100a1ea31f2bff946806b880990a3ac4f1fd905106f7842e0723690.png)

如上图，该账户自成为 LP 以来，与仅持有原始资金相比，该账户一直处于净负头寸（黄线）。这是由于在此期间 ETH 价格变动（绿线）造成的巨大背离损失（蓝线）。然而，自始至终总费用一直在稳步累积（红线）。随着 ETH 价格接近提供流动性的价格，大部分损失会被扭转。

*   **无常损失究竟来源何处？**
    

向市场提供流动性做 LP，即成为做市商，实际上是和市场中的用户做对手盘。而 AMM（自动化做市商）是被动的和市场中的用户做对手盘，即当市场中大部分人看好 ETH 的后续市场，则会用 DAI 买入 ETH，你的流动性池子会被动的增加 DAI 而减少 ETH。

所以，提供流动性就代表了总是和市场做反向的操作，总是倾向去持有更多的弱势资产（当 ETH 上涨为强势资产，DAI 就是弱势资产）。于是当 ETH 上涨，你的流动性会不断提前抛出 ETH，而拿到更多的 DAI，这些被提前抛出的 ETH 就成了无常损失的来源，即这个时候无常损失可以理解为你在 ETH 上的踏空损失，或者是被外部套利者拿走了池内的价值。

相关资料 [https://uniswap.org/whitepaper.pdf](https://uniswap.org/whitepaper.pdf) [https://pintail.medium.com/understanding-uniswap-returns-cc593f3499ef](https://pintail.medium.com/understanding-uniswap-returns-cc593f3499ef) [https://pintail.medium.com/uniswap-a-good-deal-for-liquidity-providers-104c0b6816f2](https://pintail.medium.com/uniswap-a-good-deal-for-liquidity-providers-104c0b6816f2) [https://hackmd.io/@HaydenAdams/HJ9jLsfTz](https://hackmd.io/@HaydenAdams/HJ9jLsfTz) [https://github.com/Dapp-Learning-DAO/Dapp-Learning/blob/main/basic/13-decentralized-exchange/uniswap-v1-like/README.md](https://github.com/Dapp-Learning-DAO/Dapp-Learning/blob/main/basic/13-decentralized-exchange/uniswap-v1-like/README.md)

欢迎你从公众号后台留言作者探讨web3行业问题

点赞关注十四，用技术视角带给你价值

![](https://storage.googleapis.com/papyrus_images/b48f70bbbea572ee015d69b3cc0cb9b004349b41bd23b1e91ba285c352944d08.png)

---

*Originally published on [shisi.eth](https://paragraph.com/@shisi-eth/dex)*
