一文读懂数字资产恒定函数做市商(CFMM):从 0 到 1 的突破
在许多市场上可能没有足够的有机流动性来支持活跃的交易活动。做市商就是促进市场流动性的代理人。而"自动做市商"(Automated market makers,AMMs)就是通过各种函数在数字货币市场上提供流动性的算法代理人(algorithmicagents)。
虽然自动做市商在理论和实践中都有研究,但"恒定函数做市商"(Constant Function Market Makers,CFMMs)是学术文献和金融市场上从来没有过的概念。CFMMs在数字资产交易所背景下应用了确定性定价规则,重新定义了做市商提供流动性的过程,并将进入全球资金池的途径进行了大众化。
在本篇文章中,我将:
解释AMMs和CFMMs的区别。
研究CFMMs的利弊并探讨CFMM设计与用途的未来发展方向
相关术语介绍
虽然加密社区围绕着AMMs的讨论很激烈,但应用相关术语方面却比较混乱。
虽然大多数人一想到AMMs就会想到Uniswap,但实际上这个概念在学术文献中已经有十多年的研究,大部分的AMM主要是为信息聚合(information aggregation)而设计的,其收益率取决于未来市场(比如预测市场)的某种状态。
最流行的AMM是2002年开发的对数市场评分法则(Logarithmic Market Scoring Rule),且被应用于大多数预测市场(如AugurV1和Gnosis)都采用了这种方法。信息聚合方面还有很多种AMM实现方式,如贝叶斯做市商(Bayesian market makers)(通常用于二元市场)和动态同注分彩做市商(dynamic pari-mutuel market markers)(通常用于赛马)。
虽然Uniswap确实是一种AMM,但我们可以一种更具体的方式看待它。Uniswap实际上是一种CFMM(下面我们将具体介绍该概念)。与Uniswap相似的AMMs也都可以归类为CFMMs
在谈论CFMM时,我们经常听到"绑定曲线(bonding curve)"这个词,但这样说是不正确的。绑定曲线定义的是某种数字货币价格和其供应量之间的关系,但CFMMs定义的是两个或多个数字货币之间的关系。事实上该术语的创造者表示,"绑定曲线"实际上通常被用于"绑定管理社区(bondedtogether curation community)"的语境中
最后,经常听到有人说像Compound这样的算法借贷协议可被看作是AMM。笔者同样认为他们是某类AMM,但并不是CFMM,因为这些协议的利率函数是动态的(基于利用率(utilization ratio)),其目的也并不是为了保持利率不变。
恒定函数做市商(CFMM)介绍
CFMMs是第一类专门应用于现实世界金融市场的AMMs。它们是由加密社区设计的,其目的在于构建数字资产的去中心化交易所。他们建立在一个根据两个或多个资产的可获得数量建立一套预先定义的价格。与传统基于订单簿的交易所不同,交易者的对手方是资产池而并不是某一特定的对手。
术语 "恒定函数(constant function)"指任何交易都必须改变资产储备以使这些储备量的乘积保持不变(即等于一个常数)。
CFMMs通常有三个参与方:
交易员(Traders):以一种资产换取另一种资产。
流动性提供者(Liquidity Providers):愿意接受市场每笔交易以他们的投资组合为对手方从而获得交易费用的群体。
套利者(Arbitrageurs):维持该投资组合内的资产价格与市场价格一致以换取利润的群体。
CFMM经常被用于二级市场交易,由于套利的存在,CFMM往往能准确反映参考市场上某种资产的价格。例如,如果CFMM的价格低于参考市场价格,套利者就会在CFMM上买入该资产,然后在基于订单簿的交易所卖出该资产以获得利润。
恒定乘积做市商(Constant Product Market Makers)
一个恒定乘积市场做市商(最先由Uniswap应用)满足以下等式:
其中R(α)和R(β)是每种资产的储备量,γ指交易费用。交易任何数量的α或β都能够保证在交易费用为零的情况下交易发生后R(α) * R(β) = k。它也经常被简化为x * y = k,其中x和y为两种资产的储备量。但实际上由于Uniswap收取0.3%交易费用然后加入到储备池中的,所以每笔交易实际上都会使k增加。
由此以来这两类资产的关系就可用恒定乘积函数——双曲线表示,它有一个理想的特性,即就算某类资产的价格趋近于无穷,该函数仍能使市场一直保持着良好的流动性。
恒定总量做市商(Constant Sum Market Makers)
恒定总量市场做市商是CFMMs的一个比较直接的实现方式,它满足以下方程:
其中R(i)是每种资产的储备量,k在此仍是一个常数。虽然这个不会产生滑点,但它并不能为资产提供无限的流动性,因此很可能不适合作为去中心化交易所的独立实现方式。实际上可能会发生这样一种情况:如果储备资产的相对参考价格(即在其他市场上的价格)不只一个,那么套利者将总会选择该类资产进行套利,直到储备池中该资产的数量枯竭。
我们可用直线来表示此类关系,即x+y=k。
恒定均值做市商(Constant Mean Market Makers)
恒定均值做市商是恒定乘积做市商更加一般的形式,它可以将两种以上资产纳入储备池中且每个资产的权重也并不一定是相同的。恒定均值做市商最早由Balancer提出,在没有费用的情况下,恒定均值做市商满足以下等式:
其中,R为每项资产的储备量,W为每项资产的权重,k为常数。换句话说,在没有手续费的情况下,恒定均值做市商保证储备金的几何加权平均数保持不变。
例如,对于三种等权投资组合来说其函数为(x * y * z)^(1/3)= k
混合CFMMs
其实还有几个项目根据交易资产的特性使用混合函数来实现理想的关系特点。
Curve(又名Stableswap)设计的函数基于这样一种想法:如果标的资产的价格相对稳定(例如两个美元计价的稳定币),那么可以减少函数中的滑点。它使用了恒定常数和恒定乘积的混合函数,并得出了一个相当复杂的函数。
其中,x是每项资产的储备量,n是资产的数量,D是代表储备量中价值的不变量。A是"放大系数"(这是一个可调控的常数),它提供了一个类似于杠杆的效应并影响资产价格变化的范围。对流动性提供者来说,资产价格变化范围的大小会给他们带来一定的收益(即资产波动率越高,A应该越高)。
当投资组合处于平衡状态时,该函数可发挥恒定总量的功能;当投资组合变得非平衡时,该函数向恒定乘积转变。实际上,该函数看起来像一个"放大的双曲线"。
Shell Protocol其实也有同Curve类似的目标,但它采取了不同的方法。它和Curve一样对稳定币的滑点进行了优化,并像Balancer一样Shell Protocol池子里的数字货币也是一个加权的资产篮子,但它和这两者的不同之处在于它使用了各种可调整的参数。它使用以下函数:
其中U(x)可解释为由收益函数G(x)和损失函数F(x)组成的效用函数;x是每项资产的储备量。实际上当资产池处于平衡状态时,它发挥恒定总量的作用,但当资产池每项资产的权重的背离程度超过一定的阈值时,该函数会逐渐引入更多的滑点。这种设计确保了资产池根据每项资产的预设权重是保持平衡的。
CFMM的优势
更快的交易所
在传统的交易所工作流程中,做市商需要创建订单,然后订单在交易所发布,接着做市商需要再浏览订单,并且做市商需要等待订单被成交。由于这样的匹配过程比较繁琐,有的订单可能需要等待一段时间才能得到成交。通过克服一个被称为"需求的巧合(coincidence of wants)"的经济学问题,CFMMs可使得交易可以立即发生,这对于某些用途(例如,由于流动性低而难以做市的游戏内物品)可能很重要。
引导流动性(bootstrapping liquidity)
在以订单簿为基础的交易所中引导流动性是一个极其繁琐和昂贵的过程。通常情况下,交易所必须先找到做市商,让他们编写自定义代码来定价和发布订单,并经常直接提供交易账户和资金。交易所往往不得不自己做一些预备工作,通过运行一个内部交易平台,以确保他们不会做市商先看到信息(front-running)。或者,创始人往往会运行一个python脚本,用自己的资产提供流动性,同时对冲其他交易所的风险。" Delta Neutral "的做市商如果要想办法将对冲掉账面上的资产也是比较难的,因为市场不存在自然的买方或卖方,这往往是不可能的。
因为CFMM鼓励被动市场参与者将资产出借给资产池,这使得流动性准备金的计提变得更加容易。例如,Synthetix能够使用Uniswap去引导其sETH的流动性从而让用户更容易在交易所交易。
链上预言机(oracles)
CFMMs提供了在不使用中心化第三方的情况下衡量资产价格的能力,它解决了“预言机问题”。与CFMMs交互的代理人通常受到正确报告资产价格的激励,因此去中心化的交易所可以作为一个良好的,为其它智能合约提供真实数据来源的链上价格预言机。
Uniswap v2通过在每个区块的第一次交易前就计算和记录价格(因此更难操纵价格),从而强化了这种原生性。
路径无关(Path independence)
简单来说路径依赖(path dependence)就是指 "历史上的事(history matters)"。基于订单簿的交易所有一个路径依赖的价格发现过程,在这个过程中,资产的价格取决于参与者的行为反应。这在传统市场和中心化的数字货币交易所中都很明显,资产价格受订单簿深度、买入方或卖出方流动性、交易历史和私人信息等因素的影响。
CFMM在很大程度上是路径无关的(pathindependence)(假设费用最小),这意味着两种任何数量资产的价格只取决于这两种资产的数量,而不取决于它们之间的路径。这也就给我们带来了两个重要的好处。
因为交易者从一次参与的所有交易中获得的价格与在一组小量交易中获得的价格相同,交易者不需要对他们如何进行交易进行策略化。
它最低限度上给出(代表)了一项资产的状态:我们只需要知道数量就可以对资产进行定价。
CFMM的缺点
滑点
滑点指的是当交易者吸收流动性时,价格与交易者的行动背道而驰的趋势。交易规模越大,滑点越大。CFMM会产生较大的滑点,因此更适合于规模较小的订单量。
异常金融风险(Exotic financial risk)
在CFMM中加入流动性虽然简单,但也伴随着一些复杂的财务风险(亏损不定、短期不稳定、长期波动性/长期交易量相关性等风险)。
例如,Uniswap的报酬率曲线是凹形的,这意味着流动性提供者在一定的价格边界内是有利润,而在较大的价格波动中则会亏损。
理想的情况下,我们在承担风险时要有要保证收益与风险是"凸性"关系的,也就是在风险图像的两边都是向上的。但上图所表示的回报结构表明,流动性提供者应该积极监测流动性池的变化并迅速采取行动,防止出现重大损失。
CFMM的未来发展
特定资产函数(Asset-specific functions)
CFMM在Curve和Shell的应用表明了为某些特定数字资产涉及常函数(即类似上文各类恒定函数的形式)是具有可能性的。
因此,我相信除了稳定币之外,我们将有各种针对其他资产类型设计的CFMMs,如衍生品(如抵押期权)和证券代币(如房地产)。
而这些CFMM的价格函数将反映出各自资产的显著特点,从而达到减少滑点,提高交换效率的目的。
流动敏感性(Liquidity sensitivity)
这一特性意味着做市商应根据市场活跃交易量调整其定价反应的灵活性。流动敏感性直观上符合人们希望市场的运作方式:固定规模的投资在流动性市场上的价格变动比在非流动性市场上的价格变动要小。
今天的CFMMs的流动敏感性仅限于价格(即流动性池越大,价格滑点越低),但其他一些维度可以是动态的。
例如,固定的流动性提供者的收费是不具有流动敏感性的,因为不同数量的流动性提供者的收费比例是相同的(即无论流动性池的大小,都是0.3%)。
一个办法是在流动性较低的时候提高流动池交易费用比例,以激励流动性提供者存入资产(例如,低于一定的流动性阈值时收取0.5%的费用,之后收取0.3%)。
另一个办法是在市场启动时降低流动性提供者收费比例以鼓励活跃交易量的发生,并在市场成熟后增加收费比例。虽然较低的收费比例可以增加交易量,但也可能会抑制资金池的流动性。一个有趣的研究是分析在交易激励和流动性激励之间能够取得平衡的利润最大化收费是多少。
此外,流动性提供者的收费可以除了流动性之外据其他因素来调整收费比例。例如,它可以根据跟踪波动率调整收费比例从而形成随机定价机制,并为CFMs带来 "波动敏感性"的等其他好处。
一级市场
虽然迄今为止,大多数CFMM都被用于二级市场交易,但它也可用于引导资产一级市场的发行。CFMMs使发行人能够有效地发行实体资产和数字资产,并在提高流动性和消费者的价格发现能力的同时,捕捉二级市场的动向。
这种用途最先是由Unisocks开创的,该公司创建了使持有人有权获得一双限量的实物袜子的代币。由此500个$SOCKS代币被创造出来,并以35个ETH的价格存入Uniswap的流动性池中,如果ETH以200美元的价格交易,那么第一双袜子的底价为14美元,第499对袜子的底价约为350万美元。Saint Fame通过销售衬衫进一步将这个概念合理化,Zora通过创建一个限量版商品市场将这个概念普适化,我预计会看到更多的项目使用CFMMs来实现这个用途。
有趣的是,这又让我们回到了AMMs最初的用途,即信息诱导(information elicitation),只是这次是关于资产的价格而非事件发生的概率。
总结
CFMM是金融市场的一项基础性创新,它为学术界围绕自动做市商引入了一个令人兴奋的新领域。
我们还处于CFMM的发展过程中较为早期的阶段,我很期待在未来几年内看到新设计和应用的出现。