# Вопросы по стратегии для верлина
## 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.
Из ответов на данные вопросы мы постараемся формулировать алгоритм торгового робота - цепочку операций, поддерживающую позицию в требуемых границах, алгоритм расчета которых так-же определим из ответов.