Tout comprendre à l'impermanent loss (pertes intermittentes)

Les pertes intermittentes sont l'un des risques que vous prenez lorsque vous bloquez vos jetons dans une liquidity pool. Avant de fournir des liquidités aux protocoles de la DeFI, attiré par des rendements inimaginables, veillez à bien comprendre ce que vous faîtes, sinon vous risquez de vous y brûler les doigts.

La DeFi est un des grands gagnants du bull run. Les jetons des différentes plateformes s'échangent à des prix parfois 10x supérieurs à leur valeur d'avant celui-ci.

Nombre de projets à gros rendements vous récompensent lorsque vous fournissez des liquidités dans une paire de jetons. Mais fournir des liquidités aux protocoles de la DeFi comporte des risques. L'un d'eux, c'est les pertes intermittentes.

Que sont les pertes intermittentes ?

Non, le terme ne se réfère pas aux problèmes mensuels de Madame. Ici, on parle de crypto, ça suffit avec l'humour douteux.

L'impermanent loss (ou pertes intermittentes) est une perte temporaire de fonds qui peut se produire lorsque vous fournissez des liquidités à une liquidity pool. Cette perte est possible tout simplement parce qu'il existe d'autres endroits que votre liquidity pool où s'échangent ces jetons. Leur valeur sur le marché est un facteur externe au système de la liquidity pool, ce qui peut lui jouer des tours.

Comment se produit l'impermanent loss ?

Prenons un exemple pour bien comprendre comment il arrive.

Imaginez que vous fournissiez les jetons suivants à un protocole de liquidité qui prend une commission de 0.3% de frais de transactions :

jetonquantitévaleur
ETH11000$
USDC10001000$

La liquidity pool, elle, dispose après votre dépôt de 1000x celui-ci. Vous possédez donc 0.1% de la pool.

La pool contient donc :

jetonquantitévaleur
ETH10001000000$
USDC10000001000000$

Un peu plus tard, le prix de l'Ethereum augmente rapidement sur Binance, mais votre liquidity pool n'a pas réalisé tant d'échanges que ça. Alors que l'ETH s'échange désormais à 1200$ sur binance, sur votre pool, il s'achète toujours contre 1000 USDC. Son prix ne changera qu'une fois que des échanges auront eu lieu.

Des possibilités d'arbitrages apparaissent alors : un utilisateur pourrait acheter des ETH sur votre pool à 1000$ pour le revendre à 1200$ sur binance, empochant les profits. Malgré les 0.3% de frais de la pool, 0.1% de frais sur binance, plus toutes les transactions intermédiaires, ça reste très rentable.

C'est en réalité ce qu'il se passe, il existe de nombreux bots d'arbitrages qui opèrent entre les différents exchanges (centralisés ou non) afin de tirer des profits immédiats des divergences dès lors que ça devient possible. C'est pour cette raison que vous verrez souvent les prix des différents exchanges bouger de façon presque synchronisée.

Mais le trader d'arbitrage ne pourra pas vider la pool pour autant. En effet, plus il voudra acheter de jeton, plus son prix moyen d'achat augmentera.

le modèle du Constant Product AMM

Dans les algorithmes de market making automatisés (Automated market making ou AMM), c'est celui d'Uniswap, le Constant Product AMM, qui est aujourd'hui l'un des plus utilisés.

Il repose sur un principe très simple : le produit k de la quantité des jetons doit rester constant. Aussi, si la pool contient a ETH et b USDC, le produit a x b sera maintenu constant dans la piscine de liquidité au fur et à mesure des échanges.

Automate de marché à produit constant

Cette valeur k ne changera que lorsque des liquidités seront ajoutées ou retirées de la liquidity pool.

Ce mécanisme très simple permet de réguler le prix des jetons de la paire, l'un par rapport à l'autre.

Lorsque des ETH sont échangés contre des USDC ou vice-versa, le ratio entre les tokens de la pool change. Un slippage ou dérapage s'effectue alors. Plus un actif de la pool devient rare, plus il devient cher par rapport à l'autre.

Voici une représentation graphique des différentes positions que peut prendre la liquidity pool dans son ratio entre quantité d'ETH et quantité d'USDC détenus.

liquidity pool dérapage

