defi挖矿机制:AMM自动化做市商与LP挖矿无常损失

注:非投资建议,纯属技术研究。

AMM,英文全称:Automated Market Maker,翻译成中文就是自动化做市商
在此之前,我们要介绍一些名词概念:

  • Liquidity: 流动性,指各项资产的数量分布情况
  • Liquidity Pool: 流动性池,指各种资产所对应的资金池
  • LP(Liquidity Provider): 流动性提供者,指向流动性池内添加对应资产的用户
  • Order Book: 订单簿,中心化交易所的做市方式
  • Slippage: 滑点,指下单价格和最后成交价的差额比例

一、从中心化交易所的做市方式说起

在传统中的交易所中做市,无论是股市还是币市,采用的都是Order Book(订单簿)模式。订单簿记录着买卖双方对资产的报价情况。在订单簿中有两个角色:

  • 挂单者 Maker
  • 吃单者 Taker

其中挂单者就是做市商。专业的做市商(Maker)会同时在交易所的买卖两个方向挂单,并且根据市场的波动调整报价,为交易所提供流动性,吸引更多的交易者来进行交易。所以简单来说,做市商就是提供报价与流动性的人。
以某交易所的BTC/USDT交易对为例:

买卖盘
在做市行为中,挂单的资产数量称为流动性,提供资产的人称为流动性提供者(LP),LP提供流动性后,还需要为资产提供一个价格,这样才叫完成做市。
通常情况下,流动性与价格的提供者都是同一个人,也就是做市商(意指做市的商人)。
如果一个交易所没有或者只有很少的做市商进行做市的情况下,交易者想要进行交易就会出现没有流动性的情况,缺乏流动性也就意味着会造成高滑点交易——即交易者最终成交的价格与看到的价格有很大的差距,这也就会造成市场交易的积极性不高。专业的做市商,会在当前价格附近提供尽可能多的流动性,以供交易者进行交易,然后以非常高的频率进行撤单与挂单的操作,避免产生损失。做市商的最终目的是为了获利,与此同时他们的交易活动也为交易者创造了流动性,降低了交易的滑点。这些做市商,往往来自于专业化的机构。
早期的去中心化交易所,也沿用了中心化交易所的订单簿模式,但都没能发展起来。因为没进行一个操作,都需要在链上进行交互,而事实上目前最火的公链以太坊的TPS低和gas费高昂的问题都没有办法保证这种做市商活动的交易频率。
为了解决dex上难以采用传统做市商的模型的问题,一种新的做市模型——AMM出现了。

二、AMM——去中心化交易所的做市商模型

在去中心化交易所中,AMM模式是由LP来提供流动性。
LP将自有资产按比例存入池子中为交易提供流动性,这个池子就被称作流动性池。
在交易者进行交易时,实际上是与流动性池进行交易,而交易的价格则由AMM模型根据参数自动生成。
流动性池的种类主要分为三种

  • 恒定资产比例池:两种资产比例 50/50
  • 混合资产池:支持3种及以上资产
  • 加权池:多种资产比例

这里我们主要讲的第一种恒定资产比例池。
LP根据提供的资金占池子的比例,将获得相应的LP token,相当于一种存款凭证。用户根据自己的资金比例所分得的交易手续费会累积到LP token的价值中,有些平台如Curve还提供平台原生代币的奖励。用户提供流动性后从中获得收益的这一行为称为流动性挖矿。有了流动性还不够,为了完成做市操作,还需要提供报价。
AMM是如何生成报价的呢?不同的AMM模型,有不同的价格计算公式,
恒定乘积做市商(CPMM)模型,恒定和做市商(CSMM)模型,恒定平均值做市商(CMMM)模型,混合常数函数做市商(CFMM)模型。

1.恒定乘积做市商

早期的比如uniswap就是采用的恒定乘积做市商模型,它基于函数

x * y = k

x和y分别代表流动池中两种资产的数量,它们的乘积是一个恒定的常熟k。可以很容易看出,当x的供给增加时,y的代币供给必须减少;反之亦然。x和y的函数关系图像如下:
y=k/x函数图像

这是目前普及度最高的一种AMM机制。
举个例子来深入了解这种AMM:
假设现实中1BTC=100USDT,已知现有一个BTC/USDT池子。由于两种资产比例要保持在50:50,也就以为着LP要存入的BTC和USDT的数量比例必须是1:100才会被池子接收。所以如果用户A想存入10BTC来提供流动性,那他就必须存入10BTC+1000USDT。通过CPMM的公式可得k = 1000 * 10 = 10000,A的k值就保持在10000不变。交易过程中,由交易者触发AMM模型,AMM模型通过计算应该发送的资产数量:

假设交易者想花300USDT购买BTC,那么根据公式:
(1000+300)*(10-y)=10000, 解得y≈2.31

即通过AMM模型,算得交易者可以拿300USDT换取2.31个BTC。但是按我们实际汇率来看300个USDT可以换3个BTC,这中间就产生了很大的误差。

