Как работает concentrated liquidity на DEX простыми словами: ticks, ranges, active liquidity и MVP для LP manager

После статей про AMM, price discovery, liquidity pools, routing и исполнение swap логично разобрать механизм, который делает многие современные DEX заметно интереснее простого пула “50/50 и поехали”. Речь про concentrated liquidity — модель, где ликвидность стоит не по всей бесконечной кривой цены, а только в выбранном диапазоне.

Это важная тема, потому что она напрямую отвечает на несколько практических вопросов:

  • почему в одних пулах капитал работает эффективнее, чем в других;
  • почему LP в современных AMM — это уже не просто “положил активы и собирай комиссию”;
  • откуда берутся active liquidity, ticks, range orders и out-of-range risk;
  • как собрать похожий MVP: LP manager, range monitor, fee dashboard и automation layer для repositioning.

Если смотреть на свежие инженерные обсуждения вокруг onchain execution и trading tooling, там всё чаще всплывает одна и та же мысль: главная ценность — не только в самом swap, а в том, как эффективно используется ликвидность и насколько хорошо видны её trade-offs. Concentrated liquidity — как раз про это.

Что именно разбираем

Сегодня разбираем:

  • что такое concentrated liquidity в контексте DEX;
  • зачем понадобились ranges и ticks;
  • как двигаются деньги между трейдером, пулом и LP;
  • кто платит fees, кто получает yield и кто несёт inventory risk;
  • чем active liquidity отличается от “денег просто в пуле”;
  • где реальные ограничения: out-of-range, impermanent loss, rebalance cost, fee illusion;
  • как собрать похожий MVP и что можно автоматизировать поверх.

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

как сделать так, чтобы капитал LP работал ближе к текущей цене, но не превратился в ручную операционную головную боль?

Как это работает простыми словами

В классическом AMM ликвидность размазана по всей ценовой кривой.

Это удобно концептуально, но не очень эффективно практически:

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

Concentrated liquidity меняет правило.

LP больше не говорит: “вот мои активы для всей кривой”.

Он говорит: “я готов давать ликвидность только в диапазоне цены от X до Y”.

Например:

  • для пары ETH/USDC LP может выбрать диапазон 2800–3400 USDC за ETH;
  • пока цена внутри диапазона, ликвидность активна и обслуживает swaps;
  • если цена уходит ниже или выше, позиция перестаёт работать как активная ликвидность и превращается почти в один из активов.

То есть concentrated liquidity — это не просто улучшенный пул, а способ точнее ставить капитал туда, где сейчас реально идёт торговля.

Почему это вообще появилось

Главная причина — capital efficiency.

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

На практике это означает:

  • слишком много idle capital;
  • слабая глубина рынка около текущей цены;
  • комиссия на единицу капитала часто выглядит хуже, чем могла бы.

Concentrated liquidity позволяет сжать рабочий капитал ближе к актуальному рынку.

Для трейдера это может означать:

  • лучшее исполнение около текущей цены;
  • меньший slippage на привычных объёмах;
  • более глубокий “рабочий стакан” без реального order book.

Для LP это означает:

  • потенциально выше fees на единицу капитала;
  • но сильнее требования к управлению диапазоном;
  • и заметно более активный risk profile.

Что такое range

Range — это выбранный диапазон цены, внутри которого ликвидность LP активна.

Простая модель:

  • нижняя граница — lower bound;
  • верхняя граница — upper bound;
  • пока текущая цена между ними, позиция участвует в swap;
  • если цена выходит за пределы, позиция перестаёт быть активной.

Range — это по сути ответ LP на вопрос:

“на каком участке цены я готов быть контрагентом для чужих сделок?”

Слишком широкий range:

  • даёт меньше capital efficiency;
  • требует меньше обслуживания;
  • ближе к старой “пассивной” модели.

Слишком узкий range:

  • даёт более агрессивный fee capture near price;
  • но чаще выпадает out of range;
  • требует частого repositioning.

Что такое ticks

В большинстве concentrated liquidity AMM диапазон нельзя задавать абсолютно произвольно до бесконечно точной дроби. Для этого используются ticks.

Простыми словами, tick — это дискретный шаг сетки цены, на которой можно открывать и закрывать диапазон.

Зачем это нужно:

  • чтобы представить диапазоны в контракте компактно и предсказуемо;
  • чтобы эффективно считать, где ликвидность включается и выключается;
  • чтобы swap engine понимал, через какие ценовые участки он проходит.

Если совсем по-бытовому, ticks — это как линии на ценовой карте:

  • между одними линиями ликвидность активна;
  • на границе следующий кусок ликвидности может включиться или выключиться;
  • крупный swap может “проходить” через несколько tick zones подряд.

Как происходит swap в concentrated liquidity пуле