Cet algorithme à l'avantage de toujours pouvoir fournir des liquidités, mais en pratique, si l'un des tokens venait à manquer dans la pool, les prix deviendraient alors impraticables (car de plus en plus proches de l'infini).

Calcul des prix dans un Constant Product AMM

Dans notre exemple, la pool contient 1000 ETH et 1M USDC, donc k=1 000 000 000.

Il est alors très facile de calculer le prix à payer pour un échange de jeton. Si le trader d'arbitrage souhaite retirer 1 ETH de la pool, le prix à payer (appelons le P) se déduit facilement : il devra alors y avoir dans dans la pool 999 ETH et (1 000 000 + P) USDC.

Sachant que k reste contant, on a alors 999 x (1 000 000 + P) = 1 000 000 000, ce qui se résout par P = 1001 et des poussières. Si le trader retire un ETH de la pool, celui-ci lui coûtera 1001 UDSC. S'il souhaite en retirer 50, celà lui donnera un prix moyen de 1052 USDC par ETH, avec la même formule. Les frais de transactions seront en plus.

De manière générale, il est facile de calculer le prix moyen p pour lequel nous pouvons retirer n jetons ETH de la pool. L'algorithme du Constant Product AMM nous assure qu'on devra alors avoir :

Retrait de jetons d'un automate de marché à produit constant

Nous connaissons tous les termes de cette équation sauf p. Nous pouvons le résoudre facilement (je vous épargne l'équation):

Résolution du prix dans un automate de marché à produit constant

Comme on sait que ab = k, on sait donc que k - ab = 0. On peut donc simplifier le résultat ci-dessus:

prix de retrait dans un automate de marché à produit constant

Notez que le prix dépend de a et de b, c'est à dire de la quantité totale de jetons de chaque paire dans la pool. Plus a et b seront grand, moins les variations de n auront d'impact sur le prix. En d'autres termes : plus il y aura de liquidités dans la pool, plus les prix seront stables.

La perte intermittente se calcule par rapport à la HOLD value

Supposons pour la suite de l'exemple que notre trader d'abitrage retire 50 ETH de la liquidity pool, pour 1052 USDC par ETH.

La pool contient désormais :

jetonquantitévaleur
ETH9501140000$
USDC10527581052758$

Deux choses à noter. D'abord, pour ceux qui suivent le calcul et qui ont trouvé que la pool devrait posséder 1052600 USDC, c'est très bien. Mais vous avez oublié les frais de transactions : notre trader a du laisser 0.3% en plus des 52600 USDC pour acheter les ETH, soit 158 UDSC en plus dans la pool. Vous avez gagné un millième de ces 158 USDC, soit 0.158 USDC.

D'autre part, la valeur n'est plus la même dans le tableau de droite (et c'était bien ça le problème de départ). L'ETH vaut désormais 1200$ l'unité, et non plus 1000$.

Bref, vous possédez 0.1% de cette pool. Si vous retirez vos fonds maintenant, vous recevriez:

  • 0,95 ETH
  • 1053 USDC (j'arrondis)

Pour une valeur totale de 2193$.

Super non ? Vous aviez déposé 2000$ dans la pool et maintenant vous en retirez 2193$ ? Non. Si vous aviez simplement gardé vos jetons, vous auriez à présent 2200$. **Vous avez 7$ d'impermanent loss**.

Le farming de frais de transactions ne compense pas toujours les pertes intermittentes, c'est toute la nature du sujet.

Les pertes tendent à disparaître avec le temps

Les pertes intermittentes ne disparaîssent jamais vraiment, mais si les tokens tendent à être stables dans le temps l'un par rapport à l'autre, la perte intermittente sera dépassée par les frais de transactions, qui eux, montent indéfiniment.

Voici la liquidity pool dans laquelle vous avez mis de l'argent. Elle contient un certain nombre de jetons ETH et un certain nombre de jetons USDC au moment ou vous y mettez vos liquidités. Ajoutons un curseur entre les deux pour visualiser l'exemple.

liquidity pool ETH/USDC

Au fur et à mesure des transactions, ce curseur sera amené à se déplacer dans un sens ou dans l'autre.

Voici un petit test. Si le curseur se déplace directement de sa position initiale à celle-ci, vous gagnez ou vous perdez de l'argent ?

liquidity pool ETH/USDC

Vous perdez de l'argent. C'est le cas de notre exemple précédent. Vos frais de transactions ne compensent pas la perte par rapport au HOLD.

Un autre test, a présent. Si le curseur se déplace directement de sa position initiale à celle-ci, vous gagnez ou vous perdez de l'argent ?

liquidity pool ETH/USDC

Vous perdez de l'argent aussi.

Plus le curseur se déplace dans un sens ou dans l'autre, plus grande est notre perte intermittente. Mais c'est également quand il se déplace que vous récupérez les frais de transactions. Ce que vous voulez, en réalité, c'est qu'il se déplace et qu'il revienne ensuite sur ses pas.

Si vous passez de la première figure à la seconde, pour aller ensuite à la troisième, et puis à la première. Là, vous serez bien gagnant.

Quand et comment ajouter des liquidités à un protocole DeFI

Il y a plusieurs règles à retenir pour éviter les mauvaises surprises.

Choisissez des liquidity pools qui disposent déjà de beaucoup de liquidités

Les pools qui disposent de peu de liquidités ont mécaniquement une exposition aux pertes intermittentes énorme. Vous pouvez estimer la taille de la pool en faisant l'opération pour ajouter les liquidités mais en ne la validant pas : les DEX vous indiquent souvent alors le pourcentage de la pool que vous détiendrez, ce qui vous permettra de calculer le montant déjà présent dans celle-ci.

Vérifier si les jetons de la paire ne sont pas surévalués ou sous-évalués par la pool.

Si vous cherchez à maximiser les frais de transaction sur vos liquidités, il est primordial de vérifier les prix d'échanges sur cette paire avant d'y injecter vos liquidités. En effet, si l'un des actifs semble sur-évalué ou sous-évalué par rapport au prix du marché, un arbitrage est sans doute possible. Si les prix du marché vous semblent eux-même incohérents, il vaut mieux attendre ou chercher une autre opportunité.

Si vous devez faire un choix, préférez les jetons sous-évalués aux jetons sur-évalués. Il est toujours préférable de subir des pertes intermittentes lorsqu'on gagne de l'argent (grâce à la montée de la valeur du jeton) que lorsqu'on en perd.

Les liquidity pools adossées à un (ou deux) stablecoin comportent moins de risques

Les stablecoins se déplacent peu en valeur (c'est l'intérêt d'ailleurs). Si vous ajoutez des liquidités sur une paire X/Y, le pire scénario en terme de pertes intermittentes serait que la valeur de X augmente tandis que celle de Y diminue.

C'est pourquoi le risque de pertes est bien réduit lorsque l'un des deux jetons est une stablecoin. Une liquidity pool entre deux stablecoins peut représenter un placement très intéressant : les pertes intermittentes y sont négligeables et très rapidement dépassées par le farming des frais de transaction. De plus, le placement peut-être utilisé comme un hedge contre un crash du marché : en cas de besoin, vous aurez facilement accès à du cash pour pouvoir racheter à bas prix et compenser vos éventuelles pertes.

N'exposez pas tout votre capital

Un placement dans la DeFi est risqué. Les protocoles, mêmes parmi les poids lourds de la DeFi, font face à des attaques extrêmement évoluées, comme celle de Yearn Finance.

Lorsque les coffres contiennent beaucoup de fonds, il devient rentable pour des attaquants talentueux de répliquer les smart contracts et de préparer minutieusement une attaque, de monter un testnet local, de l'éprouver et de la planifier, pour une sortie de plusieurs millions de dollars en valeur.

Considérez un placement dans la DeFi comme un placement à haut risque, à vous d'estimer le risk/reward ratio sur lequel vous voulez opérer.

Méfiez-vous des gros rendements

Beaucoup de projets cherchent à incentiver la fourniture de liquidités en permettant aux fournisseurs de staker leurs jetons LP (ceux reçus en échanges des liquidités), contre des récompenses (en général, des jetons de la plateforme). Cette mécanique a été inventée par Sushiswap, et son token SUSHI.

Les jetons de la plateforme ont alors, en général, une utilité au sein de celle-ci. Sur Sushiswap, PancakeSwap et d'autres, celui-ci peut être utilisé dans des IFOs, afin de farmer d'autres jetons.

Il y a une grande quantité de projets qui font surface tous les jours, en particulier sur la Binance Smart Chain actuellement. Méfiez-vous des nouvelles plateformes qui émergent et proposent de gros rendements : c'est un placement risqué.

En effet, si vous fournissez des liquidités à une de ces plateformes, même à travers un vault pour optimiser le yield farming, vous vous exposez à un risque en particulier : celui de l'anéantissement de la valeur du jeton.

Lors d'un exit scam, par exemple, les créateurs de la plateforme TarteAuxPommesSwap iront échanger les jetons TarteAuxPommes (qu'ils auront récupérés via le protocole ou préfarmés) sur les liquidity pools. Celles-ci seront alors vidées de leurs ETH, BNB, BUSD, ou autre jeton qui possède une réelle valeur, et les pools ne contiendront presque plus que des jetons TarteAuxPommes qui, eux, ne vaudront plus un clou dès lors que le site sera fermé ou abandonné.

Si vous êtes amateurs des placements à risques à la recherche de gros rendements sur les nouvelles plateformes, il serait recommandé d'investiguer minutieusement le projet et l'équipe, les smart contracts et leurs audits.

Voir vos pertes intermittentes

Vous pouvez calculer les pertes intermittentes en investiguant les prix à l'échange sur la paire dans laquelle avez placé des liquidités. C'est fastidieux, mais recommandé avant de retirer des fonds d'une liquidity pool, surtout si vous les y avez laissé peu de temps.

Si vous êtes sur la Binance Smart Chain, YieldWatch sera probablement outil qui se révèlera très pratique et vous évitera de fastidieux calculs. Si vous en connaissez un similaire pour Ethereum, n'hésitez pas à nous le dire.

Bon market making à vous.