Episode 4: Concentrated Liquidity - bước cải tiến lớn về hiệu suất sử dụng vốn

Chào ace nông dân,

Vâng vẫn lại là tôi, Hiệp - chủ tịch Hội đây.

Qua Episode 3 bàn về cách trở thành 1 Market Maker thông quá các AMM chúng ta đã phần nào hiểu được nguồn thu của chúng ta đến từ đâu nếu trở thành 1 liquidity provider (nhà cung cấp thanh khoản) trên các sàn DEX (Dexcentralized Exchange). Trong bài đó, tôi đã nói về giao thức vận hành của Uniswap V2 với công thức Constant Product:

xy=kx*y=k

Nếu bạn muốn cung cấp thanh khoản cho 1 đồng crypto nào đó (gọi là đồng A), bạn sẽ phải đưa vào pool thanh khoản 2 đồng:

  • Đồng base token: là đồng A bạn muốn cung cấp thanh khoản.

  • Đồng quote token: là đồng bạn muốn người khác exchange với đồng A của mình, gọi là đồng B (thường B sẽ là native token của 1 chain như ETH, AVAX, BNB… hoặc các đồng stablecoin như USDT, USDC, DAI…)

Như vậy, bạn đưa vào trong pool x đồng A và y đồng B. Khi có các giao dịch của trade với pool của bạn, số lượng x và y sẽ thay đổi, nhưng vẫn đảm bảo tích của x*y vẫn bằng hằng số k bên trên. Bên cạnh đó, bạn còn có thể thu được 0.3% phí trên mỗi giao dịch.

Tuy nhiên, nếu để ý bạn sẽ thấy giải giá (range) của đồng base token so với quote token chạy từ 0 → ∞, hay nói cách khác là thanh khoản của bạn sẽ bị dàn ra rất rộng, nhưng mà mỏng. Điều đó rất phù hợp cho các token tập trung vào price discovery (khám phá khoảng giá) khi những meme coin, shitcoin thường có xu hướng tăng tới 1,000,000% trong thời gian ngắn (chạy ra ∞), hoặc là giảm gần về mo cũng trong thời gian tương tự (tiệm cận về 0). Còn các dạng crypto asset đã “xác lập vị thế” trên thị trường rồi, thì price discovery của chúng thường không lớn mà sẽ có xu hướng giao động trong 1 giới hạn nào đó.

Chart 1Month của cặp ETH/BTC trên sàn Binance
Chart 1Month của cặp ETH/BTC trên sàn Binance

Tôi lấy ví dụ là cặp ETH/BTC ở trên (chart 1Month cung cấp bởi sàn Binance). Bạn có thể dễ nhận ra rằng từ tháng 7/2017 cho tới tháng 1/2024 (thời điểm viết bài này), đã 7 năm trôi qua nhưng tỷ giá ETH/BTC chỉ luôn giao động nằm giữa 2 điểm [ATL, ATH] là [0.01615, 0.1238]. Như vậy, nếu bạn trở thành liquidity provider cho 2 token này trên Uniswap V2, bạn đâu cần set range cho nó rộng ngoác ra thành (0,∞) phải không nào?

Bởi trong đầu tư, có một khái niệm quan trọng gọi là Capital Efficiency (Hiệu suất sử dụng vốn).

Lấy một ví dụ đơn giản:

  • Trong năm 2023, Tý sử dụng $10,000 đem gửi lãi suất ngân hàng 10%, cuối năm thu về $1,000 → CE của Tý là 10%.

  • Trong khi đó, Tèo sử dụng $10,000 đưa vào làm liquidity provider cho cặp ETH/USDC trên Uniswap, cuối năm Tèo thu về là $3,000. → CE của Tèo là 30%

  • Như vậy, với cùng số vốn là $10,000 nhưng Tèo đã sử dụng vốn hiệu quả hơn Tý gấp 3 lần. Hay nói cách khác, $1 của Tý chỉ tạo ra được $0.1 còn $1 của Tèo đã tạo ra những $0.3 trong suốt 2023.

