Paradigm全文|了解自動做市商是什麼,AMM到底在幹嘛?(第一部分)

Jim
分享
Paradigm全文|了解自動做市商是什麼,AMM到底在幹嘛?(第一部分)

每天,成千上萬的用戶首次使用去中心化交易所 (DEX),而即便熟悉傳統交易平台,公鏈的特性仍往往讓新手無所適從,結果是用戶將辛苦錢雙手奉上給套利者、超前交易者 (Front running),比起什麼都不做來得更糟。

(本文源自 Paradigm,鏈新聞進行編譯,原文標題為《Understanding Automated Market-Makers, Part 1: Price Impact》,原文請見

從大方向來看,我們能將每筆交易成本分為:

廣告 - 內文未完請往下捲動
  1. 價格影響
  2. 交易費
  3. 滑價
  4. 底層區塊鏈手續費

本文主要在解釋自動做市商 (Automated Market-Makers,以下稱 AMM) 機制,作為系列文章的引導文,並將討論用戶的第一個,同時也是最關鍵的成本:價格影響。

你會學到:

  • Uniswap v2、Sushiswap 與 Balancer 等 AMM 的報價機制
  • 運用簡單策略來最小化價格對於交易的影響

什麼是流動性資金池?

多數 DEX 由許多不同交易對的流動性池所組成,如 ETH/WBTC,但流動性池不像傳統交易所訂單簿中所匹配的買賣雙方,而是作為自動做市商。

流動性資金池是一種智能合約,存放了兩種或兩種以上的大量代幣,允許任何人依據其特定規則存入、提出代幣。

這邊說的特定規則是「恆定乘積公式: x * y = k」,其中 x 與 y 為代幣 A 與 B 的存量,為了提出 (買入) 一定數量的 A 代幣,必須存入一定數量的 B 代幣才能維持常數 k 為固定不變。

AMM 如何報價?

由恆定乘積公式可以得出:

A 代幣價格 = B 代幣存量 / A 代幣存量



圖一:不同的 AMM 公式會導致不同的價格曲線。假設 Uniswap v2 流動性池有 15 顆 Y 代幣,用戶僅需以 0.1 代幣 X 來獲得一顆代幣 Y ;而若當池中只有 2.5 顆 Y 代幣時,用戶則必須以 4 顆 X 代幣才能換到一顆 Y 代幣。

其它不同的價格曲線,目的在於將流動性主要集中在某個價位附近 (如穩定幣)。資料來源:Curve Finance。

實際案例,撰寫本文時 (2021/4/19),Uniswap 的 ETH/WBTC 池中有:

  • 2,700 顆 WBTC
  • 86,000 顆 ETH

依照恆定乘積公式與存量計算,ETH 的價格為:

2,700 / 86,000 = 0.0314 WBTC。

重點是,在其它交易平台價格有所波動時,AMM 不會自行更新價格,其價格僅依照池中的代幣存量比例的變化而波動,也就是有人進行交易才會改變它的價格。

舉例來說,若該交易對在幣安的價格跌至 0.0310 WBTC,會發生什麼事?這代表 Uniswap 的流動性提供者 (Liquidity Provider, 以下簡稱 LP) 正以高出市場價格收購以太幣,進而產生套利機會。套利者能在幣安買入「打折」的以太幣,並在 Uniswap 賣出而獲利。

套利者會持續進行,直到 Uniswap 上該交易對的價格跌至與幣安相同的 0.0310 WBTC,此時他們才無法再進行套利。

在上述案例中,套利者向該流動性池 (交易對) 賣出了 550 顆以太幣並換取 17.2 顆 WBTC,此後價格才達到同步 (此處省略交易手續費以及 Gas)。

結果就是,即便 AMM 不會與真實世界中的市場價格資訊同步,用戶還是可以預期於 AMM 的報價,因為被持續套利,而緊隨著全球市場價格的報價。

什麼是價格影響?

上面我們了解了如何依據流動性池中,兩個代幣存量的比例來計算當前的市場價格,不過這個市場價格只是極小量的代幣價格。實際上用戶通常會一次買賣更大量的代幣,而每顆代幣的價格都比前一顆還高。

對於「當前市場價格」與「預期成交價格」之間的差異,稱為價格影響 (Price Impact)。

價格影響的因素包括:

  • 用戶的交易額相對於流動性資金池的規模
  • AMM 的交易規則 (如恆定乘積公式)

圖表 2:比較不同訂單量 (X 軸) 對於成交均價 (左側 Y 軸) 與價格變化的影響 (右側 Y 軸),兩者都因為交易額的規模而增加。在流動性池中的相對交易額越大,那成交價格就會跟市場價格向上偏離的越多。

圖表 3:比較 Uniswap 不同大小的流動性池中 (X 軸), 10 顆 WBTC 的賣單對於成交均價 (左側 Y 軸) 與價格變化的影響 (右側 Y 軸)。

其中池子的大小代表池中兩項資產的總量,訂單大小分別佔池子的 0.19%、1.85% 與 18.52%,也就是價格的變化大約是用戶訂單大小的兩倍。

如何將價格影響最小化?

如先前所提,價格影響可能佔交易成本相當大的部分,以下是一些將其最小化的簡單策略:

尋找最具深度的市場

截至目前,我們確定了價格影響來自於訂單大小、池子規模,因此,我們要在自己所關注的價格區間內找到最具流動性的池子,這會使我們的成交均價與市場價格最接近,透過 Coingecko 上的「代幣市場深度數據」來查詢會是個好的開始。

圖 4:UNI 交易對,以價差 2% 以內的流動性進行排序,請注意 Uniswap 與 Bitfinex 之間的差價。資料來源:Coingecko

尋找 DeFi 以外的平台

雖然這是一篇 AMM 的文章,但我們不會裝作你總是能在鏈上得到最好的交易結果,實際上,因為 AMM 會將流動性分佈在一連串的價格區間,因此流動性通常不會集中在當前市場價格。

這是許多 DEX 試圖解決的問題,如 Uniswap v3 能讓做市商將流動性集中在當前市場價格附近,進而使價格對中心化的交易所來說更具競爭力。

當一筆交易使一個 DEX 中的價格發生位移時,它與其他市場中的同一種交易,就會製造出套利機會。如先前所說,套利者會尾隨 (backrun) 交易 (待該筆交易完成後隨即介入),並將價格重新扳平為全球市場價格。

非常容易能理解,為何這種套利行為的存在證明了該筆交易是一個錯誤。因為交易者正向套利者捐贈資金,而這也衍生出一個問題:

如果有其它交易市場,你應該執行價格影響超過 2-3% 的鏈上交易嗎?

注意交易費用

AMM 的交易費用為 0.30%,這代表最佳買單與最佳賣單之間的價差為 0.6%。在這個範圍內,AMM 不會有任何報價。也就是即便最具流動性的 AMM,也會有隱含的 0.3% 的價差。

最小化交易費非常重要,特別是一些對於在中心化交易所,價格變動非常小的交易。因此,中心化交易所可能是執行交易更好的平台 (作為比較,幣安單筆交易費為 0.10%,FTX 為 0.07%)。

這就表示,付更多錢去使用 DEX 還有其他理由,包括保留完全託管權、想避免註冊、跳過 KYC 或入金流程。但即便如此,用戶也應該意識到 DEX 去中心化以及即時流動性隱含的溢價。但即便如此,用戶也應該意識到 DEX 有更高的執行價格,這包括隱含的去中心化或即時流動性的溢價。

分批交易

我們能將一筆訂單拆成數筆較小的交易,這對於傾向於在 DEX 上進行交易的用戶非常重要 (雖然 DeFi 還有其他平台)。

這種情況你可以每次增量 20% 的方式分批買入,並等待套利者將價格扳平,與單一訂單相比,五個訂單的會產生較小的價格變動影響。

不過這會增加 Gas 的成本與執行交易的時間,該策略在交易額越大時越有效,因為固定的 Gas 會降低更多交易成本,同時對於均值回歸的資產類別同樣奏效,如穩定幣。

直接交易路線並非總是最便宜

不是每筆交易都有對應的交易對,就算有,透過不同交易路徑的代幣或許更便宜。如代幣 A、B 可能有交易對,但若交易對 A→ETH→B 更具流動性則交易成本更低。因此,就算你只是拿來查看交易路徑,交易聚合器在這個場景非常有用。

使用 DEX 聚合器

最後一點,你可以用 DEX 聚合器,如 1inch、Matcha 或 Paraswap。聚合器在 DeFi 中相當於智能訂單路由器,它的工作原理為,AMM 會以「比第十顆代幣便宜的價格出售第一顆代幣」。

當代幣在許多不同池子進行交易時,聚合器會在所有池子購買該代幣,以最小化價格變動,與上述在單個交易對分批買進不同,聚合器所進行的交易會在各個市場中立即執行,聚合器所需的 Gas 略高於單筆交易,因為類似於手動拆分交易。

圖 5:聚合器用以太幣買入 10 顆 ($3,200)、50 ($16,000)、100 ($32,000) 與 200 AAVE ($64,000) 的最佳策略。交易量越大,會有更多的交易所加到交易路徑中,以免單個池子滑價過多。來源:1inch

展望

在這一系列的第二部分,我們會完全聚焦在滑價上面。幾乎所有的 AMM 交易都會受制於搶先交易(frontrunning),讓交易者能被接受的最大滑價量都被成交。這是一個在公鏈上蠻獨特的「特色」,在當今的去中心化交易所運作方式中,是無法被避免的。這些支出只能被轉移,而形成了所謂的「The Sandwich Trilemma」(三明治三難問題)