使用 Uniswap 这样的模型对期权进行定价可能不是流动性提供者的最佳选择。
原文标题:《深度 | 为什么通用 AMM 模型不适用于期权交易定价?》
撰文:Aerhy
翻译:阿瓜
划重点:
- 期权定价取决于各种因素 (如到期时间和隐含波动率等),在大多数情况下,它们往往为零(指未行权或行权价不合条件)。
- 通用 AMMs (如 Uniswap)的价格发现机制通常依赖于交易量,在一个流动性市场中,资产的价格应该由市场力量定价。然而,在本篇文章发表时,DeFi 期权市场仍处于萌芽状态,期权可能不会频繁更新,这会使价格过时,给期权池的流动性提供者带来巨大的无常损失。
- 这篇文章探讨了 Uniswap v1 背后的数学原理,并得出结论——将其作为期权代币的交易场所可能不是最合适的。
通用 AMM 和无常损失
通用 AMM,如 Uniswap v1 和 v2,是 DeFi 中最重要的构件之一。
它的模型能够将价格发现和做市结合起来,这使得即使是流动性最差的资产,也会有市场和发展。
它精心设计了激励机制,鼓励不同的参与者作为卖家、买家和流动性提供者参与其中。事实上,流动性提供者是一个在系统中执行重要角色的参与者。这感觉就像是传统做市商的抽象。这种相似性背后的原因是,AMM 不需要持续的账本管理和订单填充,用户就可以对其资金进行交易。有些人可能会说,那些不是同样的用户,也不是执行同样的业务。但归根结底,两个参与者(Uniswap 中的流动性提供者和传统金融中的做市商)都是在引导一个市场。
目前,流动性提供者要在资金池的两边加入等量的资金作为流动性,作为回报,期望收取资金池中发生的所有交易的费用,并拿回自己的投资本金。
在 DeFi 中,有些用户一直将提供流动性的活动理解为一种「被动收入投资」,即提供资产,持有资金的金额,并收取与初始本金成正比的费用。虽然这对于稳定资产的池子(比如 DAI:USDC)可能是正确的,但对于某些场景下的波动性资产的池子(比如 USDC:ETH)并不完全正确。
有一种现象被称为无常损失,Impermanent loss (IL) 是我们用来指在波动性资产对上增加 Uniswap 的流动性与只持有两种资产相比的负收益的表达方式。
它描述了一种情况,即寻求被动收入的流动性提供者的盈利能力受到了负面影响。如果添加的代币的价格最终能回到它们加入流动性池时的价格,那么无常损失是不存在的或很小的。但是,如果价格情况与最初的价格情况不同,与只持有资产的情况相比,提取的金额可能低于后者的总额。
这意味着,只有当流动性提供者(LP)在与最初使用的价格情况不同的情况下移除流动性时,才会出现无常损失。如果不移除,而等待一个更有机会的时机撤出,损失就不会发生(impermanent loss)。作为对比,在传统金融上,我们可以认为这是一个「卖出永续跨期」的头寸。之所以说是永续,是因为这个头寸没有到期日,LP 可以持有多久就持有多久。
这意味着,即使在市场波动的情况下,LP 以其进入时的价格水平去除流动性,LP 将在这一期间从费用中获利,而不会遭受无常损失。
有些人可能会说,他们期望交易费能弥补他们的损失。这有可能发生,但只是在一定程度上,这取决于撤资时的价格,以及在提供流动性期间,池子里的流动性有多高,发生了多少交易。所以我们可以理解,对于流动性提供者来说,最有利可图的组合是一个资产不波动、每天有很多交易的池子。同时也要考虑到,市场定义了资产的定价,每当 Uniswap 中的代币定价与市场价格发生偏离时,套利者就会利用这个套利机会,在 Uniswap 中进行交易,帮助引导 Uniswap 的价格接近代币的市场价格。
模拟收益
为了分析 Uniswap v2 上流动性提供活动的收益,应考虑以下变量:
在提供流动性的时刻,交易对的现货价格
撤资时的交易对现货价格
池中的交易量
池中的资产量
从交易中产生的费用总额将分配给 LP
恒定常数
constant_product (k) 因子是用来给交易定价的一种方式,并保持池子两边价值的平衡。当忽略费用时,系数的计算方法是:
定价
Uniswap 使用以下定价公式来定义流动性池中每项资产的交易价值。
将公式 1 和 2 放在一起,我们最终得到以下结果:
需要强调的是,在另一个 LP 向池子增加流动性之前,恒定常数用于交易的资产定价。当这种情况发生时,恒定常数会随着新的池子余额而更新,并用于后续交易的定价。
例如:
初始池有 100 ETH 和 10,000 DAI。因此,constant_product (k) = 100 * 10,000 = 1,000,000。
如果 1 天后,John 决定用 2 ETH 和 2,000 DAI 为池子增加流动性(池子里没有交易),那么由于流动性池子的两边都增加了,所以需要更新恒定常数。因此,新的 constant_product (k) 将用于以下交易的定价:k = (100 + 2) * (10,000 + 2,000) = 102 * 12,000 = 1,224,000。
考虑到 Uniswap 的 AMM 要求流动性提供者在每个交易对的充值方面保持 50/50 的比例,公式 2 决定了资产的定价取决于每个池中发生的交易量。这意味着,在池中没有发生交易的情况下(池中发生的唯一活动是流动性提供),eth_price 将保持与池创建时相同。换句话说,只有在有交易活动时才会更新价格。
当增加流动性时,资产的定价与想从池中购买 1 个资产时的定价发生了一些不同,我们可以看到下面的情况。
例如,让我们假设 Rob 想要为一个池子增加一对 ETH:DAI 的流动性。他想增加 1 个 ETH,但他需要提供多少 DAI 代币?当前的池子余额是 95 个 ETH 和 10,529.49 个 DAI。按照公式 5,他需要提供的代币数量 = 1 * (10,529 / 95) = 110.87 DAI
提供流动性后,新的资金池余额为:
95 + 1 ETH = 96 ETH10,529 DAI + 110.87 DAI = 10,640.36 DAI新的 k = 96 * 10,640.36 = 1,021,169.85
流动性提供者收益
要理解 Uniswap 的 AMM,以及进入池子时代币的初始价格和撤出流动性时代币的价格之间的区别,还有一个重要的概念是 LP 代币。
LP 代币转化为每个流动性提供者在池子里有多少钱,进而每个 LP 将从池子里产生的总费用中获得对应收益。
无常损失
既然介绍了关键概念,我们来分析一下流动性提供者遇到无常损失的场景。
Babi 通过增加 20k 的总流动性(100ETH 和 10000DAI)来创建一个 ETH:DAI 池。作为第一个流动性提供者,根据公式 6,她共获得 1000LP。
LP_tokens_amount = sqrt (100 * 10,000) - 0.00000000000000001 = 1,000LP 份额。
假设在创建池子后,有 9 笔交易发生,如下所示--n 指的是池子创建后的每个时期。
考虑以下交易类型:
exact_output_x: 当用户想以任何价格购买 1 个 ETH 时。
exact_output_y: 当用户想用任意数量的 ETH 购买 1 个 DAI 时。
exact_input_x: 当用户想花一个准确的 ETH 数量来购买等值的 DAI 时。
exact_input_y: 当用户想花一个准确的 DAI 数量来购买等值的 ETH 时。
1,000,000 的产品常数 (k) 是上述交易定价机制的主要指导。它计算的是对资金池每一方的影响应该是什么,从而使这笔交易能够发生,并且在忽略费用的情况下仍然保持产品常数。现在我们来计算一下交易发生后,对池子每一方的影响是什么。
让我们来挖掘一下 n=1 时发生的交易
初始资金池余额 =100 ETH 和 10,000 DAI
Constant_product = 100 * 10,000 = 1,000,000
交易类型:exact_output_x → 交易者想准确地买入 1 个 ETH (所以他将从 eth_liquidity_pool 中删除 1 个 ETH)。
新的 eth_liquidity_pool = 100 - 1 = 99 ETH → 现在我们有了这个新的 ETH 池余额,那么新的 DAI 池余额是多少,因为池中会有大量的 DAI 代币涌入?
新的 DAI_liquidity_pool = constant_product / new eth_pool_balance = 1,000,000 / 99 = 10,101.01。
由池中 DAI 的流入,我们可以假设如下公式。
eth_price = (10,101.01-10,000)/1 = 101.01 → 所以在 n=1 的交易中,交易者买入 ETH 的价格是 101.01。
最终资金池余额:99 个 ETH 和 10.101.01 个 DAI。
我们可以在下面的表中看到发生在 Uniswap 的 AMM,考虑到 1,000,000 的恒定产品和交易后的新池余额。我们也可以直观地看到价格与每笔交易收取的 0.3% 的费用。
交易发生后,最终的池子概况是:
现在我们假设 Tom (user10_Add_1ETH)想在 n=10 的时刻增加 1 个 ETH 的流动性。由于 AMM 要求 LP 们提供每边价值相同的一对代币,所以 Tom 必须提供与 1ETH 价值相同的 DAI 数量,这个价格取自前面介绍的公式 5。
所以 Tom 必须提供 1 个 ETH。
DAI_amount_to_provide = 1 * (10,529 / 95) = 110.87 DAI
由于新的流动性提供者进入池中,在新的 LP 进入池中之前,需要更新交易定价的恒定常数,新的 K = 96 * 10,640 = 1,021,170 元
就在 Tom 之后,其他 7 个 LP 在池子里提供流动性,按照 AMM 提供的公式 5 的定价,按照公式 7 获得相应的 LP 份额,具体如下。
我们先考虑以下给出的信息,以方便进行无常损失分析。
Tom 入池时的初始仓位是:1ETH 和 110.87DAI。
Tom (user10_Add_1ETH) 决定在 n = 17 之后的任何时刻将他们的代币从池中移除。
Tom 在池子里的 LP 是 Tom LP 代币 / total_LP_tokens = 10.53/1,284.30 = 0.008199 = 0.82%。
在 n = 17 之后,没有额外的流动性提供者进入池中,只发生了交易。
由于 ETH:DAI 池的交易量很大,我们可以认为 Uniswap 的定价机制反映了市场的真实定价,因为套利者会利用套利机会不断修正价格。
时间段 (n) 代表 AMM 中价格更新的每个时间段。
我们来比较一下,当他把资产放在钱包里,从池子里取出流动性的时候,他的资金会发生什么价格更新。
现在我们来比较一下,以上每种情况有什么不同。
将 Pintail 博文中的无常损失的公式应用到这种情况下,我们有:
从上面的模拟中我们可以得到的结论是,与在钱包中持有代币相比,在提供流动性时确实存在损失。当池子里的余额发生变化,每个代币的价格随着池子里的交易更新而变化时,就会发生这种情况。
需要强调的是,LP 提供者可能会从池中移除他的 LP。在这种情况下,汤姆在决定移除流动性的那一刻,移除了当前池子的 0.8%。由于此刻 Tom 想要移除流动性的池子相比添加流动性时的池子可能发生了变化,他的最终价格与他的初始价格不同。
这种现象也可以在下图中通过绘制价格变化图来观察。
费用影响
Uniswap 根据 LPs 在池中的参与情况,将所有交易的 0.3% 分配给 LPs。因此,池中发生的交易越多,LPs 获得的被动收入就越多。其中根据每个 LP 在池中所占的比例进行相应的分配,如前所述。
我们可以看到,由于 Uniswap 的 AMM 的功能是维持两个流动性池子的乘积,也就是所谓的 constant_product,与交易前的乘积相同(不包括费用),所以发生了无常的亏损--我们可以说,AMM 是一个复古的价格尺度,确保双方在价值上的权重相同(50%/50% 的比例)。
需要强调的是,Uniswap 中的代币价格是随着池子中发生的交易而更新的,这在很大程度上依赖于套利者在比较 Uniswap 价格和其他交易所时找到有利可图的套利机会的能力。因此,我们可以说 Uniswap 的 AMM 的定价完全由池中发生的交易决定。
虽然这种模式可能对非波动性资产和高波动性的交易池有很好的适应性,但它可能并不适合所有种类的资产。
期权会怎样呢?
期权池
在 DeFi 期权中(这里举例 Pods 期权),用户必须锁定 100% 的抵押品铸造期权代币。期权代币代表了买方的权利和卖方的义务。但是,由于卖方前期锁定了抵押物,所以没有什么可执行的,智能合约掌握卖方义务。
铸成期权后,用户可以选择将其卖出,或者为池子提供流动性。由于 Uniswap 是一个去中心化的协议,任何人都可以发起任何一对资产的池子,用户可以直接在 Uniswap 池子中出售每个系列的期权代币。
a) 假设该期权的市场是最有流动性的,因此,AMM 的价格是正确的,通过纯粹的套利力量,代表了一个公平的,最新的价格。
或者
b) 仲裁池价格,如果池子对期权定价错误,有机会缩小差距。
遗憾的是,DeFi 才刚刚开始,DeFi 期权也才刚刚开始。这意味着,DeFi 期权市场不一定能够随时修正 Uniswap 的价格。这意味着,如果一个池子长期停留在没有交易的情况下,将会有很大的套利机会。虽然这对交易者来说可能是好事,但对流动性提供者来说可能不是那么好。
但是怎么知道一个期权的价格是错误的呢?
期权的定价
传统金融中的定价方案有几种模型,最广为人知的叫做 Black-Scholes。 Black-Scholes 公式如下:
Black-Scholes 是一种为期权合约定价的数学模型,这种模型的假设之一是,资产的波动率在期权有效期内保持不变(这一点并不适用--尤其是在加密货币中)。该公式只适用于欧式期权(以及非派息资产的美式看涨期权)。
所有的方法都在某种程度上试图计算出期权到期的概率是多少,如果真的到期了,那现在的价值是多少。为了计算这样的理论价格,作者将标的资产的现货价格、到期时间、隐含波动率、无风险利率和行权价格等因素纳入其中。
期权的到期时间也就是期权的时间价值,也是使用 Black-Scholes 模型时影响定价的重要因素。
期权距离到期日越近,其内在价值就越趋于放大,也就是说,如果期权在接近到期日时处于价内,其价值就越高,因为期权被行权并获利的概率很高,这就使得期权的定价更昂贵。当期权远离到期日时,同样的逻辑也会发生:期权被执行的概率很低,这意味着它的价值接近于无价值(零)。你可以在下面看到关于这个概念的更多细节:
在到期时,期权价格要么在价内,要么在价外。大多数情况下,期权最终都是价外,因此,在到期时,期权的价值为零。
这意味着,如果用户向期权池提供流动性,而他们最终处于价外,用户可以提取更大比例的期权代币。届时,期权代币的价值可能为零。他们没有「铸币」的期权,也没有抵押品可以提取。当考虑到无常损失时,在这种情况下,我们就必须考虑到该交易对的其中一个资产在到期时是没有价值的。
如果在 Uniswap 的定价上不能输入这些因素,那么它的期权价格会怎样呢?
通用 AMM 的期权交易
每个交易者都会按照自己认为合适的方式对待这些公式。但他们中的大多数人都有一些计算期权价格的方法,可以考虑到影响期权价格的所有因素。交易者很可能会找到套利的机会,但流动性提供者最终可能会因为将其资产分配给了潜在的错误定价交易而导致损失。
出于这个原因,使用 Uniswap 这样的模型对期权进行定价可能不是流动性提供者的最佳选择。