Усі ваші розрахунки щодо ліквідності Uniswap v3 абсолютно невірні! Ось чому

2 2 х = 5

Ви знаєте, що це неправильно, але коли ви вперше це бачите, ви знову здогадуєтеся і думаєте: «Можливо, щось не так з моїм розрахунком». правильно?

Що ж, саме це я відчув, коли виявив, що цифри ліквідності та TVL (Total Value Locked), які відображаються в інтерфейсі користувача Uniswap V3, абсолютно неправильні.

Uniswap — це найбільша децентралізована фінансова система (Defi) проект на Ethereum і ціле blockchain промисловість. Тисячі постачальників ліквідності щодня використовують ці цифри для побудови своїх інвестиційних стратегій. Тож як ці цифри можуть бути неточними?

Я витратив години, намагаючись знайти помилку в своїх розрахунках, і вгадайте що? Я не зробив жодної помилки. І ситуація ще гірша, ніж просто неточне ТВЛ.

Але давайте крок за кроком і почнемо з проблеми.

Проблема

По-перше, що таке TVL і як він використовується? Коротше кажучи, TVL визначається як доларова вартість усіх криптоактивів, делегованих користувачами в блокчейн або протокол. Наприклад, цими активами може бути загальна ліквідність децентралізованої біржі, мосту чи протоколу кредитування, або загальні активи блокчейну PoS.

Інвестори крипторинку та інші учасники використовують TVL для кількох випадків:

  1. Оцінка працездатності протоколу. Ось чому популярні протоколи пишаються своїм TVL на головній сторінці. Більший TVL = більше довіри користувачів = менший ризик = стабільний прибуток.
  2. Порівняння між протоколами. Якби я був криптотрейдером, я б вважав за краще використовувати інструменти DeFi, такі як децентралізовані біржі або мости, з вищим TVL.
  3. Вимірювання зростання протоколу. Інвестори, які бачать, що TVL протоколу або проекту швидко зростає, вважають це сигналом для підвищення ціни токена протоколу.

Здається, це важливо знати точний Номери TVL, так?

Але що, якщо я скажу, що найбільш доступні дані про Uniswap v3 TVL вводять в оману? Але найбільшим сюрпризом для мене стало те, що офіційний Додаток Uniswap Chart теж проблема! Ось як я дізнався.

Я працював над проектом аналітики ліквідності, порівнюючи офіційні дані Uniswap v3 зі своїми розрахунками, використовуючи необроблені дані блокчейну. Цей крок є життєво важливим для відповідності найвищим стандартам якості даних. Щоб почати перевірку, я вибрав популярний пул ліквідності USDC-WETH (рівень комісії 0,3%).

Зображення 202
MEV Bot додає ліквідність для Ether

Подивіться на пул 3 на Uniswap v3 — він має вражаючий TVL у 333 мільйони доларів (на основі офіційних графіків Uniswap на момент написання статті) і здоровий щоденний обсяг у 61 мільйон доларів.

Одразу я зіткнувся з проблемою: моє розраховане значення TVL становило 176 мільйонів доларів замість 333 мільйонів доларів, зазначених на веб-сайті Uniswap. Гаразд, помилки трапляються. Але перш ніж перейти до налагодження, я вирішив перевірити TVL у найпопулярнішому блокчейн-провіднику Ethereum, Етерський канал. Технічно кожен пул Uniswap v3 є розумним контрактом. Таким чином, дослідник блокчейнів може показати баланси токенів, якими володіє пул, що і є TVL.

Зображення 203
Стандартна операція своп.

Я очікував, що баланс токенів пулу буде трохи більшим, ніж TVL, про який повідомляє Uniswap. Це тому, що пул зберігає ліквідність, а також комісії, які були накопичені, але ще не заявлені. Але цей баланс становив майже половину суми, яку повідомила Uniswap, і, на диво, це була така сама цифра, як і мої розрахунки!

Порівняння ліквідності, актив за активом, також показало величезну різницю. У цей момент я зрозумів, що помилка не мала нічого спільного з моїми математичними навичками.

Зображення 205
І це те, що ми називаємо «ліквідним снайпером».

Але як це могло статися? Після дослідження я виявив, що Uniswap покладається на децентралізовану службу індексування блокчейну Графік. За допомогою цієї послуги будь-який розробник може додати персональний аналітичний код (так званий субграф) для конкретних випадків використання даних блокчейну та зробити аналітику доступною через API.