Quay trở lại cặp ETH/BTC của chúng ta ở trên, rõ ràng việc dàn đều thanh khoản cặp này từ (0,∞) là điều không cần thiết và có hiệu suất sử dụng vốn rất thấp. Vì trong suốt 7 năm qua giá ETH/BTC chỉ giao động trong [0.01615, 0.1238] giúp liquidity provider thu được phí trading. Còn phần thanh khoản trong khoảng giá < 0.01615 hoặc > 0.1238 thì nằm chết dí một chỗ và đương nhiên không thu được đồng phí nào.

Đến đoạn này, một cách rất tự nhiên chúng ta sẽ đặt câu hỏi:

  • Liệu có cách nào giới hạn khoảng giá cho thanh khoản hay không?

  • Liệu có cách nào giúp tôi có thể gia tăng mức phí thu được trên một thanh khoản hay không?

  • Liệu có cách nào để tôi nâng được hiệu suất sử dụng vốn của tôi hay không?

Và đó là lý do Uniswap V3 ra đời, kèm theo 1 loạt các AMM protocol khác như TraderJoe, KyberSwap, Maverick nối đuôi theo Uniswap trên cuộc chiến về Capital Efficiency.

Uniswap V3 và Concentrated Liquidity Market Maker (CLMM)

Thực ra toàn bộ knowledge của Uniswap V3 và CLMM đã được cô đọng trong whitepaper Uniswap V3 . Tuy nhiên, có nhiều đoạn viết và công thức trong whitepaper này sẽ không quá tường minh và dễ hiểu cho các ace mới tham gia vào Defi, nên trong phạm vi bài viết này tôi sẽ cắt nghĩa dễ hiểu nhất cho ace.

Hãy bắt đầu với ví dụ trên cho cặp ETH/BTC:

  • Base token: ETH với số lượng là x

  • Quote token: BTC với số lượng là y

  • Tại thời điểm bắt đầu tạo thanh khoản thì ta sẽ xác định được hằng số k = x*y như Uniswap V2.

  • Tỷ giá hiện tại (current price) của ETH/BTC sẽ được xác định như sau:

Pc=y/xP_c = y/x

Ta không mong muốn thiết lập khoảng giá từ (0,∞) mà mong muốn nó chỉ chạy từ Pa = 0.01615 tới Pb = 0.1238. Hay nói cách khác, giá hiện tại Pc của ETH/BTC sẽ chỉ chạy trong khoảng [Pa,Pb] = [0.01615, 0.1238] như biểu đồ dưới đây

Hay nói cách khác, phần reserve (đường cong màu xanh) ở trên chỉ là ảo vì đường cong đó thể hiện x và y có thể chạy từ (0,∞), nên trong whitepaper Uni V3 gọi đó là đường virtual reserves. Trên thực tế, x_real sẽ không thể chạy được vượt quá giá trị Xa, và y_real sẽ không thể chạy vượt quá giá trị Yb. Nếu biểu diễn bằng một hệ quy chiếu tốt hơn (hệ quy chiếu màu đỏ), ta sẽ thấy ta cần dịch chuyển hệ quy chiếu cũ (X_reserves, Y_reserves) đi 1 khoảng là (Xb, Ya).

Và như vậy, công thức Constant Product mới sẽ thể hiện là:

(x+xb)(y+ya)=k(x+x_b)(y+y_a)=k

Trong whitepaper Uni V3, họ không dịch chuyển hệ quy chiếu. Thay vào đó, họ dịch chuyển đồ thị từ đường cong virtual reserves (màu xanh) về đường cong real reserves (màu vàng), từ điểm a → a’ và từ b → b’.

