---
# System prepended metadata

title: Вопросы по стратегии для верлина

---

# Вопросы по стратегии для верлина

## 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.


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

