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