Nhưng công thức Constant Product rốt cuộc vẫn tương tự như trên, và ta dễ dàng để ý thấy:

  • Khi tỷ giá Pc của ETH/BTC tăng tới điểm Pb’, số lượng coin BTC là y = Yb’ đạt cực đại, và số lượng coin ETH là x = 0. Hay nói cách khác, trong pool giờ đã mất hết ETH và chỉ còn lại BTC. Pool ngừng trade với các lệnh mua ETH, mà chỉ nhận các lệnh bán ETH vào pool.

  • Khi tỷ giá Pc của ETH/BTC giảm tới điểm Pa’, số lượng coin ETH là x = Xa’ đạt cực đại, và số lượng coin BTC y = 0. Hay nói cách khác, trong pool giờ đã mất hết BTC và chỉ còn lại ETH. Pool ngừng trade với các lệnh mua BTC, mà chỉ nhận các lệnh bán BTC vào pool.

Do đó, ace có thể chuyển việc setup range giá từ (0,∞) với Uni V2 thành range giá từ [Pa,Pb] với Uni V3. Điều đó khiến cho thanh khoản được tập trung hơn vào khoảng [Pa,Pb] và giúp cho liquidity provider như chúng ta có thể kiếm được nhiều trading fee hơn so với cùng một lượng vốn, như mô tả dưới đây:

Rất tiếc là trên UI của Uniswap không visualize cụ thể cho chúng ta việc hiệu quả sử dụng vốn sẽ như thế nào trong 2 trường hợp (0,∞) vs. [Pa,Pb]. Tuy nhiên, sàn AMM Cetus (một clone của Uniswap V3 trên Sui network) đã làm rất tốt việc so sánh này. Ace có thể xét tới ví dụ cung cấp thanh khoản cho cặp SUI/USDC trên Cetus.

Trường hợp 1, set full range

Hãy để ý tới cái box màu vàng trên UI của Cetus cho cặp SUI/USDC, nếu ace chọn full range, có nghĩa tỷ giá của SUI/USDC chạy từ 0 → ∞, anh chị em sẽ có Leverage = 1x. Ý của Cetus ở đây ám chỉ Capital Efficiency của ace bằng 1.

Trường hợp set full range (0,∞)
Trường hợp set full range (0,∞)

Trường hợp 2, set range co gọn lại chỉ giao động trong khoảng +- 46%:

Nhưng nếu anh chị em co hẹp range giá về [0.451193, 1.251182], so với current rate của SUI/USDC là -46.5% và +48.3%, thì Leverage đã tăng lên thành 4.44x , ý nói là Capital Efficiency đã tăng lên gấp 4.44 lần.

Trường hợp set range hẹp lại trong khoảng [0.451193, 1.251182]
Trường hợp set range hẹp lại trong khoảng [0.451193, 1.251182]

Trường hợp 3, Cực kỳ aggressive với range siêu hẹp chỉ giao động trong khoảng +-1.5%

Đỉnh cao hơn nữa, nếu ace dám co hẹp range giá về mức [0.832027, 0.857364], nghĩa là so với current rate là 0.844957, ace chỉ cho phép liquidity của mình dịch chuyển +- 1.5% thôi (siêu hẹp), thì Leverage của ace tăng lên thành 133.84x, nghĩa là Capital Efficiency của ace tăng lên thành 133.84 lần

Trường hợp set range giá siêu hẹp [0.832027, 0.857364]
Trường hợp set range giá siêu hẹp [0.832027, 0.857364]

Vậy nếu so sánh về Capital Efficiency của trường hợp 3 với trường hợp 1, ta có thể kết luận như sau:

  • $1 vốn của trường hợp 3 có hiệu suất sử dụng tương đương với $133.48 vốn trong trường hợp 1.

  • Hay nói cách khác, với mỗi lệnh trade của user vào trong pool trong phạm vi

    [0.832027, 0.857364], thì người đóng góp thanh khoản trong trường hợp 3 sẽ thu được lượng fee nhiều gấp 133.48 lần người đóng góp thanh khoản trong trường hợp 1.