Теперь главный практический момент: как по такому пулу проходит обмен.

Представим, что пользователь хочет купить ETH за USDC.

Что происходит по шагам

  1. Трейдер отправляет swap в router или напрямую в пул.
  2. Пул смотрит, какая ликвидность активна в текущем ценовом диапазоне.
  3. Цена начинает двигаться по кривой внутри текущего range.
  4. Если объём сделки крупный, цена может дойти до следующего tick boundary.
  5. На этой границе часть ликвидности выключается, а другая включается.
  6. Swap продолжается дальше уже на новом наборе active liquidity.
  7. Комиссия распределяется между теми LP, чья ликвидность реально была задета этим движением.

Отсюда важный вывод:

в concentrated liquidity не вся ликвидность пула одинаково участвует в каждом swap. Комиссию получают прежде всего те позиции, которые реально стояли около текущей цены.

Как двигаются деньги

Полезно разложить денежный поток буквально.

Кто участвует

  • trader хочет обменять актив A на актив B;
  • LP предоставляет inventory в выбранном range;
  • pool contract считает цену и меняет состояние;
  • router / UI / aggregator помогает выбрать путь исполнения.

Денежная механика

Когда трейдер покупает ETH за USDC:

  • трейдер вносит USDC;
  • пул отдаёт ETH;
  • цена в рабочем диапазоне сдвигается;
  • часть USDC остаётся как новый inventory у LP;
  • часть value идёт в fee flow;
  • LP-позиции около текущей цены становятся более “односторонними” по мере движения рынка.

То есть LP здесь зарабатывает не за сам факт депозита, а за то, что его капитал стоит в execution path чужих swap.

Кто платит fees и кто получает yield

Кто платит

Платит прежде всего трейдер:

  • pool fee;
  • gas;
  • slippage;
  • иногда дополнительную aggregator fee;
  • иногда execution degradation, если route или market condition плохие.

Кто получает

Получателями fees обычно являются:

  • LP, чья ликвидность была активна в момент сделки;
  • иногда протокол, если есть protocol fee share.

Кто несёт risk

LP несёт:

  • inventory risk;
  • impermanent loss;
  • out-of-range risk;
  • rebalance cost;
  • smart contract / venue risk.

Именно поэтому fee income не равно чистой прибыли. Yield здесь — это плата за принятие конкретного рыночного и операционного риска.

Чем active liquidity отличается от просто deposited capital

Это один из самых важных концептов во всей теме.

В concentrated liquidity полезно различать:

  • deposited capital — всё, что LP внёс в позицию;
  • active liquidity — та часть капитала, которая сейчас реально участвует в ценообразовании и swap.

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

Отсюда родилась практическая метрика:

не просто “сколько денег внесено”, а “сколько денег сейчас реально работает near price”.

Для dashboard и аналитики это важнее красивого TVL.

Что такое out of range

Когда цена выходит за выбранный диапазон, позиция становится out of range.

Практически это означает:

  • ликвидность перестаёт активно обслуживать swap;
  • сбор комиссий почти останавливается;
  • позиция превращается почти целиком в один актив;
  • чтобы снова ловить volume у текущей цены, LP нужно reposition.

Это и есть главный trade-off concentrated liquidity:

  • капитал работает эффективнее;
  • но требует внимания и обслуживания.

Почему concentrated liquidity часто путают с “почти limit order”

Сходство действительно есть.

Когда LP ставит узкий диапазон, он фактически говорит рынку:

  • “я готов продавать один актив и покупать другой в этой зоне цены”;
  • “вне этой зоны мой капитал не работает”.

Поэтому некоторые диапазоны действительно ведут себя похожим образом на range order.

Но это всё ещё не классический order book:

  • исполнение идёт через AMM-кривую;
  • LP не выставляет точную цену и объём одной лимитной заявки;
  • состав позиции меняется постепенно по мере движения цены внутри диапазона.

Где реальные trade-offs

1. Capital efficiency vs operational complexity

Чем ближе диапазон к текущей цене и чем он уже, тем эффективнее капитал.

Но тем выше:

  • шанс быстро выпасть out of range;
  • потребность в мониторинге;
  • частота reposition;
  • gas drag.

2. Higher fees per capital vs higher inventory risk

Активная ликвидность около цены может собирать больше комиссии на единицу капитала.

Но одновременно LP сильнее подвержен:

  • drift состава позиции;
  • потере exposure к растущему активу;
  • fee illusion, когда комиссии выглядят красиво, а итог хуже simple hold.

3. Passive-looking UI vs actually active strategy

Интерфейс “Add liquidity” выглядит пассивно.

Экономика позиции — нет.

Во многих парах concentrated liquidity — это по сути управляемая market making strategy, а не пассивный депозит.