Uniswap Labs створила власні підграфи для аналітики протоколу Uniswap і надала доступ до них Розміщена служба Graph. Добре те, що його код є загальнодоступні. Погано, однак, його помилки обчислення TVL.

Короткий аналіз коду показує, що він враховує всі свопи та події ліквідності, але не враховує комісії. Пули Uniswap мають комісію від 0.01% до 1% за кожен обмін. Ця комісія вираховується з торгованих активів і нараховується постачальникам ліквідності. У свою чергу, постачальники ліквідності можуть стягувати нараховані комісії в будь-який час.

Однак поточний підграф Uniswap v3 відображає цифри так, ніби жодних комісій ніколи не нараховувалося та не збиралося. Отже, цифри Uniswap v3 TVL відхилялися від реальності з кожним свопом.

Ви можете задатися питанням: «Чи надсилали ви запит на випуск на GitHub перед написанням цієї статті?» Так, це мій перший намір після виявлення помилки. І знаєте що? Це питання вже ввійшли, створений основним розробником у листопаді 2021 року!

Тож чому цю проблему не було вирішено? Я поняття не маю. Можливо, помилка була незначною на момент виявлення цієї помилки. Однак це кумулятивна помилка, яка зростає з кожним свопом. Отже, у міру зростання комісії та обсягу торгів у пулі результуюча розбіжність TVL від помилки призведе до більшої різниці з реальністю. І ми бачимо, що у такому великому пулі, як USDC-ETH з більшою комісією 0.3%, це вийшло з-під контролю! Зараз це майже вдвічі більше, ніж справжні цифри.

Давайте перевіримо загальний TVL

Гаразд, наразі ми знаємо, що номери TVL в окремих пулах спотворено. Нижче ми розглянемо, як це може вплинути на інвестиційні рішення. Але перш ніж перейти до цього, давайте подивимося, як ці помилки впливають на загальний TVL протоколу Uniswap v3. Повідомляється, що цей TVL на момент написання статті становив майже 12 мільярдів доларів.

Вам не потрібно бути дослідником даних, щоб побачити, що тут щось не так.

Зображення 207

Ми бачимо вище, що 500 березня 4.5 року TVL повільно, але стабільно зростає з 6 мільйонів доларів до 2022 мільярдів доларів. Потім сталося щось божевільне, і 254 березня 7 року TVL становив 2022 мільярди доларів. Це в 2,5 рази більше, ніж найвищий TVL у всій мережі Ethereum за ОДИН день! Очевидно, це помилка в даних. У наступні тижні TVL становив 10-20 мільярдів доларів.

На цьому етапі я повністю втратив довіру до аналітичних даних Uniswap. Але як ми можемо дізнатися справжній TVL? У мене було 2 варіанти.

Варіант 1 — розщедритися та виправити підграф Uniswap v3. Погана річ у цьому варіанті полягає в тому, що переіндексація підграфа займе кілька днів. І я не прихильник мови GraphQL, яку використовує Graph.

На щастя, у мене був варіант 2— ДатамінтВисокопродуктивні аналітичні бази даних для всіх даних Uniswap v3 і Ethereum, легко доступні для складних онлайн-запитів.

Після деяких експериментів я створив наступний алгоритм для точного обчислення TVL. Ознайомтеся з покроковими інструкціями нижче.

  1. Обчисліть TVL для всіх існуючих пулів Uniswap v3 за допомогою цих двох кроків.
    1. Додайте всі перекази токенів ERC-20 до контракту пулу та з нього (це включає всі незатребувані комісії) і зіставте баланси токенів на Етерський канал
    2. Додайте всі події ліквідності, вхідні та вихідні, а потім додайте всі події свопу рахунок для зборів
  2. Порівняйте два методи та переконайтеся, що не залишилося незрозумілих розбіжностей
  3. Видаляйте залишені та порожні пули з менш ніж 50 свопами або сумою 0.00000000000001 токена (з 7,863 виявленими пулами (включаючи 2,083 пари зі стабільними), мій алгоритм видалив 112 пулів як порожні/залишені)
  4. Знайдіть шлях до стабільних монет для кожного токена, щоб конвертувати пул TVL у вартість USD
  5. Видаліть пули з низькою ліквідністю з неправильними значеннями в доларах США, оскільки деякі пули можуть відображати неадекватні значення після повного видалення ліквідності (перегляньте таблицю нижче як приклад)
Зображення 208
  1. Перетворіть TVL усіх решти пар у вартість у доларах США та додайте їх

