这篇文章详细探讨了恒定函数市场制造者(CFMM)在去中心化金融(DeFi)中的革命性作用,介绍了其定义、工作原理及优势与劣势。同时,文章分析了不同类型的市场制造者,及其对未来金融市场的潜在影响。通过丰富的示例和数学公式,作者为CFMM的深入理解提供了清晰的视角。
照片由 Elizabeth Explores 供图,来源于 Unsplash
在许多市场中,可能没有足够的有机流动性来支持活跃交易。做市商是帮助缓解这个问题的代理,通过促成那些在市场中无法发生的交易。“自动化做市商” (AMMs) 是执行这些功能的 算法 代理,因此 在电子市场中提供流动性。
虽然自动化做市商在理论和实践中都得到了研究,但“常数函数做市商” (CFMMs) 是 " 从零到一" 的创新,既有学术文献的意义,也对金融市场产生了影响。它们在数字资产交换的背景下应用了一种确定性定价规则,重新定义了流动性提供的过程,并使全球资本池的访问民主化。
在这篇文章中,我将:
虽然在加密社区中对自动化做市商有很多兴奋,但在术语上也存在很多混淆。
虽然大多数人想到 AMMs 时会想到 Uniswap,但这一概念实际上在过去十多年中已被 学术文献广泛研究,大部分主要是为 信息聚合 而设计,并在 支付依赖于世界未来状态(例如预测市场)的市场中实施。
最受欢迎的 AMM 是 对数市场评分规则,该规则于2002年开发,并用于大多数预测市场(例如 Augur V1 和 Gnosis)。还存在其他多种针对信息聚合的 AMM 方法,例如 贝叶斯市场做市商(通常适合二元市场)和 动态合伙市场做市商(通常用于赛马)。
虽然 Uniswap 实际上是一个 AMM,但我们可以更具体地称之为它。因为 Uniswap 做市商使用了“常数乘积做市商”,将在下面进一步讨论,我们可以将这类 AMMs 称为 常数函数做市商。
在谈论 CFMMs 时,“ 绑定曲线” 这一术语也很常见,但这样说是不正确的。绑定曲线定义了 价格 和代币 供应 之间的关系,而 CFMMs 定义了 两个或更多代币 之间的关系。事实上,这一术语的创造者表明 “绑定曲线” 实际上是指用于“结合在一起的策展社区”中的概念。
最后,通常会听到算法借贷协议如 Compound 被称为自动市场做市商。我认为这些算法市场利用了 一种 AMM,这种 AMM 不是 CFMM,因为利率函数是 动态 基于利用率,而目标并不是保持利率不变。
CFMMs 是第一类专门应用于现实金融市场的 AMMs。它们是由加密社区设计的,用于构建 数字资产的去中心化交易所,基于一种函数,该函数根据两个或更多资产的可用数量建立一组预定义的价格。与传统的订单簿交易所不同,交易者是对着资产池进行交易,而不是特定的交易对象。
术语 “常数函数” 指的是任何交易都必须以这样的方式改变储备,使这些储备的乘积保持不变(即等于一个常数)。
CFMMs 通常有三种参与者:
CFMMs 通常用于二级市场交易,因此,通过套利,它们通常能准确反映参考市场中单个资产的价格。例如,如果 CFMM 价格低于参考市场价格,套利者将在 CFMM 买入资产,并在基于订单簿的交易所以赚取利润的方式卖出。
常数乘积做市商,由 Uniswap 首次实现,满足以下方程:
其中 R_α 和 R_β 是每种资产的储备,γ 是交易费用。以交易任意数量的任一资产必须以这样的方式改变储备,使得当费用为零时,乘积 R_α*R_β 保持不变等于常数 k。这通常简化为 x*y=k 的形式,其中 x 和 y 是每种资产的储备。在实际操作中,由于 Uniswap 收取 0.3% 的交易费用并将其增加到储备中,每笔交易实际上会 增加 k。
常数乘积函数在绘制两个资产时形成一个 双曲线,具有良好的属性,即在价格接近无穷大时,总是拥有流动性。
常数和做市商是常数函数做市商的相对简单的实现,满足以下方程:
其中 R_i 是每种资产的储备,k 是一个常数。虽然这个函数产生“零滑点”,但它不提供无限流动性,因此可能不适合作为去中心化交易所的单独实现。实际上,如果储备代币的参考相对价格不等于 1,任何套利者都会始终耗尽其中一个储备。
常数和函数在绘制两个资产时形成 直线,得出方程 x+y=k。
常数均值做市商是常数乘积做市商的推广,允许多于两个资产并且权重不局限于 50/50。首次由 Balancer 引入,并在没有费用的情况下满足以下方程:
其中 R 是每种资产的 储备,W 是每种资产的 权重,k 是 常数。换句话说,在没有费用的情况下,常数均值市场确保储备的 加权几何均值 保持不变。
来源: Balancer白皮书
例如,三个资产的等权重投资组合的函数将是 (x*y*z)^(1/3) = k
有几个项目使用混合函数以基于被交易资产的特性获取所需的属性。
Curve(亦称 Stableswap)深刻认识到,如果基础资产的价格相对稳定(例如,两种以美元计价的稳定币),那么可以减少函数中的滑点。它使用常数和恒定乘积的混合,得出了下面相当复杂的函数:
其中 x 是每种资产的储备,n 是资产数量,D 是不变量,表示储备中的价值,A 是“放大系数”,这是一个 可调常数,提供类似于杠杆的效果,并影响流动性提供者的资产价格盈利区间(即资产波动性越大,A 应该越高)。
在资产组合平衡时,该函数表现为常数和,而随着资产组合变得不平衡,它则向 常数乘积 移动。实际上,该函数看起来像是一个“放大”的双曲线。
来源:Curve白皮书
Shell Protocol 也具有类似的目标,但采取不同的方法。它与 Curve 类似,滑点针对稳定币进行了优化,并且与 Balancer 类似,池代币是加权的资产篮子,但它与两者的不同在于,它使用多种可调参数。它使用以下函数:
来源:Shell白皮书
其中 U(x) 可以解释为由盈利函数 G(x) 和损失函数 F(x) 组成的效用函数;而 x 是每种资产的储备 . 实际上,池平衡时,这表现为 常数和 ,但随着池在每种资产的权重超出指定阈值,持续引入更多的滑点。该设计确保池根据每种资产的预设权重保持平衡。
在传统交易所工作流程中,做市商需要创建订单,订单需要在交易所发布,市场接受者需要浏览订单,而做市商需要等待订单被填满。由于这一匹配过程,某些订单可能需要很长时间才能被执行,甚至可能完全未被填充。通过克服一个被称为 需求吻合 的经济问题,CFMMs 使得交易能够立即发生,这对某些用例可能很重要(例如,由于流动性不足而难以进行市场交易的游戏内物品)。
在基于订单簿的交易所中启动流动性是一个极其繁琐和昂贵的过程。通常,交易所必须找到做市商,要他们为定价和发布订单编写定制代码,并且往往直接提供用于交易的账户和资金。交易所通常不得不通过运行内部交易台并进行控制,以确保他们不会抢先交易顾客来处理某些执行。或者,创始人通常会将自己的资产用自定义的 Python 脚本进行流动性提供,并同时在其他交易所对冲他们的风险。如果 “ 德尔塔中性” 做市商的任务也很艰巨,因为如果没有自然的买家或卖家,要找到对冲其账簿的资产方式通常是不现实的。
因为 CFMMs 鼓励被动市场参与者将他们的资产借给池,所以它们使流动性提供变得容易一个数量级。例如,Synthetix 能够利用 Uniswap 启动其 sETH 流动性池,为用户在交易所开始交易提供了一个更方便的方式。
CFMMs 提供测量资产价格的能力,而无须使用中央第三方,从而解决了一个通常被称为 oracle 问题。与 CFMMs 交互的代理被激励去正确报告资产价格,因此去中心化交易所成为一个不错的 链上价格 oracle,其他智能合约可以将其作为真相来源查询。
Uniswap v2 通过在每个块的首次交易 之前 测量和记录价格,加强了这一原始机制,使价格比在一个区块内的价格更难以操纵。
路径依赖,简而言之,就是“历史重要”。基于订单簿的交易所有一个路径依赖的价格发现过程,其中资产价格依赖于参与者的行为反应。这在传统市场和中心化加密交易所中都显而易见,其中资产价格受订单簿深度、买方或卖方流动性、交易历史和私人信息等因素的影响。
CFMMs 在很大程度上是路径独立的(假设费用最小),这意味着,任何两份数量的价格仅仅依赖于这些数量 而不依赖于 它们之间的 路径。这提供了两个重要好处:
滑点指的是价格往往会随着交易者吸收流动性而向不利方向移动——交易越大,滑点越大。CFMMs 会产生较大的滑点成本,因此更适合较小的订单规模。
为 CFMM 提供流动性很简单,但带来一些复杂的金融风险( 非永久性损失,短期波动性,长期波动性/交易量相关性等)。
例如,Uniswap 的收益曲线是凹形的,意味着流动性提供者在某个价格范围内盈利,而在价格大幅波动时将遭受亏损:
来源: AlfaBlok
理想情况下,我们希望在承担风险时得到“ 凸性”,这意味着在风险光谱的两侧都有上行潜力。这种收益结构表明,流动性提供者应该主动监控流动池的变化,并快速采取行动以预防重大损失。
Curve 和 Shell 已展示出存在一种设计空间,针对特定类型的数字资产定制常数函数。
因此,我认为我们将拥有多种针对资产类型设计的 CFMMs,除了稳定币,还包括衍生品(例如 抵押选项)和证券代币(例如 房地产)。
这些 CFMMs 将拥有最佳反映其各自资产特性的价格函数,从而减少滑点并提高交易效率。
这一属性意味着做市商应该根据市场的 活动量 调整其定价响应的 弹性。流动性敏感性是可取的,因为它在直观上与人们希望市场运作的方式一致:固定规模的投资在流动性市场中对价格的影响 更小,而在流动性不足的市场中则影响更大。
目前 CFMM 的流动性敏感性仅限于价格(即流动性池越大,价格滑点越低),但还有其他维度可以是动态的。
例如,固定的流动性提供者费用是 不 有流动性敏感性的,因为它 在不同规模中是相同的(即 0.3% 无论流动性池的规模大小)。
一个替代方法可能是在流动性较低的情况下增加 LP 费用,以激励 LP 进口资产(例如,在低于某一流动性阈值的情况下收取 0.5%的费用,之后 0.3%)。
另一种方法可能是在市场启动之初降低 LP 费用,以鼓励交易量,同时随着市场的发展增加费用。尽管较低的 LP 费用可能会增加交易量,但也可能会抑制流动性。一个有趣的研究领域是分析权衡交易激励与流动性激励的利润最大利润 LP 费用。
此外,流动性提供者费用还可以基于流动性外的其他因素。例如,可以根据历史波动性调整 LP 费用,从而产生一个随机的定价机制,并为 CFMMs 增添“波动性敏感性”这项额外好处。
虽然迄今为止 most的常数函数做市商主要用于二级市场交易,但它们也可以用于启动主要市场资产发行。CFMMs 使发券者能够高效地发行既有实物又有数字本土资产,并同时捕捉二级市场的好处,同时改善消费者的流动性和价格发现。
这一概念由 Unisocks 首创,其创建的代币使持有人享有一双限量版袜子的实物配额。创建了 500 个 $SOCKS 代币并存入一个 Uniswap 流动性池中,当 ETH 交易在 200 美元时,这将在第一双袜子时产生 14 美元的地板价格,而第 499 双约为 350,000 美元。 Saint Fame 进一步确立了这一概念,通过销售 T 恤,Zora 泛化了这一概念,为限量版商品创建了市场,我期待看到更多项目使用 CFMMs 来实现这一用例。
有趣的是,这让我们回到了 AMMs 的最初用例,该用例是信息引导,这次它是有关资产价格而非事件发生概率的!
常数函数做市商是金融市场的一项基础创新,推动了有关自动化做市商的新兴领域的学术研究。
我们在常数函数做市商的演变中还处于早期阶段,期待在未来几年内看到新设计和应用的出现。
非常感谢 Tom Schmidt , Tarun Chitra , Guillermo Angeris 和 Dan Robinson _ 对这篇文章的反馈。
你可以在这里关注我的 Twitter 这里 。
- 原文链接: medium.com/bollinger-inv...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!