“Wow, chén thánh là đây! Vậy thì cứ range hẹp nhất mà ta cứ táng thôi. Nếu pool SUI/USDC có mức lợi suất cho full range là 25%/năm, vậy thì ta cứ táng range hẹp nhất +-1.5% và sẽ cps mức lợi suất là: 25% * 133.48 = 3,337%/năm. Game là dễ!”

Có rất nhiều ace đến đây nghĩ như vậy. Nhưng hãy nhớ tới quy luật bất biến trong đầu tư “Risk luôn tỷ lệ thuận với Reward”. Mức Reward 3,337%/năm ở trên là siêu lợi nhuận, và như vậy nó cũng đi kèm với… siêu rủi ro.

Rủi ro đến từ đâu vậy?

Impermanent Loss (Tổn thất tạm thời), sát thủ thầm lặng trong giới AMM

Khi đóng góp thanh khoản vào AMM, ace phải chịu 1 rủi ro gọi là IL - Impermanent Loss, hay còn gọi là tổn thất tạm thời:

Tổn thất tạm thời ám chỉ sự sụt giảm giá trị của tài sản crypto khi đóng góp thanh khoản vào AMM, so với việc chỉ giữ các tài sản đó trong ví.

“Tạm thời” ý muốn ám chỉ ở đây rằng đây chỉ là tổn thất dựa trên tính toán nếu chưa rút thanh khoản ra khỏi pool. Còn nếu ace quyết định rút thanh khoản ra khỏi pool thì Impermanent Loss sẽ biến thành Permanent Loss (tổn thất vĩnh viễn)

VD:

Tại thời điểm tỷ giá ETH/USDC = 2,000, ace quyết định đóng góp thanh khoản vào pool này với 1 ETH + 2,000 USDC. Sau một thời gian, tỷ giá ETH/USDC tăng lên thành 8,000. Vậy IL của ace trong trường hợp này sẽ được tính như sau:

  • Nếu ace không đưa vào pool, như vậy ace vẫn còn giữ 1 ETH + 2,000 USDC trong ví. → Tổng tài sản thời điểm này nếu ace giữ bên ngoài sẽ là: 8,000 + 2,000 = $10,000.

  • Nhưng do ace đã đưa vào pool như trên, nên giờ trong pool của ace chỉ còn lại 0.5ETH + 4,000 USDC. Do đó, tổng tài sản trong pool của ace sẽ là: 0.5*8,000 + 4,000 = $8,000.

  • Như vậy, đáng lẽ để bên ngoài pool thì có tổng tài sản $10,000. Nhưng vì đưa vào pool nên tổng tài sản chỉ còn $8,000. Hay nói cách khác, ace bị “dính” IL = 20%.

Trong phạm vi bài viết này, chúng ta sẽ không đi quá sâu vào mặt chứng minh toán học (ace nào thích sâu thì có thể google thêm), mà chỉ “vừa đủ” để ace có thể hiểu được mối quan hệ giữa tỷ giá P với IL thế nào. Qua đó ace có thể lên được các phương án hedging được IL là nhỏ nhất.

Tính toán IL của Uni V2

Giả sử, tại thời điểm mới cấp thanh khoản vào pool, tỷ giá giữa đồng A (có số lượng x) so với đồng B (có số lượng y) sẽ được tính như sau:

P0=yxP_0= \frac{y}{x}

Ta đặt một biến số trung gian là m (m>0) để mô tả sự dịch chuyển của giá so với mốc P0 ban đầu:

Pm=P0mP_m = P_0*m

Sau một hồi loằng ngoằng tính toán, ta ra được công thức thể hiện mối tương quan giữa IL và m như sau:

IL(m)=VuniV2VheldVheld=2m1+m1IL(m) = \frac{V_{uniV2}-V_{held}}{V_{held}}=\frac{2\sqrt{m}}{1+m}-1

Trong đó:

  • V_uniV2: giá trị tài sản nằm trong pool Uni V2

  • V_held: giá trị tài sản nếu không đưa vào trong pool.