Після кількох перехресних перевірок я отримав розрахунок TVL. Я запустив його й хотів випити кави, поки виконувався обчислення, але він закінчився до того, як я встав. Це єдиний недолік використання високопродуктивної аналітичної бази даних.

Ви готові побачити результат?

Зображення 210

Це майже в 4 рази менше ніж повідомлені дол11,8b… Висновок робити вам.

відмова: Мій розрахунок може містити помилки. У проектах обробки даних для корпоративних клієнтів ми використовуємо задокументовану методологію, автотести та багато інших інструментів для досягнення найвищої якості даних. Ці інструменти були б надмірними для такого особистого дослідницького проекту. Це дослідження підкреслює очевидні проблеми в доступних даних, а не пропонує остаточне рішення.

Гаразд, ми виправимо обчислення TVL — це допоможе?

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

Однак виправити розрахунок TVL не так вже й складно. Або Uniswap Labs виправляє це у своєму коді підграфа, або розробники калькуляторів починають використовувати інші джерела даних. Головне питання полягає в тому, чи можемо ми бути впевнені, що прогнози калькулятора правильні.

Я зробив деякі розрахунки, і коротка відповідь:навіть близько не.

Сміливе твердження, я знаю. Багато постачальників ліквідності використовують існуючі калькулятори та впливають на рішення, які коштують десятки мільйонів доларів. Але давайте розглянемо етапи обчислення, щоб ви могли зробити власний висновок.

Спочатку розглянемо деякі основні концепції протоколу Uniswap v3.

Одним із головних його нововведень є концентрована ліквідність. По суті, за допомогою Uniswap v3 ви можете вибрати ціновий діапазон, у якому хочете, щоб ваші гроші працювали як постачальник ліквідності. Це дивовижна концепція, яка може принести велику користь користувачам протоколу. Постачальники ліквідності обмежують свій ризик постійних втрат, а трейдери можуть насолоджуватися меншим прослизанням ціни, коли волатильність низька. Але всі ці потенціал вигоди мають свою ціну-складність.

Зображення 211

Отже, ми хочемо зрозуміти, як розраховується прибуток постачальника ліквідності Uniswap v3.

У Uniswap v3 постачальник ліквідності вибирає ціновий діапазон для надання ліквідності. Він отримає свою частку комісії за своп, коли ціна опиниться в межах цього діапазону. На перший погляд, постачальник ліквідності хоче мати якомога ширший ціновий діапазон своєї ліквідної позиції. Однак ліквідність розподіляється пропорційно в цьому діапазоні. Отже, чим ширший діапазон, тим нижча комісія за своп для кожної угоди.

Зображення 211

У цьому прикладі варіант А показує, що постачальник ліквідності вибирає ширший ціновий діапазон, а варіант 2 показує вужчий діапазон із тією самою сумою. За умови, що в обох випадках ціна знаходиться в межах вибраного цінового діапазону, постачальник ліквідності отримує в 3 рази більше комісій у варіанті B. Однак, якщо ціна більш мінлива, постачальник ліквідності може отримати більший прибуток у варіанті A.

Таким чином, насправді вибір правильного цінового діапазону залежить від пошуку найкращого балансу між ризиком втрати ціни та отриманням нижчої прибутковості від кожної угоди.

Ще один параметр впливає на прибуток постачальника ліквідності і часто не враховується. Мені невідомий жоден калькулятор прибутку LP, який враховує це, і цей параметр може змінити все. Вам уже цікаво, що це таке. Це роздача платівок. Розглянемо такий приклад:

Зображення 212

У цьому прикладі два постачальники ліквідності (LP1 і LP2) мають позиції. LP1 має вузьку позицію в $3. LP2 має широку позицію в $5. У цьому випадку, якщо ціна не вийде з діапазону позиції LP1, він отримає в 3 рази більше комісій, ніж LP2. Це тому, що LP2 має лише 1 долар у цьому діапазоні. І цей $1 конкурує з $3 LP1.

Якщо ви подивіться на розподіл ліквідності будь-якого пулу Uniswap v3, ви побачите, що він нерівномірний.

Зображення 213

Чим вище планка, тим вище конкуренція. Постачальники ліквідності повинні знайти баланс між вибором конкурентоспроможних діапазонів і діапазону з меншою ймовірністю падіння ціни. Ось чому цей розподіл відіграє велику роль у прогнозуванні прибутку LP та побудові стратегії. Єдина проблема полягає в тому... Я не впевнений, що цей розподіл обчислюється належним чином.

