Comment les AMM déterminent les prix des transactions : explication de la formule x*y=k

iconCoinrise
Partager
AI summary iconRésumé
Les mouvements de prix de l'ETH sont influencés par les mécanismes des AMM, notamment la formule x*y=k utilisée dans les pools de liquidité. Lorsqu'une transaction est exécutée, les réserves du pool changent, provoquant un slippage. Par exemple, acheter 1 ETH à partir d'un pool de 10 ETH / 20 000 USDC coûte 2 222,22 USDC. Les transactions plus importantes augmentent le slippage, tandis que les pools plus profonds le réduisent. Les nouvelles versions de Uniswap utilisent une liquidité concentrée, modifiant le fonctionnement de la formule. Les stablecoins bénéficient de courbes de prix plus plates, comme le montre le design StableSwap de Curve. Les traders doivent également considérer les altcoins à surveiller lors de l'évaluation des tendances du marché.

Un market maker automatisé ne prend pas d'ordres d'achat et de vente des acheteurs et vendeurs. Il fixe le prix d'un échange en fonction d'un pool de deux jetons à l'aide d'une formule — le plus souvent la formule du produit constant, x*y=k, selon la documentation des développeurs de Uniswap. Le ratio de réserve du pool détermine le prix avant l'échange, mais comme l'échange lui-même modifie ce ratio, le prix effectivement payé est moins favorable que le prix initialement quoted chaque fois que l'échange n'est pas négligeable par rapport au pool.

Ce que le pool et la formule font

Un pool de liquidité est un contrat intelligent contenant des réserves de deux tokens — par exemple ETH et USDC — que quiconque peut échanger directement, selon le blog Uniswap. Les fournisseurs de liquidité déposent les deux tokens en valeur égale pour alimenter le pool et fixer la valeur initiale d'une constante k, qui est le produit des deux quantités de réserves, selon le blog Uniswap. À partir de ce moment, chaque échange doit laisser x multiplié par y égal à cette même valeur k. La documentation technique d'Uniswap décrit k comme une variable invariante qui doit rester constante ou augmenter après chaque transaction. Étant donné que les deux soldes de réserves doivent continuer à se multiplier pour donner le même nombre, retirer un token du pool implique que l'autre doit augmenter pour compenser, et ce changement dans le ratio est ce qui fait évoluer le prix.

Faire les calculs : acheter 1 ETH à partir d'une piscine de 10 ETH / 20 000 USDC

Le blog Uniswap présente un exemple détaillé. Commencez avec une piscine de 10 ETH et 20 000 USDC. La constante est de 10 fois 20 000, soit 200 000. À ce point de départ, la piscine implique un prix au comptant de 1 ETH pour 2 000 USDC.

Maintenant, un trader achète 1 ETH. La réserve d’ETH du pool descend à 9. Pour maintenir la constante à 200 000, la réserve USDC doit augmenter jusqu’à 200 000 divisé par 9, soit environ 22 222,22 USDC, selon le calcul du blog Uniswap. Le trader a donc apporté 22 222,22 moins 20 000, soit 2 222,22 USDC, pour obtenir cet 1 ETH. Son prix effectif pour l’ETH acheté est de 2 222,22 USDC — et non les 2 000 USDC que le pool proposait avant le trade.

Ce écart, 2 222,22 USDC par rapport à une cotation initiale de 2 000 USDC, est appelé slippage. Ce n’est pas une commission ni un dysfonctionnement ; c’est simplement la formule qui fonctionne comme prévu, en réajustant le prix du pool à mesure que les réserves évoluent. Le blog de Uniswap indique que les trades plus importants par rapport à la taille du pool provoquent un plus grand slippage, tandis qu’un pool plus profond absorbe le même trade avec un mouvement de prix plus faible. Le même point est souligné dans la documentation pour développeurs de Uniswap, qui décrit cet effet comme un impact prix : les trades plus importants par rapport à la profondeur du pool déplacent davantage le prix, tandis que les trades plus petits s’exécutent plus près du prix spot actuel.

Le blog de Uniswap propose également une présentation plus simple destinée aux particuliers du même mécanisme : un utilisateur qui échange 100 $ de USDC contre ETH voit un taux calculé en temps réel par la formule du produit constant, et le contrat intelligent prélève les USDC et restitue l'ETH en une seule transaction, rééquilibrant le pool au fur et à mesure.

Là où la formule simple ne s'applique plus

L'arithmétique x*y=k ci-dessus décrit un pool de type Uniswap v2, où la liquidité est répartie sur toute la gamme de prix possible. La documentation des développeurs d'Uniswap indique que dans les versions v3 et v4, cette formule ne s'applique qu'à l'intérieur de la gamme de prix choisie par chaque fournisseur de liquidité — un design appelé liquidité concentrée. Dans v3, la position d'un fournisseur dans cette gamme est représentée par un jeton non fongible ERC-721 via un contrat appelé NonfungiblePositionManager ; dans v4, les positions sont suivies par un PositionManager utilisant ERC-6909 pour la comptabilité interne, selon la même documentation. La conséquence pratique est que deux pools négociant la même paire, sur des versions différentes d'Uniswap ou avec des gammes de liquidité différentes choisies par leurs fournisseurs, ne subiront pas le même mouvement de prix pour un échange identique, bien que les deux soient décrits comme fonctionnant selon la formule du produit constant.