Ta có thể dễ dàng thấy IL(m) < 1 trong mọi trường hợp, để chứng minh điều này hãy xét đến 1 bất đẳng thức cơ bản dưới đây:

(1m)2012m+m01+m2m(1-\sqrt{m})^2\ge 0 \\ \Leftrightarrow 1 - 2\sqrt{m} + m \ge 0 \\ \Leftrightarrow 1+m\ge 2\sqrt{m}

Nếu sử dụng phần mềm vẽ đồ thị hàm số online Demos ta sẽ nhìn được sự sụt giảm giá trị của V_uniV2 so với V_held như sau:

Mối tương qua giữa IL Uni V2 với biến m
Mối tương qua giữa IL Uni V2 với biến m

Ace có thể dễ dàng nhận thấy, với ví dụ đưa thanh khoản vào pool ETH/USDC ở trên, khi giá ETH dịch chuyển từ $2,000 → $8,000, có nghĩa là m = 4, thì IL(4) = -0.2

Tính toán IL của Uni V3

Xét đến Uni V3, ta cần quan tâm tới 2 mốc là Pa và Pb. Cũng sau 1 hồi tính toán loằng ngoằng, ta ra được mối tương quan giữa IL trong trường hợp này như sau:

ILa,b(m)=VuniV3VheldVheld=IL(m)(11pap+mppb1+m)IL_{a,b}(m)= \frac{V_{uniV3}-V_{held}}{V_{held}}= IL(m)*\left(\dfrac{1}{1-\dfrac{\sqrt{\dfrac{pa}{p}}+m*\sqrt{\dfrac{p}{pb}}}{1+m}}\right)

Trong đó:

  • IL_a,b(m): IL của tài sản pool Uni V3 trong khoảng giá [Pa,Pb]

  • IL(m): IL của tài sản nếu nằm trong pool Uni V2

  • V_uniV3: giá trị tài sản nằm trong pool Uni V3

  • V_held: giá trị tài sản nếu không đưa vào pool.

Trong công thức ở trên, ace dễ dàng nhận thấy:

(11pap+mppb1+m)1\left(\dfrac{1}{1-\dfrac{\sqrt{\dfrac{pa}{p}}+m*\sqrt{\dfrac{p}{pb}}}{1+m}}\right) \ge 1

Do vậy, IL của Uni V3 sẽ luôn lớn hơn IL của Uni V2.

Trở lại với ví dụ cặp ETH/USDC ở trên, nếu ace đóng góp thanh khoản trong khoảng giá [Pa,Pb] = [1,600, 10,000], tại thời điểm P0 = 2,000. Vậy khi ETH di chuyển từ $2,000 → $8,000, nghĩa là m = 4 thì IL của Uni V3 trong trường hợp này sẽ = -0.699. Gần như gấp 3.5 lần IL của Uni V2. Phải rồi, high risk thì sẽ high return mà ace.

Mối tương qua giữa IL Uni V2 (màu đỏ), IL Uni V3 (màu xanh) với biến m
Mối tương qua giữa IL Uni V2 (màu đỏ), IL Uni V3 (màu xanh) với biến m

Cách ngăn ngừa IL đơn giản nhất mà ai cũng làm được

Có nhiều kỹ thuật để ngăn chặn IL mà vẫn đạt được hiệu suất sử dụng vốn cao. Nhưng kỹ thuật đơn giản nhất mà ai cũng có thể làm được, đó là nên đóng góp thanh khoản cho những cặp tài sản có xu hướng di chuyển cùng chiều nhau. Ace hãy nhìn mấy cái hình vẽ giun dế ngoằn ngoèo dưới đây (đừng có cười, mấy đường ngoằn ngoèo này có thể cứu tế cái portfolio cho ace lúc nào đó chưa biết chừng đó):

