Разработка системы ребалансировки LP-позиций в Uniswap v3

Позиция в узком диапазоне быстро уходит в простой: комиссии не начисляются, а ручная перестановка границ съедает время команды. Мы разрабатываем систему ребалансировки LP под ключ — под ваш пул, лимиты риска и правила выхода. Время вне диапазона сокращается в разы, решения принимаются по заранее согласованной логике.
Часто задаваемые вопросы

Ребалансировка LP: где именно ломается позиция

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

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

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

Ручной контроль упирается в скорость. Пока владелец замечает выход из диапазона, проверяет график и подписывает транзакцию, цена уже ушла на несколько шагов, а новая граница выставлена по устаревшей точке. Цикл повторяется: выход, простой, переустановка по прошлому уровню, снова выход — доходность съедается простоями и переносом позиции.

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

Эффект от системы: комиссии, простой, классы отказов

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

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

  • Доля времени в рабочем диапазоне. До внедрения позиция удерживалась внутри границ примерно половину календарного времени: цена уходила за границу, а решение о пересборе принималось вручную. После внедрения показатель держится в районе 75–85% — это и есть основная часть прироста.
  • Время простоя. Ручной разбор выбитой позиции занимал от получаса до нескольких часов, и всё это время сбор комиссий стоял на нуле. Автоматический цикл пересборки границ возвращает позицию в работу за минуты.
  • Сбор комиссий. Начисление идёт только внутри диапазона, поэтому каждая минута простоя — прямой недобор. Метрика считается как доля собранного от теоретического максимума при непрерывном нахождении в диапазоне.
  • Сдвиг диапазона. Ширина границ подстраивается под текущую волатильность: на спокойном рынке диапазон сужается и даёт более плотную ликвидность, на резких движениях расширяется — позиция реже выбивается и реже требует пересбора.
  • Ушедшие классы отказов. Ушли пропущенный сдвиг цены, «зависшая» позиция без газа, пересборка границ по устаревшей котировке и дублирующие транзакции при параллельном запуске. Остались только предсказуемые отказы уровня сети.
  • Доходность позиции. Сравниваем её с двумя базами: пассивным удержанием тех же активов и позицией, брошенной вне диапазона. Разница показывает вклад именно автоматики, а не рыночного движения.

Варианты ребалансировки LP: сравнение режимов работы

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

Чем отличаются режимы

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

Вариант Когда подходит Ограничения
Ручной сдвиг диапазона Спокойный рынок, крупная позиция, есть оператор, готовый следить за ценой Задержка реакции и человеческий фактор; каждое перестроение — сетевые комиссии и риск войти не в ту сторону
Автоматические триггеры по порогу Активный рынок, нужна работа без выходных и ночных дежурств Порог срабатывания подбирается под волатильность: узкий даёт частые перестроения и рост издержек, широкий — долгий простой вне диапазона
Гибрид: сдвиг по расписанию плюс аварийный выход Позиции, где простой вне диапазона особенно дорог Нужен устойчивый источник цены и разграничение прав оператора и автоматики

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

Этапы внедрения: от аудита позиций до передачи системы

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

  1. Аудит пулов. Комиссионный уровень, распределение объёма по ценовым уровням, глубина на границах, история выхода цены за диапазон. Считаем, окупает ли перестроение проскальзывание и комиссии сети.

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

  3. Настройка порогов. Ширина диапазона, триггеры выхода и возврата, минимальный шаг и лимит на частоту перестроений. Отдельно — защита от «пилы», когда цена колеблется у границы диапазона.

  4. Тестовый прогон. Сначала на исторических данных, затем на ограниченном объёме. Сверяем расчёт с фактом: сколько съели проскальзывание и комиссии, совпали ли сигналы с ожидаемыми.

  5. Запуск. Постепенное включение с лимитами по объёму и частоте, оповещения по отклонениям. Первые дни инженер разбирает каждое срабатывание и правит настройки.

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

Политики доступа, схемы и документация: что остаётся у вас

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

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

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

Управляемый пул на паре со средней волатильностью какое-то время вели руками: диапазон выставляли по интуиции, а проверяли позицию между другими задачами. Вне рабочего коридора позиция перестаёт собирать комиссии и полностью превращается в один актив — если цена разворачивается, это фиксирует убыток, который нечем компенсировать. Замеры до изменений дали неприятную картину: доля времени в диапазоне — 58%, медиана реакции на выход за границу — около 40 минут, потерянные комиссии — 31% от потенциальных.

Что изменили

Написали сервис, который следит за ценой и распределением ликвидности в Uniswap v3 и заранее считает следующий коридор. Пересборка идёт одной транзакцией: снять остаток, при необходимости свапнуть в нужную пропорцию, поставить новый диапазон — капитал не зависает вне рынка между шагами. Глубину коридора считаем от текущей волатильности, а не от «красивого» круглого уровня, поэтому в спокойном рынке позиция живёт дольше и реже платит за сборку.

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

Метрики после

Доля времени в диапазоне выросла с 58% до 94%. Медиана реакции на выход за границу сократилась с 40 минут до ~2 минут — восстановление позиции теперь укладывается в одно движение цены, а не в конец дня. Потерянные комиссии снизились с 31% до 7% от потенциальных, число пересборок — на треть меньше, чем при ребалансировке по каждому пересечению границы. Часть убытков не исчезает совсем: на резком одностороннем тренде позицию в коридоре не удержит никакая логика, там работает только ограничение просадки и вывод части капитала.

Что делать, если позиция уже вышла из диапазона?

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

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

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

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

Частые технические сомнения перед стартом

Автоматическая ребалансировка — это поток решений: когда сдвинуть диапазон, как отреагировать на уход цены за границу, что делать при расхождении данных между источниками. Ошибки здесь стоят не «неудобства», а потери ликвидности и лишних перестроений, поэтому сомнения инженерного характера имеет смысл закрывать до запуска. Ниже — вопросы, которые заказчики задают чаще всего.

Как ограничивается максимальный убыток, если стратегия ошибётся?

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

Получает ли подрядчик доступ к средствам?

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

Что произойдёт, если внешний источник цены отдаст неверные данные?

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

Можно ли откатить последствия сбоя автоматики?

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

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

Обсудим задачу: соберём схему под ваш пул

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

Что вы получите в ответ:

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

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

Направления блокчейн-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1141