Найти тему

Завьялов Илья Николаевич про AMM.

Оглавление

Перед тем как вы погрузитесь в изучение статьи, обратите внимание на тот факт что всё упомянутое в ней не является финансовой рекомендацией для принятие более взвешенного решения просьба провести свое собственное исследование.

________________________________________________________________________

Основная цель curve.fi - это предоставление возможности обмена стейблкоинов с низким проскальзыванием (далее подробнее разберем, что это такое).

Начнем по порядку разбираться, как устроены АММ алогоритмы.

Uniswap AMM

Каждый, кто хоть немного углублялся в defi встречал формулу .

x*y=k

Это упрощенное представление алгоритма, который лежит в основе Uniswap.

Это формула означает, что отношение активов (токенов) в пуле - это неизменное значение.

Пример:

Представим, что у нас есть пул USDT/ETH, и в пуле лежит 40000 USDT (это X) и 10 ETH (это Y), таким образом 40000*10=400’000 (это K).

Теперь к нам пришел условный Вася и хочет обменять свои 4000 USDT на ETH.

Давайте посчитаем как изменится количество токенов в пуле, используя нашу формулу.

После того как Вася внес 4000 USDT, в пуле стало 44000 USDT (там еще Uniswap забирает комиссию 0.3%, но мы опустим это).

Теперь на надо посчитать сколько ETH нужно отдать Васе.

Составим простое уравнение за средней школы:

44000 (наш Х) * y = 400000 (наш К)

Теперь нам надо найти сколько ETH должно быть в пуле, чтобы уравнение сошлось. Разделим обе части на 44000 (то есть X) и получим y=400000/44000. Таким образом y=9.09
Mы получили количество ETH, которое ДОЛЖНО БЫТЬ В ПУЛЕ. Теперь надо разницу отдать Васе. 10ETH - 9.09ETH = 0.91 ETH (куда делось 0.09 ETH???)

Автоматическая установка цены

Как мы могли заметить, когда Вася внес 4000 USDT, цена автоматически изменилась.

Теперь 1 ETH стоит Y/X, то есть 44000/9.09=4840 USDT.

Давайте рассмотрим, что произойдет, когда Вася захочет еще раз обменять 4000 USDT.

Произведем еще раз все вычисления:

(44000 + 4000) * y = 400000

Y = 8.33

Таким образом в пуле станет 48000 USDT, 8,33 ETH

И 1 ETH будет стоить 5762 USDT

Как мы увидели на двух примерах, при росте спроса на один из активов, цена второго автоматики изменяется. Потому это и называется AMM (автоматический маркет мейкер).

Красный график показывает количество токенов в пулеСиний график (производная от x*y) показывает цену токенов

Проскальзывание

Проскальзывание - это величина, которая показывает насколько изменится цена, после того как покупатель, Вася в нашем случае, захочет обменять средства. Если говорить максимально просто, то это то насколько меньше вы получите по факту сделки.

В первом примере мы увидели, что изначально 1 ETH стоил 4000 USDT, но по факту Вася купил по цене 4395 USDT (4000/0.91)

От чего зависит проскальзывание?

Ответ: от ликвидности (количества токенов в пуле)

Разберемся почему:

Формула для расчета проскальзывания выглядит так:

-2

Чтобы проще понять, как работает эта формула рассмотрим два случая

  1. Если мы захотим купить небольшое количество токенов, то δ (сколько мы купим) будет сильно меньше X (сколько в пуле) (δ << X, это для гиков выражение), и получился S = 1 - (очень близкое к 1 число), то есть проскальзываете будет стремиться к 0.
  2. Для пула, где очень много токенов X будет стремиться к бесконечности, таким образом проскальзывание тоже будет стремиться к 0.

Предположим у нас есть пул, где:

1'000'000 токенов X

5'000'000 токенов Y

K = 5 * 10^12

Рассмотрим два примера, как менялась цена (изначальная цена была 5 у.е):

-3

Выкупаем один актив

Давайте посмотрим, что произойдет, если кто-то захочет полностью забрать один из активов в пуле.

В нашем воображаемом пуле будет

100 ETH400'000 USDT

В нашем случае Вася будет покупать по 100 ETH на централизованной бирже и продавать в нашем пуле

Купив 100 ETH за 400000 USDT, он пришел в наш пул и продал 100 ETH

Теперь в пуле

200 ETH200'000 USDT

Вася потратил 4000$

Если сделать так очень много раз и построить график, то получится вот такая зависимость.

-4

По графику видно, что чем больше денег мы тратим, тем меньше цена ETH, но в какой-то момент она начинает незначительно меняться в сравнении с потраченной суммой.

Таким образом можно заметить, что выкупить всю ликвидность из пула почти невозможно.

Чем плох Uniswap AMM?

Представим ситуацию, что у нас в пуле лежит не ETH/USDT, а пара стейблкоинов USDT/USDC

Опять рассмотрим пример, где Вася на одну и ту же сумму покупает один из активов.

У нас есть пул:

100'000 USDT100'000 USDC
-5

Из таблиц видно, что при маленьких суммах разница не очень большая, но когда Вася начинает менять по 10000 USDT, то на 3 сделке он теряет 500$ из-за проскальзывания, хотя меняет доллар на доллар.

Пул без проскальзывания (такое бывает ???)

Давайте представим пул, в котором цена активов будет постоянной, то есть я в любой момент смогу обменять 1000 USDT на 1000 USDC 1:1, звучит как решение для нашей проблемы с обменом стейблкоинов.

Но не так все просто и вот почему...

Если описывать такой пул, то это будет пул с линейной зависимостью (как на алгебре в 9 классе y=kx+b).

Например у нас есть пул, и в нем:

1000 USDC1000 USDT

Выражение описывающее пул будет следующим:

X + Y = CX - количество токена #1Y - количество токена #2C - сумма токенов

в нашем примере мы получим X + Y = 2000.

-6

Вот как это будет выглядеть, если мы построим график зависимости количества токенов в пуле.