📋

PMM算法概览

主动做市商算法

DODO 使用独创的 PMM 算法提供流动性。
PMM 是一个库存管理策略。当某种资产数量变少时,PMM 算法会自动调高这种资产的报价,以期待从市场上买回缺少的库存。

一个简单的例子

接下来我们将用一个简单的例子来说明 PMM 如何运行。(下面的例子数字并不准确,只是为了帮助你理解算法的工作原理)
Peter 的老板给了他 100 美元和 10 个苹果,市场上有人买苹果,也有人卖苹果,Peter 要用手中的库存满足这些人的买卖需求。用更专业的话来讲,这是 “为苹果市场提供流动性”。
老板告诉 Peter 苹果大约 10 美元一个,然后就回家休息了,只留下 Peter 在市场上等待用户上面。有人向 Peter 买苹果,Peter 略加了一点价格,以 12 美元卖给了他。这 2 美元就是所谓的 “滑点”。此时 Peter 的库存为 112 美元和 9 个苹果。即 + 12 美元 -1 苹果。
然而苹果库存少了一个并不是什么好事,Peter 不知道老板什么时候会要求归还库存,这个时候还不上可就糟糕了。Peter 会自动以 11 美元(略高于市场价)挂单,期望可以尽快买回一个苹果,把缺口补上。很快,Peter 以 11 美元买回了苹果,这时 Peter 的库存为 101 美元和 10 个苹果,即 + 1 美元 0 苹果。虽然多花了 1 美元,但之前通过滑点多收到的 2 美元足够弥补,Peter 帮老板净赚了 1 美元。
PMM 算法就是上述行为里的 Peter,而你就是 Peter 的老板。Peter 所做的事情概括起来就是:通过主动调整价格,在提供流动性的同时维护库存处于健康水平。

价格曲线

为了更好地描述 PMM 如何管理库存,我们需要引入价格曲线这一工具。它准确地表现了,某种资产库存减少时价格如何变化。
点击进入价格曲线模拟器
【横坐标从 100% 到 1%,表示库存存量,纵坐标价格,可以设定参数并鼠标滑动】
如果你调整参数
kk
,就会发现:
kk
越大,曲线越陡峭,价格对库存数量越敏感,交易滑点越大。
kk
越小,曲线越平滑,价格对库存数量越不敏感,交易滑点越小。
我们称
kk
为滑点系数,这一参数正是 PMM 算法的关键,它使得做市商可以将流动性集中在某个价格附近。
kk
越小,流动性越集中,交易者的成交价越好。

使用智能合约提供流动性

DODO 已经实现了 EVM 智能合约版本的 PMM 算法,在智能合约中不存在订单这个概念,取而代之的是流动性的供给和消耗。
将资金放进智能合约里并设置参数,就实现了流动性的供给。直接与智能合约交易资产,就完成了流动性的消耗。这个过程中,资金池作为所有用户的对手方存在。
🚧 未来 DODO 会将 PMM 算法部署在更多虚拟机环境中。

手续费

当前版本中,交易手续费使用交易者收到的资产类别。举例来说,如果用户用 ETH 买 USDT,则支付 USDT 给资金池作为手续费。如果用户用 USDT 买 ETH,则支付 ETH 给资金池作为手续费。

通用的流动性算法

PMM 是一个非常灵活且通用的流动性算法,通过调节参数,可以满足各种做市需求。
我们会在后续篇章中介绍具体使用案例,展示 PMM 算法的灵活性,也希望能帮读者找到契合自己需求的使用方式。