其实误差来源非常简单,因为池子中总共就只有1000个USDT,一下增加了300个USDT,就造成了反比例函数曲线上的点下滑比较大,也就造成汇率相差比较大。从下面图像可以看出:
高滑点

我们只需要假定流动池初始情况里,BTC的数量为100,USDT的数量为10000,那么再通过CPMM公式计算:

(10000+300)*(100-y) = 10000000
可求得y=2.913

比较接近实际汇率中的3。从图像中能更直观地看出,起始点和交易点的切线斜率是很相近的,即意味着实际汇率和理想汇率差得不大了。
低滑点

那么我们再提高一个数量级,即假定BTC的数量为1000,USDT的数量为100000,那么再通过CPMM公式计算:

(100000+300)*(1000-y) = 100000000
可求得y=2.9911

这个数相比之前的2.913,更为接近实际的3了。
从上面的推导就可以看出,只要池子里的金额够大,滑点就可以变得很低。

这就AMM自动做市的过程了。
AMM模型的闭环

这种方式任何用户都可以以任何资金量进行参与,而流动性挖矿也激励了用户提供流动性,形成了良好的闭环。

2.恒定和做市商

机制基于函数

x + y = k

函数图像如下:
y=-x+k

可以看到图像是一根直线,这也就意味着,如果代币之间的链外参考价格不是1:1的话,这会允许套利者耗尽其中一种储备资产,这种情况将摧毁流动性池的一方,迫使LP承受损失,并使得交易不具有流动性。因此这种方案并未被广泛采用。

3.恒定平均值做市商

它可以创建两个以上的代币的AMM,并在标准的50/50分布之外进行加权,在这个模型中,流动池的类型就采用了混合资产池或加权池,每个代币的加权几何平均值几乎保持不变。

对于一个有三种资产的流动性池,则有:
(x * y * z) ^ (1/3) = k

这就允许池子内不同资产的风险敞口可变,并可在池内任何资产之间进行互换。比如balancer可允许用户在资产组合中加入8种资产:
Balancer

4.混合常数函数做市商

它结合了多种功能和参数,以实现特定的行为。如调整流动性提供者的风险敞口或减少交易者的价格滑点,例如curve的CFMM就结合了CPMM和CSMM的特点,以创造更好的流动性。

Curve的AMM模型
这个图像表示,这种AMM做市商的机制可以使得对于绝大多数交易集中在线性汇率,因为这样可以保证相对低滑点;而对于大额的交易则返回指数汇率,以防止存在的其中一方资产枯竭的情景发生。

三、无常损失(Impermanent Loss)

从我们上述对AMM机制的描述可以看出,AMM是不具备场外价格感知功能的,也就是说BTC/USDT这个池子是不能感知外面BTC的涨跌的。那么要维持这个机制的运行,就需要一个角色的帮忙:套利者
试想一下市场中有这么一个精明的套利者,当外界BTC价格下跌时,池子里BTC还是原来的价格,套利者看到这样的情况,就会想要将BTC换成USDT,这样一来池子里的USDT的数量就会减少,BTC的数量在增多。由于BTC和USDT资产比例是相等的,即:

BTC数量*BTC价格 = USDT数量*USDT价格

由于USDT价格是稳定的,而USDT数量减少了,所以等式右边在减小;那么想维持等式的平衡,就得减小BTC的价格。
同样另一种情况——即外界BTC价格上涨了,那么市场上这个精明的套利者就会在用USDT去买池子里的BTC,这样一来池子里的BTC数量就减少了,USDT的数量就增多了,为了维持等式两边的平衡,等式左边的BTC价格也必须得上升。
AMM就是这样通过套利者这个角色来维持池内外汇率的动态统一的。

我们上面讲了市场上这个精明的套利者的套利过程,毫无疑问,在只有套利者和池子两个对象的系统中,套利者在整个过程中套取的利润一定来自于矿池。矿池总量下跌,LP持有的资产也会下跌。这部分损失就是无常损失。而且可以知道,无论币价的上涨还是下跌,套利者都有套利空间,也就是说,无常损失几乎是不可避免的。一种极端情况下,即只有在你

入场时BTC/USDT交易对的币价比=出场时BTC/USDT交易对的币价比

的情况下,才能避免无常损失。虽然有无常损失,但是用户还是可以通过提供流动性来赚取手续费,一定程度上可以弥补币价波动带来的无常损失。
所以总的来说,参加这种LP挖矿,需要考虑的因素要比dapp上面写的年化数字要复杂的多。我总结了一些规则:

  • 为了避免无常损失,退场时机最好选在当前交易对币价比回归到你入场时交易对币价比的时候;
  • 如果币价上涨,那么作为LP,币本身涨幅带来的收益比不上现货,综合来讲还要加上你的手续费奖励这一部分;
  • 如果币价下跌,那么作为LP,币本身下跌带来的亏损要高过现货,综合来讲也要加上你的手续费奖励这一部分。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容