4. Better trader execution vs more fragile LP lifecycle

Для трейдера concentrated liquidity часто улучшает depth near mid-price.

Для LP это означает, что хороший результат зависит уже не только от выбора пары, но и от:

  • ширины диапазона;
  • волатильности;
  • объёма торгов;
  • частоты обслуживания позиции.

5. Simple APR story vs real net PnL

APR без учёта:

  • impermanent loss;
  • out-of-range time;
  • rebalance gas;
  • fee decay;
  • token inventory drift;

почти бесполезен как бизнес-метрика.

Основные компоненты архитектуры concentrated liquidity продукта

Если строить DEX, LP manager или dashboard вокруг concentrated liquidity, архитектура обычно делится на несколько слоёв.

1. Smart contracts

Нужны:

  • pool contracts с tick/range mechanics;
  • position representation, часто в виде отдельного position object или NFT-like сущности;
  • fee accounting;
  • mint / increase / decrease / collect flows;
  • safety checks.

Даже если не писать собственный AMM, нужно понимать этот слой для корректной аналитики и automation.

2. Indexer и state cache

Нужно собирать:

  • pool metadata;
  • current price / sqrt price / active tick;
  • liquidity by tick range;
  • open positions;
  • fee growth;
  • swaps;
  • range crossings;
  • position snapshots.

Без этого нельзя нормально считать neither dashboard, neither risk engine.

3. Range analytics engine

Это слой, который отвечает на вопросы:

  • где находится цена относительно диапазона;
  • насколько позиция близка к out-of-range;
  • сколько капитала реально активно;
  • какая историческая utilisation у диапазона;
  • сколько fee пришло на активную ликвидность;
  • насколько позиция отклонилась от hold benchmark.

4. Reposition planner

Он решает:

  • оставлять range как есть;
  • расширять его;
  • сдвигать вслед за рынком;
  • закрывать позицию;
  • дробить капитал на несколько диапазонов.

Это место, где продуктовая логика пересекается с risk management.

5. Execution layer

Когда решение принято, нужен слой, который умеет:

  • закрыть часть позиции;
  • собрать fees;
  • при необходимости сделать swap для балансировки;
  • открыть новый диапазон;
  • проверить результат;
  • записать audit trail.

6. Monitoring и dashboards

Минимально полезно видеть:

  • active vs inactive liquidity;
  • fee income;
  • estimated IL / inventory drift;
  • distance to range edge;
  • time spent out of range;
  • rebalance history;
  • gas spent on maintenance.

Реальные сценарии использования

1. LP manager для активного провайдера ликвидности

Самый прямой use-case.

Нужно:

  • видеть позиции по пулам;
  • понимать, какие ranges ещё работают;
  • собирать fees;
  • планировать reposition.

2. Dashboard для treasury или protocol-owned liquidity

Если проект держит свою ликвидность на DEX, важно понимать:

  • насколько капитал реально активен;
  • какие пары и ranges дают лучший risk-adjusted result;
  • где комиссии уже не покрывают maintenance cost;
  • когда позицию пора перевести в более широкий или более защитный режим.

3. Risk monitor для операторов

Очень полезный слой даже без полного auto-rebalance.

Он может предупреждать:

  • позиция почти out of range;
  • volume упал;
  • fees перестали компенсировать drift;
  • в пуле выросла токсичность исполнения;
  • gas для reposition слишком высокий.

4. Range design helper

Для новых LP часто полезен инструмент, который объясняет:

  • что произойдёт при узком vs широком диапазоне;
  • как изменится активность капитала;
  • сколько примерно придётся обслуживать позицию;
  • как выглядит worst-case path при резком движении рынка.

Риски и ограничения

Impermanent loss и inventory drift

Concentrated liquidity не отменяет IL. Она просто делает профиль более чувствительным к месту диапазона и динамике рынка.

Out-of-range dead capital

Капитал формально не исчезает, но перестаёт быть активной ликвидностью near price.

Rebalance churn

Слишком активное обслуживание может съесть существенную часть заработанных fees.

False comfort от APR

Комиссии могут выглядеть высокими на коротком интервале, но net PnL после drift и gas окажется слабым.

Oracle / pricing assumptions в аналитике

Если dashboard неправильно считает current price, active tick или benchmark against hold, оператор получает ложные выводы.

Venue and contract risk

Даже идеальная range strategy не спасает от риска бага протокола, плохого router path или проблемного токена.

Как собрать похожий MVP

Если цель — не сделать с нуля новый Uniswap, а собрать полезный prototype, разумный scope такой.

Шаг 1. Ограничить universe

Для MVP достаточно:

  • одной сети;
  • 3–10 ликвидных пулов;
  • известных blue-chip пар;
  • только read-heavy аналитики и semi-automated actions;
  • без попытки поддержать все edge cases сразу.

