当前位置: 首页 > news >正文

什么是无常损失?

无常损失 Impermanent Loss

无常损失简单来说是由于资金池中的币的价格背离引起的。去中心化交易所的自动做市商模型一般是恒定乘积做市商模型,简称 CPMM(Constant Product Market Maker)。最早在2017年,以太坊的创始人 vitalik 就在 reddit 上提出过 CPMM 模型在去中心化交易所的应用。2018年,他在 Ether Research 论坛上又提出了优化方案。目前,像 Uniswap 这样的去中心化交易所,采用的都是恒定乘积做市商模型,正是由于这种模型的计算方式,AMM 对做市商并不友好。流动性提供者并不是一定能够盈利。

举个例子:

假设当前流动性池中 ETH/DAI 分别有 100 个(ETH)和 30000 个(DAI),那么 100 * 30000=3000000。

假设我们在其中有十分之一的资产,10ETH3000DAI。过了一段时间,ETH 价格上涨,流动池中资产比重发生了变化,变成了 50ETH60000DAI,这时 50 * 60000=3000000 乘积没有变化,我们的资产会相应进行调整,变成了 5ETH6000DAI,它和单纯持有 10ETH3000DAI 相比的价值之差,就是无常损失。

从这个角度来说,无常损失可以看成一种机会成本,这个成本是我们持有两个加密货币资产和把这两个资产投入到资金池中进行流动性挖矿相比,最终的价值之差。

恒定乘积做市商模型其实非常简单,它其实就是一个公式,x * y = k

假设交易对是 A 和 B,其中 x 是流动性池中 A 的总流通量,y 是 B 的总流通量,在不增加或减少流动性的情况下,无论交易多少次,x 和 y 的乘积 k 是不变的。所以 A 和 B 的数量关系是这样一个反比的曲线:

由于每次交易,都会改变做市池中 A 和 B 的数量,所以 A/B 的价格就会发生变化。

假设资金池中一开始是 1200 个 A 和 400 个 B,所以兑换价格是 3:1。某个交易者用 3 个 A 兑换了 1 个 B,算上手续费(假设0.03%),那么资金池中就变成了 1203.03 个 A 和 399 个 B,那么接下来 A 兑换 B 的价格就是 3.01:1 了。

作为交易者,如果 A 和 B 的兑换价格是 3:1,那么也并不意味着你一定可以用 1 个 B 换 3 个 A。由于存在交易滑点,你实际拿到的 A大概率是要小于 3的。而 A:B 的资金池中的币量越多,交易滑点就越小。交易者需要兑换的币量越小,滑点也越小。如果交易者交易的单子非常大,就会造成类似砸盘的效果,滑点也会非常大。

那么初始的币量比值是谁定的呢?在去中心化交易所,任何人都可以定义一个新的交易对的资金池的初始量,也就是其价格。如果这个价格定得不合理,就会有套利者进行套利交易,使得价格趋于合理。

我们可以在一些网站上找到无常损失的简易计算器,我们以非小号为例,来看一下:
输入两个币的预计涨幅,以及池子中币量的比例,就可以看到预计的无常损失。在这个例子中,如果我们存入时池子中 A 和 B 的比例是 1:1,一段时间后,A 跌了 50%,B 涨了 60%,那么预计的无常损失就是 14.816458%。

无常损失是流动性挖矿必然会遇到的一个问题,它本身几乎没有可以改进的空间,而有些平台,通过一些特殊的方式,可以尽可能的降低无常损失。

相关文章:

  • 找年龄最大的人
  • Java网络教程的基础简介说明
  • Flask 学习-35.restful-full 自定义错误内容 error_msg 使用
  • Linux连接文件与vim编译器的使用
  • oracle 删除语句(时间范围)
  • CMS垃圾收集器与三色标记算法详解
  • 2022速卖通重点运营策略,商品合规划经营必知
  • 【WSN通信】基于最佳簇半径的无线传感器网络分簇路由算法附matlab代码
  • 最新 MySQL 面试笔记解析直接爆砍 39K 月薪,拿走不谢
  • Jenkins实战中的一些技巧
  • webpack定制化 加载与插件[css加载器、html插件、image打包配置、babel代码兼容、vue加载器及配置]
  • 线程与进程的关联
  • Linux环境下fastdfs部署
  • 解锁新技能《Redis SETBIT用法》
  • STL应用 —— queue(队列)
  • Google 是如何开发 Web 框架的
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • CSS盒模型深入
  • Git的一些常用操作
  • isset在php5.6-和php7.0+的一些差异
  • JAVA并发编程--1.基础概念
  • jQuery(一)
  • Promise面试题2实现异步串行执行
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 对JS继承的一点思考
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 设计模式(12)迭代器模式(讲解+应用)
  • 使用parted解决大于2T的磁盘分区
  • 使用SAX解析XML
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • ​secrets --- 生成管理密码的安全随机数​
  • ###项目技术发展史
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (1)(1.13) SiK无线电高级配置(六)
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (规划)24届春招和25届暑假实习路线准备规划
  • (十) 初识 Docker file
  • (译)计算距离、方位和更多经纬度之间的点
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • **CI中自动类加载的用法总结
  • .net 简单实现MD5
  • .NET6 命令行启动及发布单个Exe文件
  • .NET企业级应用架构设计系列之技术选型
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [android] 看博客学习hashCode()和equals()
  • [docker] Docker的数据卷、数据卷容器,容器互联
  • [java后端研发]——文件上传与下载(2种方式)
  • [LaTex]arXiv投稿攻略——jpg/png转pdf
  • [MFC] MFC消息机制的补充
  • [NOIP2003 普及组] 乒乓球(模拟)