恒定函数做市商:DeFi 的真正突破
不少市场可能没有足够的有机流动性来支持活跃交易,做市商实际就是解决这一问题的代理方,去促使市场去达成不会达成的交易,“自动做市商(AMM)” 是通过算法进一步实现这些功能的代理方,可以将数字化的市场注入流动性。
虽然自动做市商在理论和实践上都有了长足发展,但是 “恒定函数做市商(constant function market maker,CFMM)” 对学术界和金融市场来说是 “从零到一” 的创新。后者为数字资产交易所引入了确定性的定价规则,重新定义了做市商的流动性供给流程,并实现了全球资金池访问平等化。
在这篇文章中,我将:解释 AMM 和 CFMM 之间的区别,探索 CFMM 的优缺点及其设计和用例的未来发展方向。
术语解读
尽管密码学货币社区对自动做市商有浓厚的兴趣,但是他们对相关术语的概念不甚了解。
每当谈及自动做市商,大多数人都会想到 Uniswap 。实际上,过去十年来,已经有大量学术文献研究了自动做市商这一概念。在大多数情况下,自动做市商主要是为了信息聚合而设计的,并在收益取决于未来状况的市场(例如,预测市场)中执行。
最受欢迎的自动做市商是 2002 年提出的对数市场评分规则(Logarithmic Market Scoring Rule)。大多数预测市场(例如,Augur 1.0 和 Gnosis )都采用这一模型。另外,用于信息聚合的自动做市商模型种类繁多,例如,贝叶斯做市商(通常适合二元市场)和动态同注分彩做市商(常用于赛马)。
虽然 Uniswap 确实是自动做市商,但是我们可以给出更具体的解释。由于 Uniswap 做市商使用的是 “恒定乘积做市商”(详见下文),我们将这类自动做市商归入恒定函数做市商一类。
每当谈及 CFMM,人们经常会把它跟 “联合曲线(bonding curve)” 联系起来,但这是不对的。联合曲线定义了价格和代币供应量之间的关系,而 CFMM 定义了两个或以上代币的关系。实际上,“联合曲线”一词的创造者指出,这个词原本用于 “联合型策展社区” 的语境中。
最后,经常有人将 Compound 等算法借贷协议称作自动做市商。我相信,这些算法市场所使用的 AMM 是不包括 CFMM 的,因为利率函数是基于利用率的动态变化的,而且不以保持利率不变为目标。
恒定函数做市商
CFMM 是第一类应用于现实金融市场的 AMM 。密码学货币社区设计 CFMM 的目的是为了构建去中心化的数字资产交易所,并基于两个或以上资产的可用数量在实际交易前预定义出一组价格(因为这种关系是根据函数确定出来的,相对价格会随可用数量的改变而改变,边买卖边变)。不同于基于订单簿的传统交易所,交易者是基于一个资产池而非特定的交易对手进行交易。
“恒定函数” 一词指的是,无论交易如何改变资产储备额,资产储备额的乘积都是不变的(即,恒等于某个常数)。
CFMM 通常有三类参与者:
交易者:使用一种资产交换成另一种资产
流动性提供者(Liquidity provider, LP):愿意提供他们的资产组合来满足交易需求,以此赚取交易费
套利者:将资产组合中资产维持在市场价格,并从中获利
CFMM 通常用于二级市场交易,往往会通过套利交易准确反映每个资产在参考市场上的价格。例如,如果 CFMM 的价格低于参考市场价格,套利者会在 CFMM 上买入资产,然后到基于订单簿的交易所卖出,以此获利。
恒定乘积做市商
恒定乘积做市商由 Uniswap 率先实现。其公式如下所示:
其中,R(α) 和 R(β) 分别代表两种资产的池内储备数量,γ 代表的是交易费率。无论资产 α 或 β 的交易数量是多少,当费用为零时,R(α)*R(β) 的乘积恒等于常数 k。这一等式常被简化为 x*y=k,其中 x 和 y 分别代表两种资产的储备额。实际上,由于 Uniswap 会收取 0.3% 的交易费添加到资金池内,每笔交易都会增加 k 。
两种资产的恒定乘积函数构成一条双曲线,其优点是资产价格越接近无穷大,越能产生流动性。
恒定总和做市商
恒定总和做市商是较为简单的恒定函数做市商的实现。其公式如下所示:
其中,R(i) 代表了每种资产的储备量,k 是一个常数。尽管这个函数会产生 “零滑点(zero slippage)”,但是它不能无限提供流动性,因此可能不适合作为独立的去中心化交易所用例实现。实际上,如果作为储备代币的参考价格不等于 1 ,那么所有套利者会不断买入其中一种代币,直至其流动性耗尽。
两种资产的恒定总和函数构成一条直线,并得到一个等式 x+y=k 。
恒定平均值做市商
恒定平均值做市商由恒定乘积做市商这一概念推广而来,可用于两种以上资产,权重比例不仅限于 50/50 。恒定平均值做市商由 Balancer 率先引入,其公式(不计入费用)如下所示:
其中 R 代表每种资产的储备量,W 代表每种资产的权重,k 是常数。换言之,在不计入费用的情况下,恒定平均值做市商可确保资产储备量的加权几何平均值保持不变。
-来源:Balancer 白皮书-
例如,三种资产的平均加权函数是 (xyz)^(1/3) = k 。
混合型 CFMM
一些项目根据交易资产的特征使用混合函数获得理想属性。
Curve(又称 Stableswap)的设想是,如果底层资产的价格相对稳定(例如,两种锚定美元的稳定币),就可以减少函数的滑点。因此,它采用了恒定常数和恒定乘积的混合函数,得到了一个非常复杂的公式:
其中,x 代表每种资产的储备量,n 代表资产种类数,D 代表储备资产中的不变量,A 是 “放大系数(这是一个可以调整的常数,会产生类似于杠杆的效应,并影响与流动性提供者收益相关的资产价格范围,即,资产波动性越高,A 越高)”,
当资产组合处于平衡状态时,该函数就会发挥恒定总和的作用,当资产组合的平衡状态被打破时,该函数就会发挥恒定乘积的作用。实际上,该函数看起来像是 “放大的双曲线”。
-来源:Curve 白皮书-
虽然 Shell Protocol 有着类似的目标,但是它采取的方法截然不同。它不仅像 Curve 那样利用稳定币来优化函数的滑点,还像 Balancer 那样使用加权资产篮子作为储备资产,但是它的独特之处在于,它引入了多个可调参数。其公式如下图所示:
-来源:Shell 白皮书-
其中,U(x) 是由增益函数 G(x) 和损失函数 F(x) 组成的效用函数;x 代表的是每种资产的储备量。实际上,当流动性池达到平衡时,该函数起到恒定总和的作用,但是当流动性池中每种资产的权重都偏离指定阈值时,就会逐渐增加滑点。这种设计可以确保流动性池基于每种资产的预设权重保持平衡。
CFMM 的优势
提高交易速度
在传统的交易所流程中,做市商需要创建订单,并将它们发布到交易所上,然后浏览订单,等待订单成交。由于订单需要被撮合,一些订单可能需要等待较长时间才能成交。CFMM 可以解决经济学上的 “需求巧合( coincidence of wants)” 问题,让交易立即达成,这一点对某些应用场景来说至关重要(例如,因流动性太低而难以造市的游戏道具)。
引导流动性
对基于订单簿的交易所来说,冷启动流动性是一个非常复杂且成本高昂的过程。通常来说,交易所必须找到做市商,让他们编写自定义代码来定价以及发布订单,通常还要直接提供交易所需的账户和资金。交易所还要运行一个带有控件的内部交易平台来执行一些交易,确保做市商不会通过抢先交易来损害客户的利益。或者,交易所创始人会编写一个 python 脚本,利用自己的资产来提供流动性,同时在其他交易所上对冲风险。对于 “Delta neutral” (译者注:大意可理解为风险中性的,不偏爱也不厌恶风险)的做市商来说,很难找到一种方法来对冲账面上资产,因为市场上没有纯粹的多头或空头。
由于 CFMM 鼓励被动的市场参与者将资产借给流动性池,这种模式能够大幅降低流动性供给的难度。例如,Synthetix 能够使用 Uniswap 为其 sETH 流动性池引导流动性,让用户能够更容易地在交易所上开展交易。
链上信息输入系统
CFMM 无需通过中心化的第三方机构来衡量资产价格,从而解决了所谓的信息输入系统问题。受到经济激励的代理方在与 CFMM 交互时会提供正确的资产价格。因此,去中心化交易所成为了可靠的链上价格信息输入系统,可以作为智能合约的价格信息来源。
Uniswap 2.0 又在此基础上进行了完善,在每个区块的第一笔交易执行之前确定并记录价格,因此在出块期间价格更难被操控。
路径独立
简而言之,路径依赖意味着 “过往对未来有影响”。基于订单簿的交易所的价格发现过程具有路径依赖性,资产价格取决于参与者的行为反应。无论是在传统市场还是中心化的密码学货币交易所,这一点都很明显,资产价格受到了订单簿深度、买方或卖方流动性、交易历史和私人信息等因素的影响。
CFMM 具有很强的路径独立性(假设手续费率足够低)。这意味着,任意两种资产的价格取决于它们的数量,而非它们之间的路径(曾经的历史价格)。这会带来两大重要优势:
无论交易者参与所有的交易,还是一小部分交易,得到的价格都是相同的。因此,交易者无需制定交易策略。
CFMM 通过了最小化的状态表示:我们只需知道数量就可以对该资产进行定价。
CFMM 的劣势
滑点
滑点指的是因交易者吸收流动性而导致价格与交易者行为背离的趋势 —— 交易量越大,滑点越大。CFMM 会产生较高的滑点成本,因此适合体量较小的订单。
外部金融风险
往 CFMM 中注入流动性虽然简单,但是会带来一些复杂的财务风险(暂时性亏损、短期波动性、长期波动性/交易量相关性等)。
例如,Uniswap 收益曲线的是凹形的。这意味着,流动性提供者在一定的价值范围内是盈利的,在价格波动较大时会亏损。
-来源:AlfaBlok-
理想情况下,我们希望在承担风险时,收益曲线呈 “凸形”,也就是说,风险范围的两侧都有上升空间。在这种收益结构下,流动性提供者应该积极监控流动性池的变化情况,并迅速采取措施来避免重大损失。
CFMM 的未来
特定资产函数
通过 Curve 和 Shell 的案例可以看出,我们可以针对特定类型的数字资产打造恒定函数。
因此,我相信除了稳定币之外,将会出现很多针对不同资产类型设计的 CFMM ,包括衍生品(例如,有担保的期权)和证券性代币(例如,房地产)。
这些 CFMM 的价格函数最能反映各类资产的特征,从而减少滑点,并提升交易效率。
流动性敏感度
流动性敏感度的含义是,做市商会基于市场交易量来调整对定价反应的弹性。流动性敏感度是非常可取的,因为它在直观上符合人们对市场运作的期望:同等资金规模的投入,在流动性充足的市场上比在缺乏流动性的市场上造成的影响更小。
目前,CFMM 模型的流动性敏感度受到价格的限制(即,流动性池越大,价格滑点越低),但是还有其他一些维度可以是动态的。
例如,固定的 LP 费用(流动性提供者费用)不具有流动性敏感度,因为该费用不随交易量的变化而变化(即,无论流动性池的规模如何,费用始终保持在 0.3% )。
另一种方法是,在流动性较低时提高 LP 费用,来激励流动性提供者存入资产(例如,当流动性低于一定的阈值时,费用会提高到 0.5% ,其他情况下维持在 0.3% )。
还有一种方法是,在市场诞生之初降低 LP 费用,以促进交易量,并随着市场日趋成熟逐渐提高费用。虽然较低的 LP 费用会增加交易量,但是不利于聚集流动性。如何收取费用才能在平衡交易激励与流动性激励的同时实现收益最大化呢?这是个有趣的研究方向。
另外,LP 费用可以基于除流动性以外的其他因素。例如,人们可以根据拖尾波动性(trailing volatility)来调整 LP 费用,形成一种随机定价机制,同时赋予 CFMM “波动性敏感度” 这一额外优点。
一级市场
虽然迄今为止大多数 CFMM 都用于二级市场交易,但是它们也可以用来引导一级市场的资产发行。通过 CFMM ,发行方可以提高实物资产和数字原生资产的发行效率,捕捉二级市场的上涨空间,并提高消费者的流动性和价格发现。
Unisocks 率先进行了尝试。它创建了 $ SOCKS(袜子代币),每个 $ SOCKS 都代表一双限量版袜子。Uniswap 的 $ SOCKS/ETH 流动性池中有 500 $ SOCKS 和 35 ETH 。如果 ETH 的交易价格是 200 美元,则第一双袜子的最低价为 14 美元,第 499 双袜子的最低价约为 3.5 美元。Saint Fame 利用这一概念来售卖衬衫。Zora 更是利用这一概念创建了一个限量版市场。我希望未来看到更多项目使用 CFMM 发行代币。
有趣的是,这又将我们带回到了 AMM 的初始用例,即,信息诱导。但是,此时它影响的不是事件发生的可能性,而是资产的价格!
结论
CFMM 从根本上对金融市场进行了革新,并开拓了关于 AMM 的学术研究领域。
CFMM 仍处于发展初期。我期待未来几年内会有新的设计和应用诞生。
非常感谢 Tom Schmidt、Tarun Chitra、Guillermo Angeris 和 Dan Robinson 对本文的反馈。
欢迎关注我的推特。
参考资料:
Automated Market Making: Theory and Practice
An analysis of Uniswap markets
Improved Price Oracles: Constant Function Market Makers
(完)
(文内有许多超链接,可点击左下 ”阅读原文“ 从 EthFans 网站上获取)
原文链接:
https://medium.com/bollinger-investment-group/constant-function-market-makers-defis-zero-to-one-innovation-968f77022159
作者: Dmitriy Berenzon
翻译: 闵敏
微信扫描关注公众号,及时掌握新动向
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场