在Balancer创建指数基金的新方式
在从组合池代币生成收益的同时,如何创建一个能轻松实现再平衡且无偿损失为零的指数基金。
问题陈述
自2020年10月以来,PowerPool团队一直致力于在Balancer创建指数基金。迄今为止,我们发布了五款主网产品,包括基于AMM的指数基金和稳定收益的结构化理财产品Yearn Lazy Ape。这些都是基于Balancer V1分叉上的新产品,我们只是进行了一些创新调整。比如,我们提高了使用池的流动性进行质押和元治理的能力,并推出了动态权重模型和重新绑定策略。
Balancer V2的推出构建了更加复杂且高效的解决方案,改变了整体格局,这是因为它不仅开创了可定制的AMM逻辑,创建了资产管理器,还提高了gas效率。
然而,无常损失(IL)仍然是在Balancer创建指数基金(可主动交易的一篮子代币)的主要问题。
市场波动对交易者和套利者来说有利可图,但流动性提供者却不太可能从中赚取收益。池的组成通过掉期不断变化,在池的价格与更广泛的市场价格之间不断平衡。套利者在改变其组成的同时会从池中提取一些价值。池中的代币越多,潜在的套利机会就越大。
试想一下:一个有4个代币的篮子有 N(N-1),即4*3 个可用的交易对,一个有11个代币的篮子则可以有 11*10=110个交易对。
通过再平衡的方式改变流动性池的组成会导致无常损失。无常损失在我们的社区中通常被称为“卖出赢家买入输家”,考虑到实际发生的情况,这并不奇怪:套利者再平衡流动性池,试图找到最大套利缺口,以实现利润最大化。为此,他们将“最便宜”的代币换成最“昂贵”的代币(根据外部市场和该AMM池内的价格差异界定)。
无常损失的可视化
让我们考虑一个假设的恒定产品ASSY池(AAVE 30%;SNX 25%;SUSHI 15%;YFI 30%)。我们在Balancer V1 cadCAD模型上创建了一个简单的套利代理,该模型使用外部市场价格来模拟2021年1月22日至2月8日观察期间的池行为,将外部市场价格数据的粒度设为5分钟。套利代理使用外部和内部市场价格计算12个交易对的套利缺口,优化交易规模以获得最有利可图的机会,并最终进行更新池余额的交易。
ASSY 基础代币的市场价格如下所示:
出于演示目的,我们在图1中添加了基于 swap_exact_amount_in 平衡器函数的 AAVE/YFI 价格。AAVE在观察期间显著增长(从200美元到500美元),YFI则在2.8万美元到3.2万美元之间保持相对平稳。 这导致以AAVE计的YFI价格大幅下跌(用1个YFI可以购买的AAVE数量原本多于150,现在却下降到75左右)。
观察期内AAVE和YFI在池中的余额如下:
我们可以看到AAVE不断地从池中购买(或移除),而YFI则被出售(或添加)到池中。这是每个代币余额行为与初始组合池之间的最终差异:
YFI余额增加最多,AAVE余额则明显减少。SUSHI余额在观察期间也有所增加,但在添加SNX时从池中部分移除。本实验是“卖出赢者买入输者问题”的简单演示,对应真实池中的链上数据。
由于无常损失的缘故,与等效的被动投资组合相比,流动性提供者在退出池时将获得更少的价值。这是AMM的一个普遍问题,研发人员试图使用不同的动态方法(权重、费用、虚拟余额等)消除或至少最小化无常损失。然而,减少无常损失并不是一件容易的事,尤其是当涉及到多代币池时。最近几个月,我们一直努力寻找在 Balancer上创建指数基金的机会,并找到了一种新方法。 我们的解决方案使“指数基金”一篮子代币在很大程度上不受无常损失的影响,这可以通过掉期采用简单的再平衡机制做到。
PowerPool 的“再平衡窗口”方式
鉴于平均历史波动率,基础代币的费用和可能收益几乎从未抵消无常损失。再加上无常损失本身的问题,我们得出以下结论:
对于流动性提供者而言,静态一篮子代币(无掉期)通常比可交易池更有利可图。
因为如果它是静态的,那么某些代币的任何重大增长都将被该指数基金价格完全捕获。
我们开始致力于研发一个简单的问题。那就是:在Balancer上启动静态一篮子代币的同时,我们如何确保能轻松实现按需再平衡。鉴于PowerPool的愿景是提供基于协议基本指标且具备积极管理功能的指数基金,因此通过掉期轻松实现再平衡是Balancer的最佳功能之一。
这个想法很简单:
除了在所谓的“再平衡窗口”中进行短暂的再平衡外,池中大部分时间都会禁用掉期。
因此,流动性提供者不会遭受无常损失,也不会从资产增长及其质押奖励中获得所有可能的资本收益(因为PowerPool指数基金使用基础代币来产生收益)。
它是如何工作的?
该池在Balancer上运行,并禁用掉期和单边流动性加入/退出。用户可以通过多资产存款/取款或PowerPool提供的ZAP*选项来增加/移除流动性。
我们在构建ZAP方面拥有丰富的经验,为Yearn Lazy Ape提供了最复杂的多层ZAP解决方案。
这个想法最有趣的部分是“再平衡窗口”操作的机制。该机制利用了我们的Power Agent系统(一个可以在满足某些条件时自动调用合约的系统)和先前开发的权重更改机制。这种池的再平衡算法如下:
池演化图
T0 -> T1 -> T2 -> T3(新T0)-> T4(新T1)-> T5(新T2)
T0 — 创建池。建立初始组合池,禁用掉期。权重决定加入和退出的平衡比率(所有流动性的加入和退出都是多资产)。
T1 — 设置新的池结构(每个代币的资本分配百分比)。它可以手动设置(使用文本DAO提议)或算法设置(使用协议的基本指标,在链上收集)
• 在启用掉期之前,矿池的控制器合约接收有关资产外部价格的信息(来自价格预言机),并使用该信息计算一组新的权重以反映池的当前组成。
• 同时,设置新池结构对应的目标权重。
• 启用掉期,矿池权重逐渐开始转向新目标。
T1-T2 — — 权重开始从初始值转移到新目标。一旦出现套利缺口,套利者便开始进行交易,根据新的权重增加和减少各种代币的余额。*
T2 — — 权重达到目标。
T3 — — 在必要时重复该过程,并开始新的再平衡窗口(T3等于“新的”T1)
*逐渐进行权重转移尽可能确保最大价值留在池中(因为存在竞争,套利者必须多次支付进入/退出(掉期)费用)。
此类具有“再平衡窗口”并使用 V2 资产管理器的资金池具有以下优势:
1. 用户可以将其资金分配到一个没有无常损失风险的指数基金,以捕捉基础代币的所有价格行为。
2. 此外,流动性提供者获得通过质押复合代币产生的奖励。
3. 套利者可以轻松地按需再平衡一篮子代币。虽然再平衡的成本仍然存在,但成本比原来的方法要少得多。
4. 这种方法可以构建算法更新的池(例如,基于一组链上指标每N天更新一次)。
我们计划将这种方法首次应用于我们的全新产品BSCDEFI。BSCDEFI是一种建立在Balancer V1 BSC分叉上的指数基金。它拥有超过200万美元的总锁定价值和禁用掉期。我们预计将在本月底启用“再平衡窗口”功能。
工作展望
最近我们创建了一个Python模型,它可以模拟“再平衡窗口”机制,应用于在 Balancer启动的任何一篮子代币。其研究范围包括确定再平衡的最佳时间、权重转移率、市场波动的影响、再平衡的成本、无常损失以及极端波动情况下该机制的压力测试。有关技术说明的结果将在下一篇文章中公布。