Шаг 2. Поднять indexer

Минимальные сущности:

  • pools
  • ticks
  • positions
  • position_snapshots
  • swaps
  • fee_events
  • range_crossings
  • rebalance_actions
  • risk_flags

Нужно уметь хранить:

  • текущую цену;
  • active tick;
  • границы диапазона;
  • fee accrual;
  • estimated inventory composition;
  • время вне диапазона.

Шаг 3. Сделать range monitor

Минимальная логика:

  1. Загрузить состояние позиции.
  2. Сравнить текущую цену с range.
  3. Определить, активна ли позиция.
  4. Посчитать distance to edge.
  5. Оценить fees, drift и rebalance economics.
  6. Поставить risk label.

Псевдоструктура:

load_position_state()
load_pool_price_and_tick()
check_in_range(lower, upper)
compute_active_liquidity_share()
estimate_fee_income()
estimate_inventory_drift()
score_rebalance_need()
return operator_recommendation

Шаг 4. Собрать dashboard

Минимальный UI должен показывать:

  • pool;
  • current price;
  • selected range;
  • in range / out of range;
  • fees earned;
  • active liquidity share;
  • estimated drift vs hold;
  • recommended action.

Хороший бонус — блок Why this position needs attention:

  • near lower edge;
  • near upper edge;
  • inactive capital too high;
  • gas too expensive for rebalance;
  • fee income below threshold.

Шаг 5. Добавить safe automation layer

Не надо сразу делать fully automatic LP bot.

Для MVP лучше:

  • alerts в Telegram/Slack;
  • ручное подтверждение reposition;
  • pre-trade simulation;
  • лимиты по gas и frequency;
  • audit log по каждому действию.

Что можно автоматизировать поверх

Вот где появляется отдельная продуктовая ценность.

1. Range edge alerts

Автоматически предупреждать, если позиция:

  • подходит к границе диапазона;
  • уже out of range;
  • теряет active share.

2. Rebalance recommendations

Система может не исполнять действие сама, а предлагать:

  • расширить диапазон;
  • сместить range;
  • собрать fees и подождать;
  • уменьшить капитал;
  • закрыть позицию.

3. Treasury guardrails

Для protocol-owned liquidity полезны правила:

  • max gas per rebalance;
  • max daily churn;
  • allowlist пулов;
  • min liquidity depth;
  • запрет auto-action во время volatility spike.

4. Fee quality analytics

Важно видеть не только gross fees, но и:

  • fees per active capital;
  • fees after gas;
  • net vs hold benchmark;
  • out-of-range idle time;
  • concentration risk by pair.

5. Anomaly detection

Можно ловить:

  • слишком частые range crossings;
  • резкий спад volume near range;
  • нетипичный gas для reposition;
  • pool state changes, которые делают расчёты подозрительными;
  • расхождение между симуляцией и onchain результатом.

6. Semi-automated reposition workflows

Полезный компромисс между ручным адом и опасной полной автоматизацией:

  • система считает кандидата на новый range;
  • оператор получает recommendation;
  • после approve запускается one-click reposition;
  • post-action reconciliation сверяет фактический результат.

Как выглядит здравый roadmap

Phase 1 — visibility

  • indexer;
  • position dashboard;
  • active/inactive liquidity metrics;
  • alerts по edges и out-of-range.

Phase 2 — decision support

  • range recommendations;
  • fee vs drift analytics;
  • hold benchmark;
  • gas-aware rebalance scoring.

Phase 3 — assisted execution

  • collect fees workflows;
  • reposition planner;
  • simulation;
  • operator approval flow.

Phase 4 — automation layer

  • guarded auto-rebalance;
  • treasury policies;
  • anomaly detection;
  • operator console;
  • strategy analytics across many pools.

Главное, что стоит запомнить

Если убрать весь шум, картина такая:

  • concentrated liquidity ставит капитал LP ближе к текущей цене;
  • range определяет, где ликвидность активна;
  • ticks задают дискретную сетку, по которой pool включает и выключает ликвидность;
  • fees получают те LP, чья ликвидность реально участвовала в swap;
  • yield здесь — это плата за inventory risk, IL, out-of-range risk и maintenance cost;
  • хороший результат зависит не только от пула, но и от качества range management;
  • полезный MVP можно собрать как indexer + range monitor + LP dashboard + rebalance planner + safe automation layer.

По сути, concentrated liquidity — это момент, где DEX перестаёт быть просто “пулом для свопов” и превращается в более точную рыночную машину. Для трейдера это часто лучший depth near price. Для LP — уже почти управляемая стратегия market making. А для инженера и продуктовой команды — отличный материал, чтобы строить dashboards, helper-tooling и automation layer с реальной практической ценностью.