April 3

DeFi. Бины Trader Joe VS. тики Uniswap

Тики Uniswap vs. Бины Трейдера Джо

Вопрос с одной стороны - старый, с другой - ответ на него на русском языке разбит на ряд статей, где ещё внутри каждой - надо поискать конкретный тезис. Поэтому - кратко освещу его.

Суть

Бины (bins) в Trader Joe и тики (ticks) в Uniswap V3/Uniswap V4 имеют концептуальное сходство — оба разбивают ценовой диапазон на дискретные сегменты. Но есть несколько важных отличий.

Прежде чем о них поговорить. Вводные.

Бины

Вот что по этому поводу пишет сам Трейдер Джо… (Далее - следует вольный перевод):

“AMM-протокол Liquidity Book, разработанный LFJ, открывает новые возможности получения дохода от вашей ликвидности. Благодаря инновационному дизайну Liquidity Book вы, как поставщик ликвидности, можете достичь максимальной эффективности капитала благодаря беспрецедентной гибкости и возможности тонкой настройки при размещении ликвидности.

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

Модель

Что такое форма ликвидности?

Возможно, вам интересно, что означает термин "форма ликвидности". Обычно, когда вы вносите ликвидность в пул, ваши токены распределяются по выбранным ценовым уровням.

Однако Liquidity Book отличается тем, что позволяет создавать различные "формы", распределяя разные объёмы токенов по разным ценовым уровням, называемым бинсами (bins).

Каждый бин представляет собой фиксированный ценовой уровень в пуле ликвидности. Когда вы размещаете свою ликвидность, (то) определяете её диапазон, выбирая конкретные бинсы — этот процесс называется построением формы ликвидности.

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

Не существует "правильной" или "неправильной" формы ликвидности — каждая из них показывает наилучшие результаты в зависимости от того, как вы управляете своей позицией и от рыночных условий.

Ниже представлено общее представление о формах ликвидности. Каждая вертикальная полоса на графике соответствует одному бинсу, и каждый бин представляет фиксированную цену.

На изображении ниже показаны три базовые формы, которые можно применить, с кратким описанием ключевых сценариев использования для каждой.

Описание

Обратите внимание: предоставление концентрированной ликвидности может сопровождаться высоким риском непостоянных потерь (impermanent loss), особенно если позиция не контролируется должным образом.

Ни одна стратегия не способна полностью исключить вероятность непостоянных потерь. Вы должны регулярно следить за своей позицией.

Заработок на комиссиях: Активный бин

Основная цель любого поставщика ликвидности — получать комиссионные, генерируемые за счёт торговой активности в пуле ликвидности. Чтобы зарабатывать комиссии через Liquidity Book, ваша ликвидность должна находиться в пределах активного диапазона.

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

Демонстрация

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

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

Вот перевод на русский язык:

Узнайте больше об уникальных формах и стратегиях

Руководство ниже разделено на базовые и продвинутые стратегии.

Базовые стратегии: подходят для пользователей, которые только начинают знакомиться с концепцией концентрированной ликвидности, Liquidity Book и архитектурой бинсов. Эти стратегии можно развернуть в один клик через интерфейс LFJ — без необходимости в продвинутых знаниях.

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

Стратегии с одной стороной: позволяют разместить ликвидность только с одной стороны торговой пары — что эффективно для входа или выхода в конкретный токен. Использование различных форм ликвидности позволяет ещё более эффективно управлять точками входа/выхода.

Ниже представлен пример различных типов форм и диапазонов, которые вы можете использовать при размещении ликвидности.

Визуализация

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

Риски при управлении ликвидностью

Участие в предоставлении ликвидности с использованием протокола Liquidity Book связано с рядом рисков, включая, но не ограничиваясь:

  • непостоянными потерями (impermanent loss),
  • уязвимостями смарт-контрактов,
  • системными сбоями,
  • нехваткой ликвидности,
  • изменениями в регулировании,
  • волатильностью рынка,
  • операционными ошибками.