Ніби цього недостатньо — ліквідні снайпери

Бути постачальником ліквідності означає вгадувати ціну, стан конкуренції та обсяг торгівлі. Якби LP мав бажання, це було б знати майбутнє торгів, щоб скоригувати позиції ліквідності заздалегідь.

Але що, якщо я скажу тобі, що це можливо?

Під час дослідження мою увагу привернули деякі незвичайні постачальники ліквідності. Вони додавали та видаляли значні позиції ліквідності (понад 10 мільйонів доларів) багато разів на день. Що ще більш дивно, вони завжди додавали та видаляли ліквідність в одному блоці.

Давайте розглянемо приклад:

Зображення 214

У нас є три транзакції, усі в блоці 15413416, позиції 3-5, виконані в порядку «знизу вгору». Перша транзакція з методом Execute — це контракт під назвою «MEV Bot», який додає 22 мільйони доларів ліквідності до пулу USDC-WETH.

Зображення 215

Друга транзакція - це обмін з USDC на DogeChain через WETH. Це звичайний своп вартістю приблизно 16,500 XNUMX доларів США.

Зображення 216

Третьою транзакцією знову є «MEV Bot», яка вилучає ліквідність на суму 22 мільйони доларів із пулу USDC-WETH.

Зображення 217

Те, що сталося в цьому прикладі, називається «снайперська ліквідація». Дозвольте мені пояснити, як це працювало:

  1. Хтось надіслав транзакцію для обміну USDC на DogeChain
  2. Бот MEV виявив цю транзакцію в мемпулі та активував приватне посилання з майнінг-пулом за допомогою технології Flashbots або щось подібне
  3. Бот MEV заплатив майнерам за те, що вони включили транзакцію своп і дві транзакції в певному порядку, що дозволило видобувати значення
  4. MEV Bot додав стільки ліквідності (22 мільйони доларів) у дуже вузькому ціновому діапазоні, що фактично всі прибутки від цієї конкретної торгівлі USDC-DogeChain були нараховані йому
  5. Потім MEV Bot видалив ліквідність і зароблені комісії (близько 35 доларів США)

Таким чином, його валовий прибуток після плати за газ склав близько 30 доларів. Не дуже? Так, але він реалізовує цю стратегію кілька разів на хвилину, що все підсумовує. Ти можеш перевірте це самі.

Що це означає для вас як для постачальника ліквідності? Це означає, що снайпери ліквідності можуть значно скоротити ваші прибутки.

Висновок

Дозвольте мені підсумувати свої результати дослідження:

  1. Значення TVL у діаграмах Uniswap v3 вкрай неточні. Ті самі помилки існують у всіх аналітичних інструментах, які покладаються на офіційний підграф Uniswap v3.
  2. Загальний TVL Uniswap v3 становить 3,14 млрд доларів проти 11,8 млрд доларів, як повідомляє офіційний сайт (на момент написання).
  3. Калькулятори для постачальників ліквідності Uniswap v3 не мають великої цінності для реальних стратегій, оскільки вони не враховують конкуренцію та снайперів ліквідності.
Зображення 218

На щастя, тепер ви можете краще зрозуміти, як пули ліквідності Uniswap v3 працюють у реальному житті, і можете відповідно скорегувати своє дослідження.

Я не в змозі давати фінансові поради, але бачу лише 2 варіанти побудови помітної стратегії забезпечення ліквідності:

  1. ПРОСТО. Використовуйте історичні дані про продуктивність. Спробуйте кілька позицій ліквідності з невеликими ставками та подивіться, які варіанти працюють краще. Очевидно, що це працює лише за умови, що ринок стабільний.
  2. ADVANCED. Проведіть дослідження та відповідно оптимізуйте стратегію LP. Як ми вже згадували вище, для цього потрібне глибоке розуміння протоколу Uniswap v3, знання математики та теорії ігор, а також потужний інструмент аналітики даних для обробки величезних обсягів даних у режимі реального часу.

Обидва варіанти мають одну спільну рису: ви приймаєте рішення на основі даних, а не інтуїції чи випадкових інструментів. Іноді працювати з даними важко, але це окупається.

У Datamint ми завжди тут, щоб допомогти вам із вашими проектами з даними на замовлення.

Нехай дані будуть з вами!

Джерело: https://www.cryptopolitan.com/uniswap-v3-liquidity-farming-calculations/