AMM (Automated Market Maker) și arbitrajul pe DEX

Introducere

Automated Market Maker, pe scurt AMM, reprezintă componenta centrală a unui DEX (Decentralized Exchange). Chiar dacă se crede că AMM a fost creat de Vitalik Buterin în 2017 (postare pe Reddit), conceptul provine din anii 90, când a fost implementat de către Shearson Lehman Brothers (investment bankers) și  Automated Trading Desk (ATD, firmă de tehnologie din domeniul financiar) în platforma primilor.

AMM înlocuiește order book-ul tradițional cu un mecanism computerizat, bazat pe algoritm, care folosește fonduri dintr-un bazin de lichiditate (Liquidity Pool, LP).


Formula X*Y=K

În sistemul de tranzacționare clasic, bazat pe order book, tranzacția se realizează între un cumpărător și un vânzător. În sistemul bazat pe AMM, contrapartida cumpărătorului o reprezintă algoritmul AMM, care folosește fonduri din LP. Acest algoritm asigură o lichiditate perpetuă a LP, printr-o formulă logaritmică foarte simplă: X*Y=K, unde X și Y reprezintă cantitățile de monede X și Y din LP iar K o constantă. Astfel, pe perechea X/Y vom avea întotdeauna asigurată lichiditatea, deoarece, când cantitatea de monedă a uneia dintre ele scade, cealaltă crește automat. X*Y=K reprezintă forma simplificată a ecuației și este valabilă doar înainte de a se fi realizat vreo tranzacție. Vom vedea acest lucru în cele ce urmează.


Formula extinsă, exemplificată

Să pornim de la un exemplu concret. Considerăm două monede ABC și USDC (stable coin = 1$), între ele fiind o paritate de 1:1,4, atât pe DEX cât și pe un CEX pe care de asemenea e cotată moneda ABC. Deci pentru fiecare monedă ABC avem 1.4 USDC în LP. Considerând că-n LP avem 10M ABC rezultă că vom avea și alte 14M USDC, deci un total de 28M$. Astfel, K va fi 10M*14M, adică 140T (trilioane), valoare care se va menține tot timpul constantă. Pentru moment, formula X*Y=K e mai mult decât suficientă. Ce se întâmplă însă daca vrem, prin swap, să convertim o monedă în cealaltă? Apoi mai avem și taxe de tranzacționare (fee). Vom realiza că simpla formulă X*Y=K nu mai este suficientă. Acum, ne vom confrunta cu o formulă ceva mai complexă:

(α - Δα)*(β + Δβ)=K  (pentru simplitate excludem din formulă taxele de tranzacționare)

unde:

  • α: cantitate monedă α
  • β: cantitate monedă β
  • Δα: cantitate monedă extrasă din LP
  • Δβ: cantitate monedă introdusă în LP
Continuând cu exemplul de mai sus, să presupunem că vrem să convertim o cantitate de 10K USDC în ABC. Plecăm de la următoarele valori:

  • K: 140T (140.000.000.000.000)
  • α: 10M ABC (10.000.000)
  • β: 14M USDC (14.000.000)
  • Δα: cantitate ABC extrasă, care trebuie calculată
  • Δβ: 10K USDC (10.000)
Aplicând formula de mai sus pe valorile menționate, vom obține următoarea ecuație:
(10.000.000 - Δα) * (14.000.000 + 10.000)=140.000.000.000.000

Rezultă Δα=7137,758743754461 ABC. Deci, cu 10K USDC obținem aprox. 7137,75 ABC. În LP au intrat 10K USDC și au ieșit aprox. 7137,75 ABC. În urma acestei operațiuni, componența LP arată astfel:
  • 14.010.000 USDC (14M USDC + 10K USDC)
  • 9.992.862 ABC (10M ABC - 7137,75 ABC)
În final, cu 10K USDC am obținut 7137,75 ABC la o paritate de 1,401 (10.000 / 7137,75). Slippage-ul, la această paritate, este unul foarte bun (paritatea inițială a fost 1,4). Această nouă paritate nu atrage atenția niciunui arbitrajor. Să mergem mai departe și să considerăm un alt exemplu. De această dată, un investitor cu putere financiară mai mare, intenționează să achiziționeze de 300K USDC monede ABC. În noile condiții din LP, vom avea următoarea ecuație:
(9.992.862 - Δα) * (14.010.000 + 300.000)=140.000.000.000.000

Rezultă Δα=209.493,7260656883 ABC. Deci, cu 300K USDC obținem aprox. 209.494 ABC. În LP au intrat de această dată 300K USDC și au ieșit aprox. 209.494 ABC. În urma acestei operațiuni, componența LP arată astfel:
  • 14.310.000 USDC (14.010.K USDC + 300K USDC)
  • 9.783.368 ABC (9.992.862 ABC - 209.494 ABC)
În final, cu 300K USDC s-au obținut 209.494 ABC la o paritate de 1,474 (300.000 / 209.494). Slippage-ul, la această nouă paritate, nu mai este la fel de bun iar noua paritate atrage deja atenția arbitrajorilor, deoarece pe CEX avem încă un curs ABC-USDC la o paritate de 1,4.
Un arbitrajor, sesizând diferența de paritate dintre DEX și CEX, se hotărăște să o speculeze, scoțând 220K ABC din CEX și vânzând-o pe DEX. Pentru cei 220K ABC a plătit 308K USDC (220K * 1,4). De această dată, vom rezolva celebra, de pe acum, ecuație cu următoarele valori:
(14.310.000 - Δα)*(9.783.368 + 220.000)=140.000.000.000.000

Rezultă Δα=314.714 USDC. Deci, cu 308K USDC folosiți pentru achiziționarea de 220K ABC de pe CEX și revânzarea acestora pe DEX s-au făcut 314.714 USDC, profitul rezultat fiind de 6714 USDC (314.714 - 308.000). De această dată, componența LP arată astfel:
  • 13.995.286 USDC (14.310.000 USDC - 314.714 USDC)
  • 1.0003.368 ABC (9.783.368 ABC + 220.000 ABC)
Operațiunea s-a realizat la o paritate de 1,43 (314.714 / 220.000), în scădere de la 1,474. Deci, slippage-ul a scăzut. Cu profitul realizat, arbitrajorul poate achiziționa de pe CEX o altă cantitate de monedă ABC, pe care să o vândă în continuare pe DEX, până când paritatea pe DEX scade până acolo încât să nu mai renteze arbitrajul (spre o valoare apropiată de 1,4, paritatea de pe CEX).


Notă de final

Teoretic, arbitrajul poate funcționa și invers, dinspre DEX spre CEX. Practic, nu funcționează încă, fiindcă CEX-urile, prin lichiditatea sporită, domină DEX-urile, iar tentativele de arbitraj dinspre DEX spre CEX ar eșua. În viitor se pot schimba lucrurile.
În altă ordine de idei, arbitrajul este realizat de mai mulți arbitrajori, cu ajutorul boților de arbitraj.

Niciun comentariu:

Trimiteți un comentariu