# Вопросы по стратегии для верлина ## MLPool Context MLPool(далее мета-пул) представляет собой LP токен(`ERC20`) c функцией приема/снятия сторонних `ERC20` токенов от внешних пользователей. Помимо этого мета-пул обладает набором интерфейсов для управления позицией в пуле `uniswap_v3`. Позиция в пуле `uniswap_v3` репрезентует переданные ему пару токенов(например `USDC` и `WETH`) и характерезуется верхней и нижней границей позиции и суммой позиции. Работа функций `deposit` и `withdraw` мета-пула не семетрична. `deposit` имеет [pull](https://en.wikipedia.org/wiki/Push%E2%80%93pull_strategy) стратегию, `withdraw` - [push](https://en.wikipedia.org/wiki/Push%E2%80%93pull_strategy). 1. При депонировании(`deposit`) пользователь передает мета-пулу требуемый токен(например `WETH`), в замен получает LP токен `MLP_WETHUSDC`, торговый робот при следующей ребалансировки позиции в пуле `uniswap_v3` автоматически нарастит ее емкость на сумму пришедшую от пользователей мета-пула за весь период после последней ребалансировки(важно знать, что для наращивания позиции помимо пользовательских токенов используя капитал управляющих мета-пула). 2. При снятии(`withdraw`) пользователь сжигает часть позиции в пуле `uniswap_v3` и забирает вложенный токен, второй токен соженной позиции остается на контракте мета-пула. Для операций над позицией в пуле `uniswap_v3` мета-пул имеем следующие инструменты: ### 1. Mint Создание позиции в пуле > аналог выставления пары лимитных ордеров по границам спреда ``` function mint( address recipient, int24 tickLower, int24 tickUpper, uint128 amount, bytes calldata data ) ``` ### 2. Burn Удаление позиции в пуле ``` function burn( int24 tickLower, int24 tickUpper, uint128 amount ) ``` ### 3. Collect Cбор токенов, принадлежащих позиции мета-пула, включая заработанную комиссию ``` function collect( address recipient, int24 tickLower, int24 tickUpper, uint128 amount0Requested, uint128 amount1Requested ) ``` ### 4. Swap Прямой обмен токенов в пуле > аналог выставления рыночного ордера(с условиями выполнения по типу [FOK](https://www.investopedia.com/terms/f/fok.asp)) ``` function swap( address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes calldata data ) ``` ## Вопросы ### 1. Общие 1. В рамках одного мета-пула мы оперируем одной или несколькими позициями в пуле `uniswap_v3`? По видео сложилось впечатление что несколькими. Если несколькими - нужно уточненить как они между собой связанны(выявить зависимость `tickLower`, `tickUpper` и `Amount` между пулами) 2. Подразумевает ли торговая стратегия **не полное** использование токенов пользователей для создания позиции в пуле `uniswap_v3`. Иными словами предполагается ли использование пользовательских токенов для косвенной ре-балансировки через выставление рыночных ордеров(`swap`), или для данной операции мы используем дополнительный бюджет токенов, депонируемый управляющим мета-пула(MLP)? 3. Используются ли данные внешних рынков в качестве триггеров при ребалансировке(например binance) ### 2. Предметные Задача торговой системы используя данные инструменты управлять ликвидностью мета-пула(некоторым количеством пары токенов) в автоматическом режиме, с минимальным использованием человека(за исключением определения и пере-определения ключевых параметров). 1. Начальное создание позиции(**`mint`**) - параметры `tickLower`, `tickUpper`, `amount` - задаются ли эти параметры вручную или вычисляются исходя из данных внешних систем. 2. Прямая ре-балансировка позиции - удаление старой позиции(**`burn`**) и создание новой(**`mint`**) - параметры `tickLower`, `tickUpper`, `amount` - задаются ли эти параметры вручную или вычисляются исходя из данных внешних систем. 3. Косвенная ре-балансировка позиции(позволяет изменять курс пула, через размещение встречной к внешнему обмену заявки) - публикация рыночного ордера на обмен в заданном пуле(**`swap`**) - параметры TBA. Из ответов на данные вопросы мы постараемся формулировать алгоритм торгового робота - цепочку операций, поддерживающую позицию в требуемых границах, алгоритм расчета которых так-же определим из ответов.