Try   HackMD

TWAMM 做市商的数学原理

最近,Paradigm 研究合伙人 Dave White、Dan Robinson 与 Uniswap 创始人 Hayden Adams 一起合作设计了一个全新的做市模型「时间加权平均做市商 TWAMM」(Time-Weighted Average Market Maker)。根据其发表文章介绍,TWAMM 可以在以太坊上有效地交易大额订单,工作原理是将长期大额订单分解为无限多个无限小的虚拟订单,在一定时间内使用嵌入式 AMM 平滑地执行这些交易。

关于 TWAMM 的虚拟交易所涉及的数学,Dave White 在文中并没有多费笔墨,只在最后给出了非常简单的数学结论,这对于理解 TWAMM 的数学原理非常不利。本文将重点对 TWAMM 的数学原理进行严格的论证和解释,至于 TWAMM 模型详细的设计原理,可以前往 Paradigm 官网查看:https://www.paradigm.xyz/2021/07/twamm/,本文不再做详述。

定义

假设 TWAMM 执行大额虚拟交易需要

N 个区块,出售
X
的池子以每区块
xrate
的速率出售,而出售
Y
的池子以每个区块
yrate
的速率出售。因此,在整个期间售出的
X
总量为
xin=Nxrate
,售出的
Y
总量为
yin=Nyrate

同时,我们将此时间段嵌入 AMM 的初始储备

xreserve
yreserve
分别表示为
x0=xammStart
以及
y0=yammStart

按照 TWAMM 的设计,大额订单是随着区块进行交易的,每个区块出售

xrate 得到
yout
,或者出售
yrate
得到
xout
,同时 AMM 会更新
xreserve
yreserve
的值,整个过程总共交易
N
次。

值得注意的是,AMM 的每个区块交易总是遵循恒定乘积做市。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

公式

首先,在执行第

n1 区块的交易后,我们假设此时 AMM
xreserve
yreserve
值分别为
xn1
yn1

接下来执行第

n 区块的交易,
XPool
YPool
分别向 AMM 输入
xrate
yrate
,命:

xn=xn1+xrate

yn=yn1+yrate

因为

xrate
yrate
非常微小,且区块的交易 AMM 遵循恒定乘积做市商,我们可以得到,

xout,nyrate=xnyn=xn1+xrateyn1+yrate

yout,nxrate=ynxn=yn1+yratexn1+xrate

化简,

xout,n=yratexnyn=yratexn1+xrateyn1+yrate

yout,n=xrateynxn=xrateyn1+yratexn1+xrate

在得到

xout,n
yout,n
的值后,我们进一步可以获得
n
区块的交易后 AMM
xreserve
yreserve
xn
yn

xn=xnxout,n=xnyratexnyn=yn1xnyn=yn1xn1+xrateyn1+yrate

yn=ynyout,n=ynxrateynxn=xn1ynxn=xn1yn1+yratexn1+xrate

通过观察,我们发现

xnyn=xn1yn1,这正好符合 AMM 的循恒定乘积做市的前提要求。

令,

xnyn=xn1yn1=...=x1y1=x0y0=k,这是一个常数。

分式线性递归

先对

xn 求得一般公式,并获得
xammEnd=xN
的值,
yn
同理。

xn=yn1xn1+xrateyn1+yrate=kxn1xn1+xinNkxn1+yinN=kxn1+xinNyinNxn1+k

a=kxinyin,a=kyinxin,b=xinyink,则

xn=xn1+abNbaNxn1+1

yn 的分式线性递归表达式如下:

yn=kyn1+yinNxinNyn1+k=yn1+abNbaNyn1+1

首先,若

yin 等于 0,
xin
不等于 0,则
xn=x0+abNn,xammEnd=xN=x0+xin,xout=x0+xinxammEnd=0

yn=kyn1xinNyn1+k,1yn=1yn1+xinkN

计算得到,

yn=11y0+xinkNn,yammEnd=yN=11y0+xink

yout=y0+yinyammEnd=xiny0xiny0+ky0


xin 等于 0,
yin
不等于 0 时,讨论同上。


xin
yin
都不等于 0,对于一般的分式线性递归,我们可以采用不动点的方法求解。

根据

xn=xn1+abNbaNxn1+1,命
λ=λ+abNbaNλ+1
,解得
λ=±a
±a
正是上述分式线性递归表达式的两个不动点。

进一步计算,

xna=a(Nb1)(xn1a)xn1+aNb,xn+a=a(Nb+1)(xn1+a)xn1+aNb

将上面两个表达式相除,

xnaxn+a=NbN+bxn1axn1+a=(12bN+b)xn1axn1+a

根据等比数列求得,

xnaxn+a=(12bN+b)nx0ax0+a,xNaxN+a=(12bN+b)Nx0ax0+a

同理,

ynayn+a=(12bN+b)ny0ay0+a,yNayN+a=(12bN+b)Ny0ay0+a

极限值

TWAMM 的基本假设是将长期大额订单分解为无限多个无限小的虚拟订单,也即是

N 可以取无穷大,这时候可以获得
xN
的极限值。

xammEndaxammEnd+a=limNxNaxN+a=limN(12bN+b)Nx0ax0+a=e2bx0ax0+a

xammEnd=ae2b+ce2bc=kxinyine2xinyink+ce2xinyinkc

其中,

c=x0ax0+a=xammStartyinyammStartxinxammStartyin+yammStartxin

xout=xammStart+xinxammEnd

相似的,

yammEnd=kyinxine2xinyink+ce2xinyinkc

c=yammStartxinxammStartyinxammStartyin+yammStartxin=c

yout=yammStart+yinyammEnd

最后,经过简单的验证

xammEndyammEnd=xammStartyammStart=k,依然满足 AMM 的恒定乘积。

至此,我们完成了TWAMM 的数学原理严格的论证和解释,并得到了与「时间加权平均做市商 TWAMM一文完全相同的结论。