Ace dễ dàng nhận ra quy luật như sau:

  • Nếu đường giá của 2 tài sản này di chuyển cùng chiều (cùng tăng, cùng giảm hoặc đi ngang), thì IL sẽ là nhỏ nhất. VD như BTC và ETH thường di chuyển cùng hướng với nhau. Hoặc ace pair 2 loại stablecoin vào pool như USDC/USDT thì 2 đồng này sẽ luôn đi ngang và giao động xung quanh mức $1.

  • Nếu đường giá của 2 loại tài sản di chuyển khác chiều nhau (1 tài sản đứng yên, tài sản còn lại tăng hoặc giảm. Hoặc tệ hơn là 1 tài sản tăng, 1 tài sản giảm) thì ace phải chịu IL cực lớn. Cái case này có thể xảy ra với cặp ETH/USDC khi ETH có thể tăng hoặc giảm như USDC thì đi ngang. Hoặc xảy ra với trường hợp ace đóng góp thanh khoản cho “shitcoin” chẳng hạn, ví dụ OBAMASHIBAINU/ETH, thì 99.99% khả năng là ETH sẽ tăng theo thời gian còn con OBAMASHIBAINU sẽ giảm gần về lòng đất → dẫn tới việc ace sẽ còn lại rất ít ETH nhưng có cả 1 đống shitcoin trong pool.

Đưa tất cả vào một chỉnh thể

Bài viết hôm nay cũng khá dài rồi, tôi xin dừng phím tại đây. Chỉ có điều nhắc nhở ace khi chơi farming, thì nên hiểu được bản chất cuộc chơi ra sao, lợi nhuận của mình từ đâu mà đến, và rủi ro đi kèm với nó là gì.

Trong phạm vi bài này, tôi xin kết thúc bằng case thực tế mà tôi đóng góp thanh khoản vào pool UNI/ETH như dưới đây để ace tham khảo:

  • Bước 1: Tôi nhận thấy Uniswap là Dex top 1 trên Defi, do đó đồng token quản trị UNI của nó có tiềm năng tăng giá rất lớn và sẽ tăng trưởng cùng Ethereum → Tôi có kết luận 2 đồng UNI và ETH sẽ di chuyển cùng chiều nhau → Quyết định pair thanh khoản để kiếm được UNI + ETH nhiều hơn. Tới mùa Bull thì… choén!

  • Bước 2: nhìn vào đồ thị nến tuần của UNI/ETH trên sàn Binance, nghe đâu đó thì UNI có vẻ đi sideway 1 thời gian dài trong đoạn [0.002, 0.0056] suốt từ tháng 1/2022 cho tới nay.

Biểu đồ 1W của UNI/ETH trên sàn Binace
Biểu đồ 1W của UNI/ETH trên sàn Binace
  • Bước 3: Tôi quyết định đánh góp thanh khoản vào pool UNI/ETH trên Uniswap trên mạng Arbitrum.

Và hiện nay, so far là mọi thứ đang hoạt động ổn định. Pool đang tự động collect fee cả bằng UNI lẫn ETH cho tôi hàng ngày. Theo tính toán của tôi thì lợi tức từ pool này mang lại tầm 25% gì đó. Ở mức rủi ro bình thường, lợi nhuận bình thường.

Về Hội khuyến nông 4.0

  • Trang blog:

Hội Khuyến Nông 4.0

  • Nhóm Telegram:

Hội Khuyến Nông 4.0

  • Facebook Fanpage:

Hội Khuyến Nông 4.0

  • Twitter Hội trưởng:

twitter.com

* Tuyên bố miễn trừ trách nhiệm:* bài viết chỉ nhằm mục đích chia sẻ thông tin, kiến thức cá nhân từ người viết, không bao giờ được xem là lời khuyên đầu tư. Ace nên tham khảo ý kiến từ cố vấn tài chính của mình, và chỉ nên đầu tư với số tiền ace sẵn sàng mất.*

Subscribe to Hội Khuyến Nông 4.0
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.