Непостоянные потери в Uniswap V2 + V3
В этой статье я расскажу что такое Uniswap Impermanent Loss, и почему это такая острая тема для провайдеров ликвидности.
Более конкретно, что вас ждёт в статье:
Небольшое погружение в то как работает Uniswap V2
Impermanent Loss для Uniswap V2
Погружение в то как работает Uniswap V3
Impermanent Loss для Uniswap V3
Проблемы провайдеров ликвидности или почему эта тема очень важна для них
Небольшое погружение в то как работает Uniswap V2
Uniswap — децентрализованная биржа, на которой можно обменять одни токены на другие. Там нету заявок на покупку или на продажу, а цена определяется формульно:
— количество токенов первого типа в пуле
— количество токенов второго типа в пуле
— константа, задающаяся начальными условиями: произведение кол-в токенов в момент времени перед обменом
Пусть в какой-то момент времени в пуле было монет и , и пусть какой-то человек хочет купить токены второго типа (), за токены первого типа в размере . Тогда происходит следующее.
В пуле теперь токенов, константа гиперболы та же, поэтому выполняется
Отсюда находим — сколько токенов он получит за отданные
Токены второго типа стали дороже. Цена, по которой произошел обмен: (либо перевернуть дробь, если хотим измерить в другой монете)
Откуда берется ликвидность в этих пулах?
Есть другая часть пользователей, которая предоставляет ликвидность в такие пулы — провайдеры ликвидности. Они кладут свои токены в эти пулы, и получают комиссии за каждый обмен токенов в этом пуле. Например, при свопе, описанном выше, сначала берется комиссия, и только потом происходит обмен токенов.
Комиссия за обмен распределяется между провайдерами ликвидности в соответствии с вкладом токенов в этот пул.
После обмена общее количество токенов первого типа выросло, а второго — уменьшилось, соответственно у провайдеров ликвидности соотношение кол-ва токенов, которое у них лежит в пуле, тоже поменялось.
Impermanent Loss (для Uniswap V2)
Когда другой пользователь произвел обмен токенов, цена одного токена к другому поменялась. Также поменялось и общее соотношение количества токенов в пуле и соотношение у каждого провайдера ликвидности.
Количество токенов, которые стали стоить дороже, уменьшилось, а тех что стали стоить дешевле — увеличилось.
В итоге суммарная стоимость активов у каждого провайдера ликвидности поменялась.
— цена одного токена, выраженная во втором токене
Выведем формулу для Impermanent Loss Uniswap V2:
Суммарная стоимость активов в зависимости от цены:
Пусть в начальный момент времени юзер планирует положить в Uniswap V2 токены в количествах , . В начальный момент времени суммарная стоимость этих токенов равна:
Если бы человек не клал токены в юнисвоп, а просто «холдил» бы их, его суммарное портфолио в зависимости от цены:
Для упрощения формул, положим ,
То есть таким образом можно смотреть, насколько юзер в минусе / плюсе по сравнению с тем, как если бы он не клал токены в uniswap, а просто пассивно бы их держал на кошельке.
Иногда Impermanent Loss называют просто зависимостью суммарной стоимости позиции от цены, потому что не всегда интересно сравнивать только с позицией холда токенов в изначальной пропорции.
Небольшое погружение в то как работает Uniswap V3
Важно:
Я здесь специально опускаю некоторые детали, связанные с устройством Uniswap V3 (например активация лишь некоторых price ticks, разное кол-во decimals у разных токенов, etc) так как в данном случае они не сильно влияют на результат, но усложняют статью.
В случае Uniswap V3 провайдеры ликвидности могут выбирать, в каком ценовом диапазоне будут использоваться их токены. Таким образом, предоставляемая ликвидность распределяется равномерно не на весь диапазон , а равномерно в отрезке ,
— нижняя, — верхняя выставленная цена.
Это выгодно тем, что теперь, выставляя более узкий ценовой диапазон, доля юзера в ликвидности на конкретной цене (на конкретном 'price tick') становится больше, поэтому комиссий он заработает больше. Однако увеличивается и Impermanent Loss, который испытывает его позиция.
Идея аналогична с Uniswap V2. При обмене первого токена на второй так же прибавляется , и убавляется .
В случае Uniswap V3 уже гипербола немного другая: приспустившись, она уже пересекает оси Ox и Oy.
Если сделаем замену переменных, можем привести эту гиперболу к привычному виду:
В случае когда выполняются неравенства, юнисвоп позиция находится в активном состоянии и генерирует комиссии.
Соответственно будут работать выведенные выше формулы, связывающие кол-во токенов, ликвидность и текущую цену (формулы из Uni V2):
Теперь выразим , :
Когда цена становится равной , ликвидность юзера уже не участвует с обменах и не получает комиссии. Также теперь у него 0% токенов первого (цена которых поднялась) типа и 100% токенов второго типа.
Аналогично с тем, когда цена упала до . Тогда у юзера теперь становится 100% первого (обесценившегося) токена и 0% второго токена и ликвидность снова не участвует обменах.
Зануляя либо либо , можем найти точное количество токенов оставшегося типа.
Количество токенов, когда цена поднялась выше верхней цены:
y^* = L\sqrt{P} — L\sqrt{P_a} = L\sqrt{P_b} — L\sqrt{P_a}» src=«https://habrastorage.org/getpro/habr/formulas/c/cf/cf6/cf6c95f608fcec231001ead90af25ae2.svg» />
Количество токенов, когда цена опустилась ниже нижней цены:
x^* = \frac{L}{\sqrt{P}} — \frac{L}{\sqrt{P_b}}» src=«https://habrastorage.org/getpro/habr/formulas/6/64/64d/64d20d493f0a6cd43f1b9239284e6a37.svg» />
Impermanent Loss (для Uniswap V3)
Аналогично выводу IL для Uniswap V2, запишем полную стоимость позиции в зависимости от цены:
Пусть как прежде
Если бы юзер не открывал юнисвоп позицию, а просто холдил в том же соотношении как в начальный момент времени:
Impermanent loss:
Немного упростим
Эта формула справедлива при выполнении неравенств, которые я писал чуть выше. На всякий случай продублирую ещё раз.
Проблемы провайдеров ликвидности
Теперь рассмотрим риск-профиль юзера, положившего ликвидность в Uniswap V3.
Риск-профиль — в данном случае зависимость суммарной стоимости позиции от цены.
При сильных падениях цены, во-первых, у юзера будет всё больше и больше дешевеющих токенов, соответственно он будет терять денег всё больше и больше — то есть можно сказать что у него незащищенный риск, связанный с ценой базового актива.
Юзеру вероятно хотелось бы быть менее зависимым от цены на базовый актив (e.g. цены на эфир, если это пара «eth-usdc»), и при этом всё ещё зарабатывать комиссии как провайдер ликвидности.
Что он может сделать?
Он может захеджировать (=защититься от риска) свою позицию.
А как это можно сделать — расскажу в следующих статьях.
Больше интересных статей из мира DeFi — в моём телеграм-канале:
https://t.me/kirrya_achieves