Ваш капитал находится под риском — инвестируйте только те средства, которые вы готовы потерять. Нет никаких гарантий или обещаний доходности, и всю ответственность за инвестиции несут сами поставщики ликвидности (LPs). При необходимости обратитесь за независимой финансовой консультацией.

Тики

Сама тех. база по тикам содержит функции для управления процессами тиков и соответствующими вычислениями.​

Базовые функции:

tickSpacingToMaxLiquidityPerTick - вычисляет максимальную ликвидность на тик на основе заданного расстояния между тиками. Выполняется в конструкторе пула:

Функция 1

Или getFeeGrowthInside: извлекает данные о росте комиссий внутри заданного диапазона тиков:

Функция 2

У последней интересны параметры:

  • self: mapping(int24 => struct Tick.Info). Отображение, содержащее всю информацию о инициализированных тиках.
  • tickLower: int24. Нижняя граница позиции.
  • tickUpper: int24. Верхняя граница позиции.​
  • tickCurrent: int24. Текущий тик.​
  • feeGrowthGlobal0X128: uint256. Общий рост комиссий за все время на единицу ликвидности в token0.​
  • feeGrowthGlobal1X128: uint256. Общий рост комиссий за все время на единицу ликвидности в token1.​

Отсюда же получаем возвращаемые значения:

  • feeGrowthInside0X128: uint256. Общий рост комиссий в token0 на единицу ликвидности внутри границ позиции.​
  • feeGrowthInside1X128: uint256. Общий рост комиссий в token1 на единицу ликвидности внутри границ позиции.​

Помимо этого есть ещё функции:

  • update - обновляет тик и возвращает true, если тик был переведён из состояния "инициализирован" в "неинициализирован", или наоборот.​
  • сlear - очищает данные тика.​
  • сross - переходит к следующему тику по мере изменения цены.

Есть также целая библиотека, которая помогает в вычислениях. О ней - коротко и отдельно.

Дополнительный функционал

TickMath — это библиотека, которая используется для вычисления квадратного корня цены для заданного тика (tick) с шагом 1.0001, то есть вычисляется `sqrt(1.0001^tick)` в виде фиксированного числа формата Q64.96.

Поддерживаемый диапазон цен — от 2^-128 до 2^128.

getSqrtRatioAtTick (solidity);

Доп. функция 1

Описание: вычисляет значение: sqrt(1.0001^tick) * 2^96. Генерирует исключение, если |tick| превышает максимально допустимое значение.

getTickAtSqrtRatio

Доп. функция 2

Описание: вычисляет наибольшее значение tick, такое что getRatioAtTick(tick) <= ratio. Генерирует исключение, если sqrtPriceX96 < MIN_SQRT_RATIO.

Ссылки по тикам

Список:

Сравнение тиков и бинов

Архитектура и реализация

Сравнение по архитектуре

Uniswap V3 позволяет LP задавать произвольные диапазоны с granularity (дискретность/точность/детализация/шаг) до 1 tick.

Trader Joe LB работает с фиксированными бинсами, по сути — готовыми «лотками» цены, без произвольной настройки пользователем.

Механика торговли

Сравнение по торгам

В Uniswap V3 цена плавно изменяется в зависимости от размера ордера и текущей ликвидности по кривой.

В LB трейд проходит внутри бинса по фиксированному курсу до тех пор, пока он не опустеет. Затем переходит к следующему бинсу — происходит скачок цены.

Формула AMM

Uniswap V3: основан на классической формуле AMM: x * y = k, с концентрированной ликвидностью.

Trader Joe LB: использует модель "step function" (шаговая функция (или лестничная функция)) — ликвидность плоская внутри бинса (0 скольжения), потом перескакивает на следующий бин.

Оптимизация газа

Trader Joe LB намного более экономичен по газу, т.к. не требует непрерывного вычисления кривой — особенно при множественных сделках через несколько бинсов.

Uniswap V3 в этом плане дороже, особенно если сделка проходит через много тиков.

Итог сравнения

Общая таблица

На этом пока всё и

До!