2 х 2 = 5
Вы знаете, что это неправильно, но когда вы впервые видите это, вы догадываетесь и думаете: «Может быть, что-то не так с моим расчетом». Верно?
Что ж, именно так я себя чувствовал, когда обнаружил, что показатели ликвидности и TVL (общая заблокированная стоимость), отображаемые в пользовательском интерфейсе Uniswap V3, совершенно неверны.
Uniswap — крупнейший проект децентрализованного финансирования ( DeFi ) на Ethereum и всей блокчейнов . Тысячи поставщиков ликвидности ежедневно используют эти цифры для построения своих инвестиционных стратегий. Так как же эти цифры могут быть неточными?
Я часами пытался найти ошибку в своих расчетах, и знаете что? Я не сделал никаких ошибок. И ситуация еще хуже, чем просто неточное ТВЛ.
Но давайте пошагово и начнем с проблемы.
Проблема
Во-первых, что такое ТВЛ и как его использовать? Короче говоря, TVL defi как долларовая стоимость всех криптоактивов, делегированных в настоящее время пользователями блокчейну или протоколу. Например, эти активы могут представлять собой общую ликвидность децентрализованной биржи, моста или протокола кредитования или общие активы блокчейна PoS.
Инвесторы крипторынка и другие участники используют TVL в нескольких случаях:
- Оценка работоспособности протокола. Вот почему популярные протоколы хвастаются своим TVL на главной странице. Больше TVL = больше доверия пользователей = меньше рисков = стабильная прибыль.
- Сравнение протоколов. Если бы я был криптотрейдером, я бы предпочел использовать инструменты DeFi , такие как децентрализованные биржи или мосты, с более высоким TVL.
- Измерение роста протокола. Инвесторы, которые видят, что TVL протокола или проекта быстро растет, считают это сигналом для оптимизма в отношении цены токена протокола.
Похоже, важно знать точные цифры TVL, верно?
Но что, если я скажу, что самые доступные данные о Uniswap v3 TVL вводят в заблуждение? Однако самым большим сюрпризом для меня стало то, что официальное приложение Uniswap Chart также является проблемой! Вот как я узнал.
Я работал над проектом аналитики ликвидности, сравнивая официальные данные Uniswap v3 с моими расчетами с использованием необработанных данных блокчейна. Этот шаг жизненно важен для соблюдения самых высоких стандартов качества данных. Для начала проверки я выбрал популярный пул ликвидности USDC-WETH (уровень комиссии 0,3%).
Посмотрите на пул 3 в Uniswap v3 — у него впечатляющий TVL в размере 333 млн долларов (на основе официальных графиков Uniswap на момент написания статьи) и солидный дневной объем в 61 млн долларов.
Сразу же я столкнулся с проблемой: моя рассчитанная стоимость TVL составила 176 миллионов долларов вместо 333 миллионов долларов, указанных на веб-сайте Uniswap. Хорошо, так что ошибки случаются. Но прежде чем перейти к отладке, я решил проверить TVL в самом популярном обозревателе блокчейнов Ethereum Etherscan . Технически каждый пул Uniswap v3 представляет собой смарт- trac . Таким образом, обозреватель блокчейна может показать баланс токенов во владении пула, что и является TVL.
Я ожидал, что баланс токенов в пуле будет немного больше, чем TVL, о котором сообщает Uniswap. Это связано с тем, что пул содержит ликвидность, а также комиссии, которые были начислены, но еще не востребованы. Но этот баланс был почти вдвое меньше суммы, которую сообщил Uniswap, и, что удивительно, это была та же цифра, что и мои расчеты!
Сравнение ликвидности по активам также показало огромную разницу. В этот момент я понял, что ошибка не имеет ничего общего с моими математическими способностями.
Но как это могло произойти? Проведя исследование, я обнаружил, что Uniswap полагается на децентрализованную службу индексации блокчейна The Graph . С помощью этой услуги любой разработчик может добавить код личной аналитики (называемый подграфом) для конкретных случаев использования данных блокчейна и сделать аналитику доступной через API.
Uniswap Labs создала собственные подграфы для аналитики протокола Uniswap и сделала их доступными через The Graph Hosted Service . Хорошо, что его код общедоступен . Плохо, однако, его ошибки расчета TVL.
Краткий анализ кода показывает, что он учитывает все свопы и события ликвидности, но не учитывает комиссии. Пулы Uniswap имеют комиссию от 0,01% до 1% при каждом обмене. Эта комиссия вычитается из торгуемых активов и начисляется поставщикам ликвидности. В свою очередь, поставщики ликвидности могут в любой момент взимать начисленные комиссии.
Однако текущий подграф Uniswap v3 отображает цифры так, как будто комиссии никогда не начислялись и не взимались. Таким образом, цифры TVL Uniswap v3 отклонялись от реальности с каждым обменом.
Вы можете задаться вопросом: «Отправляли ли вы заявку на GitHub перед написанием этой статьи?» Да, это мое первое намерение после обнаружения ошибки. И знаешь, что? Эта проблема уже зарегистрирована , она создана основным разработчиком в ноябре 2021 года!
Так почему же эту проблему не решили? Не имею представления. Возможно, ошибка была незначительной в то время, когда эта ошибка была обнаружена. Однако это кумулятивная ошибка, которая растет с каждым свопом. Таким образом, по мере роста комиссии и объема торгов в пуле результирующее отклонение TVL от ошибки приведет к большему расхождению с реальностью. И мы видим, что в таком большом пуле, как USDC-ETH с большей комиссией в 0,3%, ситуация вышла из-под контроля! В настоящее время это почти вдвое превышает реальные цифры.
Давайте проверим общий TVL
Хорошо, мы уже знаем, что цифры TVL в отдельных пулах искажены. Ниже мы рассмотрим, как это может повлиять на инвестиционные решения. Но прежде чем мы перейдем к этому, давайте посмотрим, как эти ошибки влияют на общий TVL протокола Uniswap v3. На момент написания этой статьи TVL оценивается почти в 12 миллиардов долларов.
Не нужно быть специалистом по данным, чтобы увидеть, что здесь что-то не так.
Выше мы видим, что TVL медленно, но неуклонно росла с 500 млн долларов до 4,5 млрд долларов 6 марта 2022 года. Затем произошло что-то сумасшедшее, и 7 марта 2022 года сообщалось, что TVL составляет 254 млрд долларов. Это в 2,5 раза больше, чем самый высокий TVL всей сети Ethereum за ОДИН день! Явно ошибка в данных. В последующие недели TVL составлял 10–20 миллиардов долларов.
В этот момент я потерял всякое доверие к аналитическим данным Uniswap. Но как мы можем узнать истинный TVL? У меня было 2 варианта.
Вариант 1 — раскошелиться и исправить подграф Uniswap v3. Плохая сторона этого варианта заключается в том, что переиндексация подграфа может занять несколько дней. И я не фанат языка GraphQL, который использует The Graph.
К счастью, у меня был вариант 2 — высокопроизводительные аналитические базы данных Datamint Ethereum , легко доступные для сложных онлайн-запросов.
После некоторых экспериментов я создал следующий алгоритм для точного расчета TVL. Проверьте пошаговый процесс ниже.
- Рассчитайте TVL для всех существующих пулов Uniswap v3, используя эти два шага.
- trac пула и из него (включая все невостребованные комиссии) и сопоставьте балансы токенов на Etherscan
- Добавьте все события ликвидности, входящие и исходящие, затем добавьте все события свопа для учета комиссий.
- Сравните два метода и убедитесь, что не осталось необъяснимых расхождений.
- Удалить заброшенные и пустые пулы с менее чем 50 свопами или количеством токенов 0,00000000000001 (при обнаружении 7863 пулов (включая 2083 пары со стабильными), мой алгоритм удалил 112 пулов как пустых/заброшенных)
- Найдите путь к стабильным монетам для каждого токена, чтобы конвертировать TVL пула в стоимость в долларах США.
- Удалите пулы с низкой ликвидностью с неверными значениями в долларах США, поскольку некоторые пулы могут показывать неадекватные значения после полного удаления ликвидности (см. приведенную ниже диаграмму в качестве примера).
- Преобразуйте TVL всех оставшихся пар в стоимость USD и добавьте их
После нескольких перекрестных проверок я пришел к расчету TVL. Я запустил его и хотел выпить кофе, пока выполнялся расчет, но он закончился до того, как я встал. Это единственный недостаток использования высокопроизводительной аналитической базы данных.
Вы готовы увидеть результат?
Это почти в 4 раза меньше заявленных $ 11,8 млрд… Вывод делать вам.
Отказ от ответственности : мой расчет может содержать ошибки. В проектах данных для корпоративных клиентов мы используем документированную методологию, автотесты и многие другие инструменты для достижения высочайшего качества данных. Эти инструменты были бы излишними для личного исследовательского проекта, подобного этому. Это исследование выдвигает на первый план очевидные проблемы в имеющихся данных, а не предлагает окончательное решение.
Хорошо, мы исправим расчет TVL — поможет ли это?
Проблема не в неверных цифрах, а в решениях, которые мы принимаем на основе этих цифр. Например, большинство калькуляторов прибыли для поставщиков ликвидности используют эти цифры для прогнозов.
Однако исправить расчет TVL не так уж и сложно. Либо Uniswap Labs исправляют это в своем коде подграфа, либо разработчики калькуляторов начинают использовать другие источники данных. Основной вопрос заключается в том, можем ли мы быть dent в правильности предсказаний калькулятора.
Я сделал некоторые расчеты, и краткий ответ — даже не близко .
Смелое заявление, я знаю. Многие поставщики ликвидности используют существующие калькуляторы и влияют на решения, которые стоят десятки миллионов долларов. Но давайте пройдемся по шагам расчета, чтобы вы могли сделать собственное суждение.
Во-первых, давайте рассмотрим некоторые основные концепции протокола Uniswap v3.
Одно из его главных нововведений — концентрированная ликвидность. По сути, с Uniswap v3 вы можете выбрать ценовой диапазон, в котором вы хотите, чтобы ваши деньги работали в качестве поставщика ликвидности. Это удивительная концепция, которая может принести большую пользу пользователям протокола. Поставщики ликвидности ограничивают свою подверженность непостоянным убыткам, а трейдеры могут enj меньшим проскальзыванием цены при низкой волатильности. Но за все эти потенциальные преимущества приходится платить — сложностью .
Итак, мы хотим понять, как рассчитывается прибыль поставщика ликвидности Uniswap v3.
В Uniswap v3 поставщик ликвидности выбирает ценовой диапазон для предоставления ликвидности. Он получит свою долю комиссии за своп, как только цена окажется в этом диапазоне. На первый взгляд, поставщик ликвидности хочет, чтобы ценовой диапазон его позиции ликвидности был как можно шире. Однако ликвидность распределяется пропорционально в этом диапазоне. Таким образом, чем шире диапазон, тем ниже комиссия за своп по каждой сделке.
В этом примере вариант А показывает, что поставщик ликвидности выбирает более широкий ценовой диапазон, а вариант 2 показывает более узкий диапазон с той же суммой. При условии, что в обоих случаях цена находится внутри выбранного ценового диапазона, поставщик ликвидности получает в 3 раза больше комиссионных в варианте B. Однако, если цена более волатильна, поставщик ликвидности может получить более высокую прибыль в варианте A.
Таким образом, в действительности выбор правильного ценового диапазона зависит от нахождения наилучшего баланса между риском упустить цену и получением более низкой прибыли по каждой сделке.
Еще один параметр, влияющий на прибыль поставщика ликвидности, часто упускается из виду. Я не знаю ни одного калькулятора прибыли LP, который бы это учитывал, а этот параметр может все изменить. Вам уже интересно, что это такое. Это раздача пластинок. Рассмотрим следующий пример:
В этом примере у двух поставщиков ликвидности (LP1 и LP2) есть позиции. LP1 имеет узкую позицию в размере 3 долларов. У LP2 широкая позиция $5. В этом случае, если цена не выйдет за пределы позиции LP1, он получит в 3 раза больше комиссионных, чем LP2. Это потому, что LP2 имеет только 1 доллар в этом диапазоне. И этот $1 конкурирует с $3 LP1.
Если вы посмотрите на распределение ликвидности любого пула Uniswap v3, вы увидите, что оно неравномерно.
Чем выше планка, тем выше конкуренция. Поставщикам ликвидности необходимо найти баланс между выбором конкурентных диапазонов и диапазоном с меньшей вероятностью ценового удара. Вот почему это распределение играет большую роль в прогнозировании прибыли LP и построении стратегии. Единственная проблема в том, что… я не уверен, что это распределение рассчитано правильно.
Как будто этого недостаточно — снайперы ликвидности
Быть поставщиком ликвидности — значит угадывать цену, состояние конкуренции и объем торгов. Если бы у LP было желание, оно должно было бы знать будущее сделок, чтобы заранее скорректировать позиции ликвидности.
Но что, если я скажу вам, что это возможно?
Во время исследования мое внимание привлекли некоторые необычные поставщики ликвидности. Они добавляли и удаляли значительные позиции ликвидности (более 10 миллионов долларов) много раз в день. Что еще более удивительно, они всегда добавляли и удаляли ликвидность в одном и том же блоке.
Давайте посмотрим на пример:
У нас есть три транзакции, все в блоке 15413416, позиции 3-5, выполняемые в восходящем порядке. Первая транзакция с методом Execute — это trac под названием «MEV Bot», добавляющий 22 миллиона долларов ликвидности в пул USDC-WETH.
Вторая транзакция — это обмен с USDC на DogeChain через WETH. Это обычный своп стоимостью около 16 500 долларов.
Третья транзакция снова называется «MEV Bot», удаляя 22 миллиона долларов ликвидности из пула USDC-WETH.
То, что произошло в примере, называется «снайпер ликвидности». Позвольте мне объяснить, как это работало:
- Кто-то отправил транзакцию для обмена USDC на DogeChain
- MEV Bot обнаружил эту транзакцию в мемпуле и активировал приватную ссылку с майнинг-пулом, используя технологию Flashbots или что-то подобное
- MEV Bot платил майнерам за то, чтобы они включали своп-транзакцию и две транзакции в определенном порядке, что позволяло trac ценность.
- MEV Bot добавил так много ликвидности (22 миллиона долларов) в очень узкий ценовой диапазон, что фактически вся комиссионная прибыль от этой конкретной сделки USDC-DogeChain была начислена ему.
- Затем MEV Bot удалил ликвидность и заработал комиссионные (около 35 долларов США).
Таким образом, его валовая прибыль после оплаты газа составила около 30 долларов. Не очень много? Да, но он применяет эту стратегию несколько раз в минуту, и все это суммируется. Вы можете проверить это сами .
Что это означает для вас как поставщика ликвидности? Это означает, что снайперы ликвидности могут значительно сократить вашу комиссионную прибыль.
Заключение
Позвольте мне подвести итоги моего исследования:
- Цифры TVL в диаграммах Uniswap v3 крайне неточны. Одни и те же ошибки есть во всех аналитических инструментах, опирающихся на официальный подграф Uniswap v3.
- Общий TVL Uniswap v3 составляет 3,14 млрд долларов против 11,8 млрд долларов, о которых сообщает официальный сайт (на момент написания статьи).
- Калькуляторы для поставщиков ликвидности Uniswap v3 не имеют большого значения для реальных стратегий, поскольку они не учитывают конкуренцию и снайперов ликвидности.
К счастью, теперь вы можете лучше понять, как пулы ликвидности Uniswap v3 работают в реальной жизни, и соответствующим образом скорректировать свои исследования.
Я не в состоянии давать финансовые советы, но вижу только 2 варианта построения выдающейся стратегии обеспечения ликвидности:
- ПРОСТО . Используйте исторические данные о производительности. Попробуйте некоторые позиции ликвидности с небольшими ставками и посмотрите, какие варианты работают лучше. Очевидно, это работает только при условии, что рынок стабилен.
- РАСШИРЕННЫЙ . Проведите исследование и соответствующим образом оптимизируйте стратегию LP. Как мы уже говорили выше, для этого требуется глубокое понимание протокола Uniswap v3, знания математики и теории игр, а также мощный инструмент анализа данных для обработки огромных объемов данных в режиме реального времени.
У обоих вариантов есть одна общая черта: вы основываете свои решения на данных, а не на интуиции или случайных инструментах. Иногда работать с данными сложно, но это окупается.
Да пребудут с вами данные!