作者:洒脫喜
寫在前面:
隨著近期Compound治理代幣COMP的大熱,Defi「流動性挖礦」潮正式來臨,而同樣備受市場期待,又有著高級版uniswap之稱的Balancer,也即將迎來自己的治理代幣挖礦。而在參與Balancer的流動性挖礦之前,你需要對幾個概念有所了解,一是如何計算Balancer儲備池的值,二是計算無常損失,最後則是關於滑點的計算,對於這些,Balancer首席執行官Fernando Martinelli將為我們一一道來。
如果你有曾讀過Balancer的白皮書,那你可能會覺得,要理解所有涉及到的數學知識會讓人感到畏懼。幸運的是,大多數複雜的偏導數和證明,對於理解和使用協議而言其實是不必要的。一個簡單的不變數(我們稱之為值函數)確保了Balancer資產儲備池具有的所有有趣的自平衡屬性:
其中Bi 和Wi分別是代幣餘額和權重。
Balancer儲備池的值
一個Balancer儲備池,可以由多達8種不同的ERC20代幣組成,並且每種代幣都有自己任意的權重。這個權重表示儲備池在任何時候,應在每個代幣中保持的值的百分比。只要市場上有活躍的理性套利者,且池的費用很低,則儲備池持有的每個代幣的價值百分比,預計總是非常接近池的權重。 (關於高收費Balancer池的情況,請看這篇文章)
在低費用的情況下,只要任何一個代幣相對於另一個代幣有價格變化,套利者就會受到激勵,以使代幣之間的資產池價值分配,恢復到原始預定義權重。
為每個代幣靈活選擇權重的有趣效果是,儲備池流動性提供者(LP),可以控制他們希望對每種資產承擔的風險水平。例如,如果他們看好MKR(相對於ETH),他們可以選擇向MKR權重高、ETH權重低的儲備池中添加流動性。如果不存在這樣的儲備池,他們也可以自己創建一個。這樣,當MKR相對於ETH上升時,他們將獲得MKR的大部分上行空間。
當然,這一優勢並不等同於持有100%的MKR,但它將比在MKR和ETH之間擁有50/50的儲備池要好得多。下面的截圖,顯示了在實踐中的情況。
在向Balancer儲備池提供流動性時,你可能會問的一些關鍵問題是:
- 在基礎代幣的價格全部改變之後,是否有一種方法可以概括計算出Balancer儲備池的值?
- 如果MKR的價格翻倍,且ETH保持不變,那麼持有75%MKR和25%ETH(類似於上面的截圖)的儲備池的價值將增加多少?
- 如果權重為10%的代幣價格下跌80%,那麼儲備池損失是多少?
一個非常簡單的公式,可以為以上所有問題提供答案。Balancer池的值(例如以USD計算),根據其每個基礎代幣的同一參考的(USD)價格變化而變化:
其中
是代幣i的美元價格變化,而
是代幣i的權重。
這個方程的長形式證明,可以在我們網站上的詳細文章中找到。
有了這個公式,我們就可以輕鬆回答上面提到的問題,請注意,無論代幣的權重如何,不變的代幣價格都不會影響儲備池的值(ΔP_usd^w = 1^w = 1
),無論這些代幣的權重如何。所以我們有:
- 如果MKR的代幣價格翻番,75%MKR和25%ETH的儲備池的總價值將增加68.2%(=2^0.75=1.682),而一個50/50比例儲備池的總價值則增加41.4%(=2^0.5=1.414)。
- 如果一個儲備池中某個代幣的權重為10%,且其價格崩盤80%(或ΔP_usd = 0.2),那麼這個儲備池的總價值只會下降約15%(=0.2^0.1=0.8513)。
流動性提供者的無常損失(IL)
「無常損失」一詞在Pintail的文章推出後被廣泛傳播。如果你之前從未聽過這個詞,可以閱讀下Pintail寫的關於Uniswap儲備池回報的重要文章。
根據定義,無常損失(IL)描述的是這樣一種損失:在儲備池中的資產,較這些資產在池外的情況下損失的百分比,用公式來表達便是:
上面這個公式考慮的是0費用的儲備池情況。不含費用的Balancer價值函數與路徑無關(也就是說,交易順序不會更改池的最終狀態)。這意味著,如果流動性提供者(LP)在移除其所有相關代幣的流動性時,代幣的價格與增加流動性時相同,則無常損失將為零:他們將擁有與其投資的代幣數量完全相同的代幣。
在等式中加上費用,流動性提供者(LP)的最終美元收益將是累計費用(以總儲備池值的百分比計),減去無常損失。
我們可以使用以下定義來更改池中持有價值的變化,來擴展上述無常損失的公式:
為了說明這個公式,我們舉個例子,例如,假設一個籃子投資組合中,有一個權重為50%的代幣,而它的價格翻了一番。那麼這個籃子投資組合的總價值將增加50%,或1.5倍(=1*50%+2*50%=1.5)。換言之,假設我最初持有500美元的代幣A和500美元的代幣B,兩者總共1000美元。如果代幣B的價值翻倍,那麼我就持有了500美元的代幣A和1000美元的代幣B,總計1500美元(即總價值增加了50%)。
如上面所述,無常損失也可以用儲備池值和持有池的變化來表示:
因此,替換上面的公式,就可以得出Balancer池中無常損失的最終表達式:
請注意,由於值函數的凸性,無常損失將始終為零或負數。這可能導致一種混淆,即負損失被解釋為收益。事實並非如此:無常損失(IL)總是負的真正含義是,代幣價格的任何相對變化,總是會導致一些短暫損失。
Balancer儲備池的滑點
根據定義,滑點是指交易中,實際支付價格相對於現貨即期價格的百分比變化。
在存在費用的Balancer儲備池中,即期價格的定義如下(請注意,從這裡開始,i是指輸入代幣,即交易者發送/出售給儲備池的代幣):
根據定義,交易的有效價格是交易者出售的金額(amountIn)除以他們獲得的其他代幣金額(amountOut)的比率:
使用我們白皮書中得出的amountOut
公式,我們可以將其重寫為:
請注意,即使我們處理的是用戶定義要出售的金額(amount in)的交易,也可以在用戶定義要購買的金額(amountOut)時進行以下整個推導,詳見下一部分內容。
我們可以將滑點定義為有效價格超過即期價格的百分比。這是關於交易金額(Ai)的一個函數,因為它會影響有效價格:
因此,如果一筆交易的有效價格是102,而即期價格是100,那麼滑點就是2%。
在Balancer中,滑點並不是線性的:它隨著交易量的增加而增長得更快。不過,作為一個近似值,我們可以線性化小額交易的滑點。下圖以藍色顯示了增加數量的有效價格,以橙色表示的是有效價格的線性化(所有數字都是虛擬的):
這種線性化對於許多演算法優化(包括我們的智能順序router (SOR))非常有用。
通過線性化,我們可以將滑點重寫為交易金額的線性函數:
滑動斜率(SL)只是上面在Ai = 0時定義的滑動公式的導數。可以用不同的方法來計算,但最終的解決方案是:
滑點計算實例
以一個70% AST / 30% WETH 的儲備池為例。在撰寫
文章評論
冷萃財經原創,作者:Awing,轉載請註明出處:https://www.lccjd.top/2020/06/22/defi%e6%b5%81%e5%8a%a8%e6%80%a7%e6%8c%96%e7%9f%bf%e5%a4%a7%e7%83%ad%ef%bc%8c%e5%8f%82%e4%b8%8ebalancer%e5%89%8d%e4%bd%a0%e5%ba%94%e8%af%a5%e7%9f%a5%e9%81%93%e8%bf%99%e4%ba%9b%e6%a6%82%e5%bf%b5/?variant=zh-tw
文章評論