DODO 文档中心

📗 PMM算法

简介#

DODO使用Proactive Market Maker(PMM)算法为其各种服务提供流动性。

PMM是一种库存管理策略。当资产数量减少时,PMM算法会自动调高该资产的报价,以预期从市场购回缺失的库存。

一个简单的例子#

让我们通过一个简单的例子来说明PMM的工作原理。下面的例子数字并非精确,仅用于帮助您理解算法的工作原理。

Peter的老板给了他100美元和10个苹果。市场上有人在买卖苹果,Peter必须用手里的库存满足这些人的买卖需求。从技术上讲,这被称为“为苹果市场提供流动性”。

老板告诉Peter苹果大约每个10美元,然后回家休息,留下Peter等待顾客。有人从Peter那里买了一个苹果,Peter决定稍微提高价格,以12美元卖给他。其中的2美元被称为“滑点”。此时,Peter的库存是112美元和9个苹果。增加了12美元,减少了1个苹果。

Peter自动下单以11美元的价格买入一个苹果(略高于市价),希望尽快买回一个苹果以弥补缺口。不久后,Peter以11美元买回了苹果,使Peter手头有101美元和10个苹果,净增加了1美元和0个苹果。尽管多花了1美元,但通过滑点获得的额外2美元足够弥补,Peter帮助老板实现了净利润1美元。

PMM算法就像Peter在上述情况下所做的,而您就是Peter的老板。Peter所做的(简而言之)是在积极调整价格的同时提供流动性,以保持良好的库存。

价格曲线#

为了更好地解释PMM如何管理库存,我们需要介绍Price Curve Simulator。这个工具可以让您了解当库存变化时,资产价格是如何变化的。

这个深度图由两个大致呈三角形(虽然不一定是对称的)形状组成,左侧代表买单,右侧代表卖单,沿价格x轴和深度y轴。这两个三角形可以通过两个参数进行数学描述,中间价格和斜率,或者说三角形的“陡峭程度”。

如果调整参数kk,您会发现:值越大,曲线越陡,价格对库存数量的敏感性越高,交易滑点也越大。值越小,曲线越平滑,价格对库存的敏感性也越低,同时产生的滑点也较小。

这个参数kk,我们称之为滑点因子,是PMM算法的关键,使市场制造商可以将流动性集中在某个价格附近。它越小,流动性越集中,交易者交易的价格越好。

使用智能合约提供流动性#

DODO已经实现了PMM算法的EVM智能合约版本,其中不存在订单的概念,而是由流动性的供应和消耗来代替。