Uniswap V3 中的流动性配置提出了一个随机最优控制问题,具有明确定义的效用函数来最大化。本文介绍了一种智能流动性供应的创新框架,该框架结合了基于代理的建模和强化学习。我们的框架为优化流动性供应策略提供了强大且适应性强的解决方案。 Uniswap V3 模型模仿现实世界的市场条件,而基于代理的模型 (ABM) 创建一个模拟代理与 Uniswap V3 池交互的环境。使用深度确定性策略梯度(DDPG)训练的强化学习代理可以学习最佳策略,展示了机器学习在增强 DeFi 参与方面的潜力。该方法旨在提高流动性提供商的盈利能力和对 CFMM 市场的了解。
在我之前关于做市的文章我们探讨了传统金融市场中的做市机制和策略。基于这些见解,本文介绍了 Uniswap V3 背景下智能流动性供应的创新框架。正如我们之前的研究中提到的,我们的目标是加深我们对去中心化金融( DeFi)市场动态和流动性管理的理解,特别是通过开发智能流动性供应框架。
去中心化金融(DeFi)取得了显着的增长,推出了可供全球受众使用的创新金融产品和服务。 Uniswap V3 处于这一创新的最前沿,以其集中的流动性特征彻底改变了流动性供应。然而,这一进步给流动性提供者带来了复杂的决策挑战。本文介绍了一个旨在应对这些挑战的综合框架,为研究和优化流动性供给策略提供了模拟环境。
我们的框架包含三个关键组件:Uniswap V3 模型、基于代理的模型 (ABM) 和强化学习代理。 Uniswap V3 模型提供了池的表示,支持部署以及与代币和池的交互。 ABM 通过模拟代理交互和市场动态引入了复杂性,为策略评估创建了丰富的环境。在此环境中运行的强化学习代理采用深度确定性策略梯度方法来学习和调整策略,旨在实现流动性供应的最佳性能。
本研究旨在开发一种使用强化学习(RL)的智能流动性供应(ILP)机制,以自主管理和优化 Uniswap V3 环境中的流动性。该机制寻求最大化效用函数,考虑所赚取的费用、无常损失以及基于流动性提供者偏好的其他指标,同时适应 CFMM 市场的复杂动态。
在强化学习框架中,流动性供应问题被表述为马尔可夫决策过程(MDP)。 MDP 由状态、操作和奖励组成。
状态:状态代表当前的市场状况,包括资产价格、交易量和其他相关变量。
行动:行动对应于流动性提供者做出的决策,例如调整流动性分配、重新平衡投资组合等。
奖励:奖励根据流动性提供者的目标函数、偏好和约束来量化结果的可取性。对于期望的结果(例如,高回报),奖励可以是正的;对于不期望的结果(例如,高风险或表现不佳),奖励可以是负的。
目标函数:目标函数代表流动性提供者期望的结果,可以是最大化回报、最小化风险或实现两者之间的特定权衡等因素的组合。限制可以包括流动性分配、资本利用、风险承受水平的限制或流动性提供者定义的其他限制。
强化学习训练是一个迭代过程,代理根据反馈不断更新其策略。随着时间的推移,代理从经验中学习并完善其决策,逐渐收敛到更优化的流动性供给策略。
一旦 RL 代理经过训练,就可以使用历史数据或模拟环境对其进行测试和评估,以根据流动性提供者的目标函数和约束来评估其性能。代理的绩效可以使用回报、风险度量或其他相关绩效指标等指标来衡量。
通过应用RL算法,流动性供给机制可以学习并适应不断变化的市场条件,识别最优的流动性供给策略,并平衡流动性提供者指定的约束和偏好。 RL 使该机制能够找到最大化流动性提供者的目标函数的解决方案,同时自主、动态地考虑各种权衡和约束。
该框架由三个主要组成部分组成:
用 Python 实现的 Uniswap V3 模型提供了 Uniswap V3 协议的详细功能模拟,捕捉其微妙的机制,并为用户提供了与协议交互的全面工具集。 UniswapV3_Model 类处理代币和矿池的部署、初始化矿池,并为矿池操作和矿池状态检索提供接口。
Uniswap 模型是智能流动性供应框架的基础,封装了 Uniswap V3 的核心机制。它利用 Uniswap V3-Core 编译的智能合约,使用 Brownie 部署在本地 Ganache 环境中,以创建逼真的交互式模拟。
该框架与基于Python的智能合约开发和测试框架Brownie集成,用于编译和部署Uniswap V3智能合约。然后将这些合约部署到本地 Ganache 环境,为测试和开发提供沙箱。这种设置确保用户无需真实资产或网络交易即可与 Uniswap 环境进行交互,从而培育安全且受控的实验空间。
用于模拟 Uniswap V3 环境,定义代理策略以纳入 Uniswap 市场参与者的动态。使用不同类型的代理来模拟动态 Uniswap 环境
模拟 Uniswap V3 生态系统中各个代理的操作和交互。通过对不同参与者的复杂行为进行建模,ABM 提供了 Uniswap V3 动态环境的综合接口,从而能够分析和优化流动性供给策略。
ABM 包括各种代理类型,每种代理类型代表 Uniswap V3 生态系统中的特定角色。两个主要代理是流动性提供者代理和交换器代理,它们分别与 Uniswap 池交互以提供流动性并执行代币交换。这些代理的行为由agents_policies.py
文件中定义的策略决定,确保它们的行为符合现实世界的策略和市场条件。
流动性提供者代理:该代理在 Uniswap 池中添加和删除流动性。它遵循一系列政策,这些政策根据当前市场状况和代理商的偏好来决定其行动。
Swapper 代理: Swapper 代理利用价格差异和套利机会在 Uniswap 池内执行代币交换。其行为以评估交易潜在盈利能力的政策为指导,考虑交易费用和滑点。
netlist.py
文件是 ABM 的核心,用于配置代理之间以及与 Uniswap 池之间的交互方式。它定义了代理、策略和模拟环境之间的关系。
SimEngine.py
、 SimStateBase.py
和SimStrategyBase.py
模块提供运行模拟的基础元素。 SimEngine 协调模拟、管理时间流和代理操作的执行。 SimStateBase 维护模拟的当前状态,存储有关代理持有量、池状态和其他相关变量的数据。 SimStrategyBase 定义了在整个模拟过程中指导代理行为的总体策略。
强化学习 (RL) 代理是智能流动性供应框架的关键组件,旨在通过 Uniswap 模型(基于代理的模型)与 Uniswap V3 生态系统进行交互。本节深入研究 RL Agent、其环境以及用于训练的 DDPG(深度确定性策略梯度)算法。
RL Agent 在自定义环境DiscreteSimpleEnv
中运行,该环境与 Uniswap 模型和基于代理的模型交互以模拟 DeFi 市场。这种环境有利于代理与 Uniswap 池的交互,允许其添加和删除流动性,并观察其行为的后果。 RL 代理与 Uniswap 模型和 ABM 交互,以模拟 Uniswap V3 中的真实流动性供应。它选择导致增加或减少流动性的操作,并使用 ABM 中定义的策略和模拟配置,确保真实的交互。
状态空间:环境的状态空间包括当前价格、流动性、费用增长等各种市场指标。这些参数被标准化并在每个时间步提供给代理。
行动空间:代理的行动空间由代表向 Uniswap 池添加流动性的价格界限的连续值组成。这些操作会转化为与 Uniswap 池的交互,从而影响环境的状态。
奖励函数:奖励函数对于训练 RL Agent 至关重要。它考虑了费用收入、无常损失、投资组合价值和潜在的处罚,提供标量奖励信号来指导代理的学习过程。
DDPG Agent 是一种使用深度函数逼近器的无模型、离策略的 actor-critic 算法。它可以处理高维状态空间和连续动作空间,使其非常适合我们的 Uniswap V3 环境。
RL 代理利用 Uniswap 模型和基于代理的模型来模拟 Uniswap V3 中的真实流动性供应。它通过DiscreteSimpleEnv
与 Uniswap 池交互,执行导致增加或减少流动性的操作。代理的策略和模拟配置在 ABM 组件中定义,确保真实且连贯的动态环境。
训练和评估代理:代理经过一系列的训练,每个片段代表不同的市场场景(不同的池)。代理的绩效是根据其最大化回报同时最小化与流动性供应相关的风险的能力来评估的。智能流动性供应框架的有效性是通过评估强化学习(RL)代理的性能来评估的。
环境设置:为了评估 RL 代理,我们设置了一个专门的评估环境DiscreteSimpleEnvEval
,它扩展了基础环境DiscreteSimpleEnv
。该环境是为评估代理策略而定制的。
基线代理:在我们的评估设置中,我们将 RL 代理的性能与基线代理的性能进行比较。基线代理的行动由依赖于流动性池当前状态的基线策略决定。该智能体旨在为评估 RL 智能体的性能提供参考点。
训练
评估
矿池同步:目前,该框架并未完全捕获矿池的实时同步,这可能导致在对真实 Uniswap V3 动态进行建模时出现差异。未来的工作应侧重于整合更好的池同步机制,可能利用报价/位置数据或事件来增强真实性。
朴素的代理策略:当前框架中采用的代理策略相对简单和朴素。为了实现更准确的模拟,未来的迭代应该致力于定义更全面的代理策略。这些政策可以对各种类型的 Uniswap 代理进行建模,例如噪音交易者、知情交易者、零售流动性提供者和机构流动性提供者。或者,根据历史池数据训练的统计模型可以为代理策略提供更现实的行为信息。
稀疏观察空间:提供给代理的观察空间缺乏有关池状态的全面信息。为了提高决策能力,未来的增强功能应包括报价和位置数据,以及使代理能够更全面地了解池状态的工程功能。
有限的行动空间:代理的行动空间目前受到限制,流动性金额固定,价格范围有限。扩大行动空间以允许流动性提供更加灵活,以及每一步考虑多个头寸,可以提高模拟的保真度。
同步池:实现同步池的机制,可能使用报价/位置数据或事件,以在 Uniswap V3 环境中创建更真实的动态。
超参数调优: Actor/Critic 网络架构、alpha、beta、tau、批量大小、步骤、剧集、缩放参数(奖励、动作、观察空间)
全面的代理策略:定义更复杂的分析策略,准确地对各种 Uniswap 代理进行建模,或利用历史池数据训练的统计模型来告知代理行为。
信息丰富的观察空间:通过包含刻度和位置数据以及为代理提供池状态的全面视图的工程功能来增强观察空间。
改进的奖励函数:开发改进的奖励函数,考虑更广泛的因素,从而实现更有效的代理培训。
多个位置:不是在每个时间步都有固定预算的一个位置,而是实施一种更全面的机制,其中代理在模拟开始时分配一次预算,然后学习在后续步骤中最佳地使用该预算。
基线策略:定义更全面的基线策略来评估 RL 代理的性能
超参数调优:进一步细化和优化强化学习代理的超参数,以获得更好的训练性能。
使用其他 RL 代理进行实验:探索替代的 RL 代理模型,例如近端策略优化 (PPO) 或 Soft Actor-Critic (SAC),以确定它们是否在特定场景中提供优势。
多代理强化学习 (MARL):研究多代理强化学习技术的应用,这有利于对多个流动性提供者和交换者之间的交互进行建模。
在线学习:实施在线学习策略,使代理能够实时适应不断变化的市场条件,提供更具动态性和适应性的流动性供应解决方案。
在快速发展的去中心化金融(DeFi)领域,流动性供应在实现高效、安全的交易方面发挥着关键作用。 Uniswap V3 凭借其创新的集中流动性功能,突破了 DeFi 流动性管理的可能性界限。然而,在这个动态生态系统中优化流动性供应策略的复杂性需要创新的解决方案。
我们的智能流动性供应框架代表着在应对这些挑战方面向前迈出了重要一步。通过结合基于代理的建模和强化学习,我们为流动性提供者和市场参与者创建了一个强大的工具包。该框架提供了一个强大且适应性强的解决方案,用于优化流动性供应策略,重点是最大化效用函数,其中包括赚取的费用、减少无常损失以及根据个人偏好定制的其他指标。
Github:
也发布。