Skip to main content

PMMアルゴリズムの数学原理

PMMは本質的には、スマート・コントラクトを利用して1つの積分と2つの二次方程式を解くアルゴリズムです。

価格曲線積分#

トレーダーにとっては、一番重要なのは平均取引価格です。平均取引価格は境界価格の積分Pmarginです。ここでbase tokenが不足している状況を例として挙げます。

ΔQ=B1B2PmargindB\Delta Q =\int^{B_2}_{B_1}P_{margin}dB

=B1B2(1k)i+i(B0/B)2kdB= \int^{B_2}_{B_1}(1-k)i+i(B_0/B)^2kdB

=i(B2B1)(1k+kB02B1B2)= i(B_2-B_1)*(1-k+k\frac{B_0^2}{B_1B_2})

この式はトレーダーにB1B2B_1-B_2の量のbase tokenを買いたい場合、いくら支払うべきかを計算します。

上の式を変形すると、平均取引価格は以下の式の計算になります。 P=ΔQB2B1=i(1k+kB02B1B2)P=\frac{\Delta Q}{B_2-B_1}=i*(1-k+k\frac{B_0^2}{B_1B_2})

平均取引価格は取引前後のシステムの状態によって決まるので、売買の価格計算式は同じで、つまり、境界価格間の価格積分PmarginP_{margin}です。

取引二次方程式の解き#

quote tokenが不足する場合、積分の式は以下のようになります。

ΔB=1i(Q2Q1)(1k+kQ02Q1Q2)\Delta B = \frac{1}{i}(Q_2-Q_1)*(1-k+k\frac{Q_0^2}{Q_1Q_2})

トレーダーが取引したい数量は(i.e. ΔB\Delta B)がすでに分かるとすると、quote token不足時の価格を計算して見ます。

ΔB,Q0,Q1\Delta B, Q_0, Q_1はすでに分かっており、二次方程式を導くことによりQ2Q_2が得られ、二次方程式を変形すると、以下の数式が得られます。

(1k)Q22+(kQ02Q1Q1+kQ1iΔB)Q2kQ02=0(1-k)Q_2^2+(\frac{kQ_0^2}{Q_1}-Q_1+kQ_1-i\Delta B)Q_2-kQ_0^2=0

let a=1k, b=kQ02Q1Q1+kQ1iΔB, c=kQ02let \ a=1-k, \ b=\frac{kQ_0^2}{Q_1}-Q_1+kQ_1-i\Delta B, \ c=-kQ_0^2

Q2>=0Q_2>=0のため、マイナスの結果を捨てると、以下の式が得られます:

Q2=b+b24ac2aQ_2=\frac{-b+\sqrt{b^2-4ac}}{2a}

以上の式から以下の結論が得られえます。

  • ΔB>0\Delta B>0の時、Q2>Q1Q_2>Q_1、トレーダーがbase tokenを買いたい場合、Q2Q1Q_2-Q_1を支払う必要があります。
  • ΔB<0\Delta B<0の時、Q2<Q1Q_2<Q_1、トレーダーがbase tokenを売りたい場合、Q1Q2Q_1-Q_2を受け取ります。
  • ΔB=0\Delta B=0の場合、Q2=Q1Q_2=Q_1

回帰目標の二次方程式の解き#

システムがアンバランスな状態である時、オラクル(oracle)の価格変化は利益か或いは損失かをもたらします。例えば、今base tokenが不足していると仮定し、オラクル(oracle)の価格が上昇します。この時、明らかに余分なquote tokenは十分なbase tokenを買い戻すことができず、資産池をバランス状態にも戻せず、base tokenをチャージしたにマーケット・メーカーは損失します。逆に、オラクル(oracle)の価格が下落すれば、余ったquote tokenは十分多くのbase tokenを買うことができ、資産池をバランスのとれた状態に戻すことができ、かつ余分もあり、だから、base tokenをチャージしたマーケット・メーカーは利益が得られます。

つまり、回帰目標はオラクル(oracle)の価格の影響を受けます。下記の式を通じて、オラクル(oracle)がある価格を与えた時に、その回帰目標を算出できます。

Given ΔQ=i(B2B1)(1k+kB02B1B2)\Delta Q = i(B_2-B_1)*(1-k+k\frac{B_0^2}{B_1B_2})

回帰計算なので、B2=B0B_2=B_0で、式を以下のように変形します。

