June 23, 2023

Как работает Impermanent Loss

Материал подготовлен одним из участников Web3 Academy для сообщества. Отдельное спасибо, что дал возможность выложить это и в публичный доступ на канале CryptoInside

Развлеку вас немного рассказами про Impermanent Loss (IL), а то все про этого зверя знают, но, возможно, не все понимают, как он образуется и как рассчитывается. Сейчас уже многие DEX перешли на V3 пулы по типу Uniswap, но далеко не у всех из них есть свои калькуляторы и, не понимая сути, рассчитать IL там бывает проблематичным. Я постараюсь показать, как рассчитывать IL в любом пуле на любой DEX, пользуясь только обычным калькулятором на телефоне.

Собственно, вся теория сводится к тому, что, внутри пула ликвидности, преобразование цены идет не по линейной зависимости от ее изменения, а, через квадратный корень от произведения уровней. Как выразить это понятней я не знаю, но в практической части все сразу станет ясно).

Поэтому сразу перейдем к практике:

Пример 1:

У нас есть 10000$ в WBTC по цене биткоина 30000$.

Мы входим в пул WBTC/USDT наверх в диапазоне 30000 – 35000, чтобы на нижней границе у нас были одни биткоины, а на верхней границе все перелилось бы в USDT.

-----35000

-----30000 (30000$ в WBTC)

❓: какой будет IL, если цена биткоина поднимется с 30000$ до 35000$

Переходим к расчетам:

1. Считаем холд: 10000$ х 35000 : 30000 = 11666,67$ (то, что мы бы получили, если бы оставили биткоин в покое).

2. Чтобы посчитать, сколько долларов мы получим в пуле, при выходе из диапазона, сначала считаем квадратный корень из произведения уровней:

√30000 х 35000 = 32403,7

И искомую сумму считаем по формуле:

10000$ х 35000 : 32403,7 = 10801,23$

То есть сумму, внесенную в пул, мы умножаем на верхнюю границу и делим на квадратный корень из произведения уровней.

3. Ну и IL = 11666,67$ – 10801,23$ = 865,44$ или 7,42%Смотрим калькулятор:

Собственно вот эта потеря, возникающая, при таком алгоритме преобразования активов внутри пула и есть Impermanent Loss.

Пример 2:

Условия: вложили 10000$ в пул WBTC/USDT

Цена биткоина 30000$

Диапазон 25000 – 33000

Биткоины вложены на 3481,61$

USDT на 6518,39$

-----33000

-----30000 (3481,61$ в WBTC / 6518,39 USDT)

-----25000

❓: как посчитать IL при выходе из диапазона вверх и вниз?

Переходим к расчетам:

Движение к верхней границе:

На самом деле надо понять только одно – движение к верней границе – это просто перелив 3481,61$ из биткоинов в USDT в диапазоне 30000 – 33000 аналогично предыдущему примеру.

1. Поэтому считаем холд так:

3481,61 х 33000 : 30000 = 3829,8 и плюсуем 6518,39 USDT.

Получаем 10348,19 $

2. Теперь что мы получим при выходе из пула:

Сначала квадратный корень из произведения уровней:

√30000 х 33000 = 31 464,26

Теперь смотрим, что получается, когда наши биткоины переливаются в USDT

3481,61 х 33000 : 31464,26 = 3651,54 и плюсуем те же самые 6518,39 USDT

Получаем: 10169,93 $.

3. Считаем IL:

10348,19 – 10169,93 = 178,23$

Или 178,23 : 10348,19 х 100 = 1,72%

Смотрим калькулятор:

Движение к нижней границе:

Я думаю, все уже поняли, что это просто перелив 6518,39 USDT в WBTC в диапазоне от 30000 к 25000

1. Считаем холд:

Биткоин: 3481,61 х 25000 : 30000 = 2901,34$ и прибавляем 6518,39 USDT

Получили 9419,73$

2. Теперь считаем пул:

Сначала √30000 х 25000 = 27386,12

Теперь во что перельются наши USDT:

(умножаем их на нижнюю границу и делим на кв. корень произведения уровней)

6518,39 х 25000 : 27386,12 = 5950,45 $ ( уже в WBTC)

Ну и прибавляем наши упавшие биткоины 2901,34$

Получаем: 8851,7$ (в WBTC)

3. Считаем IL

9419,73 – 8851,7 = 568,03$ или 6%

Смотрим калькулятор:

Пример 3:

Нам осталось разобраться с пулами с двумя волатильными активами. Поэтому для примера возьмем:

В случае с двумя волатильными активами мы имеем дело с отношением цен.

Сейчас отношение цены битка к цене эфира 15.8

И я задал порог дивергенции (расхождения) -18 и конвергенции (схождения) – 10

При таких параметрах в пуле из 10000$ активы распределяются на

  • 7651,54 в ETH
  • 2348,46 в WBTC

Что и как здесь можно посчитать?

Понятно, что монеты могут синхронно подняться в 10 раз или упасть в 5, при этом оставаясь внутри диапазона. При таких условиях посчитать точную сумму убытков при IL нельзя, она может отличаться в 10 раз при разных ценах активов в пуле. Но всегда точно можно определить % потерь на IL относительно холда. То есть я хочу сказать, что при любых ценах, например: биткоин 1800$ эфир 100$ (порог 18) или биткоин 100000$ эфир 10000$ (порог 10), потеря на IL в % от холда будет одна и та же и задается сразу тем диапазоном, который мы выставили.

❓Как его быстро прикинуть? Да точно также, как и в предыдущих примерах.

Рассчитаем % IL при дивергенции – расхождении цены к 18. Это произойдет если биткоин вырастет, или эфир упадет, но, так как точная сумма потерь нам не важно, мы для простоты смоделируем ситуацию, когда биткоин растет, а эфир остается на месте.

1. Считаем холд:

2348,46 х 18 : 15,8 = 2675,46 Прибавляем эфир, который остался неизменным: 7651,54

Получаем: 10327$ (в ETH)

2. Считаем пул:

Сначала √18 х 15,8 = 16,86

Теперь, что вышло из перелива: 2348,46 х 18 : 16.86 = 2507 Суммируем с эфиром 7651,54

Получаем 10158,54

3. IL: 10327 -10158,54 = 168,46 или 1.63% потери при достижении верней границы.

Сразу проиллюстрирую: биткоин (для радости сердца) вырос до 60000$, эфир соответственно 60000 :18 = 3333,33

Смотрим калькулятор:

IL = 1,63%

Расписывать нижнюю границу я не буду, все аналогично, добавлю только:

1. Пулы V2 считаются по тому же принципу, там только чуть другая формула да и IL в разы меньше.

2. Пулы в TJ считаются точно также, только там надо считать каждую корзину отдельно, так как это полноценный пул.