Uniswap et Balancer appartiennent tous deux à une famille plus large que les auteurs d’un article de 2020, Guillermo Angeris et Tarun Chitra, appellent les constant function market makers (CFMM) — des market makers automatisés dont la règle de tarification est une fonction fixe des réserves du pool, dont x*y=k est un exemple. Le même article souligne que chaque paire d’actifs ne doit pas être tarifée avec cette courbe spécifique. Les stablecoins, qui sont ancrés à environ 1 $ mais fluctuent dans une bande étroite autour de ce niveau, sont tarifés plus efficacement avec une courbe plus plate près de l’ancrage, afin que les frais de trading restent faibles lorsque la paire est proche de 1 $ et augmentent à mesure qu’elle s’en éloigne — une approche que l’article attribue à la conception StableSwap de Curve. L’idée sous-jacente est la même que celle d’Uniswap — réserves et invariant fixant le prix — mais la forme de la courbe, et donc l’arithmétique que le trader devrait suivre, est différente.

Quelle taille ce marché a-t-il atteinte

L'article d'Angeris et Chitra, daté de mars 2020, a fourni des chiffres sur le paysage DeFi tel qu'il était décrit à l'époque. Il indiquait que les DEX détenaient alors environ 100 millions de dollars d'actifs numériques verrouillés, avec un volume de trading quotidien dépassant parfois 10 millions de dollars par jour. Un chiffre de l'article, issu des données de DeFi Pulse et daté du 12 février 2020, montrait que les contrats CFMM détenaient 129,7 millions de dollars contre 0,721 million de dollars détenus par des makers de marchés de prévision basés sur LMSR tels qu'Augur et Gnosis. Le même article notait qu'Uniswap avait été construit avec une subvention de 100 000 dollars de la Ethereum Foundation, contre 24 millions de dollars levés par 0x et 153 millions de dollars levés par Bancor lors de leurs offres initiales de pièces, et affirmait qu'Uniswap détenait environ cinq à dix fois la liquidité combinée de ces deux concurrents au moment de la rédaction de l'article. Ces chiffres décrivent un marché datant de cinq ans avant la rédaction de cette page et ne sont utiles que comme illustration historique de la rapidité avec laquelle un AMM simplement conçu a dépassé des alternatives plus financées et plus complexes — ils ne disent rien sur la taille actuelle de l'un de ces protocoles.

Ce que cette page ne vous dit pas

Cette page explique la formule du produit constant telle que documentée pour les pools de type Uniswap v2, en utilisant l'exemple numérique unique disponible dans les preuves. Elle ne traite pas les calculs de liquidité concentrée d'Uniswap v3 ou v4, ni la courbe StableSwap utilisée par Curve, car aucune des sources consultées ici ne fournit d'exemple numéroté pour ces cas — seulement une description de leurs différences.

L'exemple de 10 ETH / 20 000 USDC ci-dessus est sans frais. La documentation des développeurs de Uniswap indique que les frais d'échange sont configurés par pool et version du protocole, et que des frais protocole peuvent s'appliquer lorsqu'ils sont activés par gouvernance, mais aucune des sources utilisées ici ne mentionne un pourcentage de frais réel pour un pool spécifique ; le prix d'exécution de 2 222,22 USDC calculé ci-dessus serait donc légèrement plus élevé sur un pool réel appliquant des frais.

Le blog de Uniswap avertit, sans fournir de chiffres, que le prix final d'exécution d'un trader peut légèrement dériver de la cotation initiale affichée à l'écran, notamment lorsque la liquidité est faible ou que l'activité augmente brusquement. Aucune des sources utilisées ici n'explique comment des techniques telles que le sandwich trading interagissent avec cet écart lors d'une transaction en temps réel, au-delà de cet avertissement général.

Enfin, les chiffres de 2020 sur la valeur totale verrouillée et la levée de fonds via des ICO constituent une capture à un moment précis de l’histoire du marché, datée du 12 février 2020 pour la comparaison de la TVL et de la publication de l’article en mars 2020 pour la comparaison des levées de fonds. Ils ne doivent pas être interprétés comme des chiffres actuels pour Uniswap, 0x, Bancor ou le marché DeFi dans son ensemble.

Sources

Chaque fait ci-dessus est attribué à l'un de ces rapports. Lorsqu'ils diffèrent, l'article le précise.

Clause de non-responsabilité : les informations sur cette page peuvent avoir été obtenues auprès de tiers et ne reflètent pas nécessairement les points de vue ou opinions de KuCoin. Ce contenu est fourni à titre informatif uniquement, sans aucune représentation ou garantie d’aucune sorte, et ne doit pas être interprété comme un conseil en investissement. KuCoin ne sera pas responsable des erreurs ou omissions, ni des résultats résultant de l’utilisation de ces informations. Les investissements dans les actifs numériques peuvent être risqués. Veuillez évaluer soigneusement les risques d’un produit et votre tolérance au risque en fonction de votre propre situation financière. Pour plus d’informations, veuillez consulter nos conditions d’utilisation et divulgation des risques.