kB1B02+(12k)B0[(1k)B1+ΔQi]=0\frac{k}{B_1}B_0^2+(1-2k)B_0-[(1-k)B_1+\frac{\Delta Q}{i}] = 0

ルートのマイナスの解を取り除くと、B0B_0が以下のように得られる。

B0=B1+B11+4kΔQB1i12kB_0=B_1+B_1\frac{\sqrt{1+\frac{4k\Delta Q}{B_1 i}}-1}{2k}

この場合、ΔQ=QQ0\Delta Q=Q-Q_0ΔQ0\Delta Q \ge 0の場合、B0B1B_0\ge B_1が証明できます。

この結論は非常に重要です。これはbase tokenとquote tokenが回帰目標より同時に大きいあるいは同時に小さい場合がないことを保証しているからです。これはPMMの核心概念で言及された三つの状態しかないことを意味します。 同様に、quote tokenの回帰目標の式が以下のように得られます。

Q0=Q1+Q11+4kΔBiQ112kQ_0=Q_1+Q_1*\frac{\sqrt{1+\frac{4k\Delta B i}{Q_1}}-1}{2k}

その他#

このセクションではPMMアルゴリズムに関するほかの数学演算を紹介します。

取引#

上記のように、回帰目標はオラクル(oracle)価格に依存し、価格曲線は回帰目標に依存します。だから、取引ごとに価格曲線を固定するために、回帰目標を事前に計算しなければなりません。

また、PMMはいくつかのセグメントから形成する価格曲線を与えるので、もし一つの取引が異なるセグメントに及ぶ場合(例えば、base tokenが不足しており、トレーダーが大量のbase tokenを売る場合、システムの状態がbase token不足状態からquote token不足状態になります)、価格は各セグメントで計算する必要があります。

チャージ#

資産が不足している場合、チャージまたは引き出しは価格曲線に影響を与えます。だから、我々はチャージと引き出しを慎重に対処し、資産池の持続性と公平性を保証しなければなりません。

ここでbase tokenが不足しており、マーケットメーカーが仮想通貨を引き出しする場合、何が起こるかを分析します。

B0B_0の数式の導きでわかるように、B0B_0は以下の数式で計算されます。

B0=B1+B11+4kΔQB1i12kB_0=B_1+B_1*\frac{\sqrt{1+\frac{4k\Delta Q}{B_1 i}}-1}{2k}

マーケットメーカーがbb個のbase tokenを預け入れると、B1B_1がbだけ上昇し、B0B_0の上昇幅がもっと大きいです。これは、このチャージによってbase tokenをチャージしたすべてのマーケットメーカーが利益を得ることを意味しています。このチャージによって価格曲線が滑らかになり、同じ量のΔQ\Delta Qでより多くのbase tokenを買うことができるからです。

この場合、マーケットメーカーがいったん資産を預け入れると、マーケットメーカーは利益を得ることができます。これはチャージ奨励と呼ばれます。奨励は主にシステムをバランス状態から逸脱させたトレーダーによって支払われます。

::: 注意: チャージ奨励目当てのチャージは全くリスクがないわけでなありません。 :::

引き出し#

同様に、マーケットメーカーからbb個だけのBase tokenを引き出した後、B1B_1bb だけ減少し、B0B_0の減少幅がもっと大きい。この引き出しによってすべてのマーケット・メーカーが損失を被ることになります。これはこの引き出しによって価格曲線がより急勾配になり、余分のquote tokenで同じ量のbase tokenを買えなくなるからです。

PMMアルゴリズムでは、この場合、引き出しには一定の手数料が必要となります。手数料はこの引き出しによって引き起こしたマーケット・メイカーの損失の合計と同じです。この手数料は引き出しをしていないマーケット・メイカーに分配されます。

上記のチャージ奨励を考慮して、もしマーケット・メイカーがチャージしたすぐ後に引き出しをしたら、引き出し手数料はチャージ奨励より大きく設定されています。これによってリスクなしのヘッジを根絶します。

注意すべきは、システムがバランス状態から大きく逸脱し、チャージまたは引き出しの量が非常に大きい場合のみ、PMMはチャージ奨励を支給し、または引き出し手数料を徴収します。普通、トレーダーはこの二つの部分に注目しなくても良いです。もちろん、我々はシステムのバランスが逸脱した時に、チャージすることによって報酬を得、システムのバランスを取れてから、手数料を取られないように引き出しすることを歓迎します。