Непостоянные потери

Непостоянные потери (Impermanent loss) — это разница между стоимостью токенов, внесённых в пул ликвидности автоматического маркет-мейкера, и стоимостью тех же токенов, если бы владелец просто держал их в кошельке. Потери возникают, когда соотношение цен двух токенов в пуле меняется по сравнению с моментом внесения, и растут вместе с величиной этого изменения.

Название объясняется тем, что пока средства лежат в пуле, убыток существует только в расчёте: если цены вернутся к исходному соотношению, разница исчезнет. Окончательным он становится в момент вывода средств. В документации протокола Balancer то же явление называют потерями от расхождения. Непостоянные потери свойственны протоколам децентрализованных финансов, в которых цену обмена задаёт формула пула, а не встречные заявки участников торгов.

Откуда берутся непостоянные потери

Пул с постоянным произведением, как в Uniswap v2, держит резервы двух токенов так, чтобы при обменах их произведение не менялось: x · y = k. Цена токена внутри пула равна отношению резервов и сама за внешним рынком не следит. Когда на других площадках токен дорожает, в пуле он остаётся дешёвым, пока арбитражёры не выкупят его и не доведут цену пула до рыночной. В итоге пул отдаёт подорожавший токен и получает взамен второй, поэтому при выводе у участника оказывается меньше подорожавшего актива, чем он внёс. При падении цены механизм работает зеркально: пул набирает подешевевший токен и отдаёт тот, что сохранил стоимость.

Условный пример. Участник единолично вносит в пул 10 токенов A по 100 $ и 1 000 токенов B по 1 $, всего 2 000 $, и произведение резервов равно 10 000. Цена A на внешнем рынке вырастает в 4 раза, до 400 $. После арбитража в пуле остаются 5 токенов A и 2 000 токенов B: произведение прежнее, а цена A внутри пула равна 400 $. Доля участника стоит 4 000 $, те же токены в кошельке стоили бы 5 000 $. Разница в 1 000 $, или 20% от стоимости хранения, и есть непостоянные потери без учёта сборов за обмен.

Вложенные 2 000 $ при этом превратились в 4 000 $. Непостоянные потери в этом случае означают упущенную выгоду по сравнению с хранением, а не убыток к вложенной сумме. При падении цены A в 4 раза, до 25 $, картина хуже: в пуле остаются 20 токенов A и 500 токенов B стоимостью 1 000 $ против 1 250 $ при хранении. Потери те же 20%, но теперь они добавляются к убытку от падения цены.

Непостоянные потери: стоимость доли в пуле и хранения в кошельке от цены токена, разница −20%

Сколько теряет пул 50/50 при изменении цены

Для пула с постоянным произведением и равными по стоимости долями двух токенов результат зависит только от того, во сколько раз изменилось соотношение их цен (r). Стоимость доли относится к стоимости хранения как 2√r / (1 + r), а непостоянные потери равны единице минус это отношение. Направление движения роли не играет: рост цены в 2 раза и падение в 2 раза дают одинаковые потери. Путь цены тоже не важен, если не считать сборов: потери определяет только соотношение цен в момент сравнения.

Изменение цены токена A относительно токена B

r

Стоимость доли от стоимости хранения, %

Непостоянные потери, %

Рост на 25%

1,25

99,4

0,6

Рост на 50%

1,5

98,0

2,0

Рост в 2 раза

2

94,3

5,7

Рост в 3 раза

3

86,6

13,4

Рост в 4 раза

4

80,0

20,0

Рост в 5 раз

5

74,5

25,5

Падение в 2 раза

0,5

94,3

5,7

Падение в 4 раза

0,25

80,0

20,0

Падение в 10 раз

0,1

57,5

42,5

Зависимость нелинейная. Рост на 50% стоит участнику 2%, а рост в 5 раз отнимает четверть стоимости по сравнению с хранением.

Как снижают непостоянные потери

Пока цены в паре расходятся, пул продаёт дорожающий актив, и этот механизм не отключить. Размер потерь ограничивают выбором пары и устройства пула:

  • пары активов, которые почти не расходятся в цене: два стейблкоина, привязанных к одной валюте, или токен и его обёрнутая версия держат r около единицы;

  • неравные веса токенов: взвешенные пулы Balancer допускают доли вроде 80/20, и, по документации протокола, чем больше вес токена в пуле, тем меньше потери при резком росте его цены; платой служит более высокое проскальзывание, потому что одна сторона пула мельче;

  • более высокая плата за обмен для неустойчивых пар: Uniswap v3, запущенный в мае 2021 года, при запуске предлагал уровни 0,05%, 0,30% и 1%, и по замыслу разработчиков пары с более высоким риском размещают на верхних уровнях;

  • компенсация от протокола: Bancor возмещал участникам пулов непостоянные потери своими токенами BNT, но в июне 2022 года приостановил защиту, сославшись на неблагоприятные условия рынка, и вывод средств во время паузы под неё не попадал.

Опыт Bancor показывает предел последнего способа. Защита, которую протокол оплачивает выпуском собственного токена, зависит от цены этого токена, и её приостановили при обвале рынка, когда распродажа наградных BNT заставляла выпускать новые токены.

Чего не учитывает формула непостоянных потерь

Таблица выше описывает частный случай: пул 50/50 с постоянным произведением и сравнение с одной альтернативой, простым хранением. Итог реального участника пула отличается от неё по трём причинам:

  • комиссия: в Uniswap v2 каждый обмен оставляет в резервах пула 0,30% суммы, и результат поставщика ликвидности складывается из дохода от этих сборов за вычетом непостоянных потерь;

  • концентрированная ликвидность: в Uniswap v3 средства размещают в заданном диапазоне цен, отчего, пока цена внутри диапазона, сборы на вложенный доллар выше, но и потери сильнее, а при выходе цены за границы диапазона позиция целиком переходит в один токен и перестаёт приносить сборы, пока цена не вернётся;

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

В августе 2022 года Джейсон Милионис, Сиамак Моаллеми, Тим Рафгарден и Энтони Ли Чжан предложили иную меру, потери относительно ребалансировки. Пул в ней сравнивают не с хранением, а со стратегией, которая держит тот же состав активов, но покупает и продаёт их по рыночным ценам. Разница показывает, сколько участники пула теряют на сделках арбитражёров по устаревшим ценам пула, и зависит от волатильности актива и глубины пула. Авторы сверили свои формулы с фактическими потерями пары WETH-USDC в Uniswap v2 и получили близкие значения.

Непостоянные потери на практике

Непостоянные потери показывают, во что обходится участнику пула каждое сильное движение цены в паре. Сборы окупают их только при большом объёме обменов относительно размера пула.

Оценка начинается с пары: чем сильнее могут разойтись цены двух токенов, тем больше потери, и рост одного из них в 3 раза отнимает 13,4% по сравнению с хранением. Затем доход от сборов за ожидаемый срок сравнивают с потерями при правдоподобном движении цены, а не при неизменной. Для позиции в диапазоне добавляется риск выхода цены за его границы, после которого позиция превращается в один токен и перестаёт зарабатывать. Доходность пула по сборам и итоговый результат участника остаются разными величинами, потому что первая не учитывает расхождение цен в паре. Пул выгоднее хранения не тогда, когда сборы высокие, а тогда, когда они больше непостоянных потерь.