Try   HackMD

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

MLPool Context

MLPool(далее мета-пул) представляет собой LP токен(ERC20) c функцией приема/снятия сторонних ERC20 токенов от внешних пользователей. Помимо этого мета-пул обладает набором интерфейсов для управления позицией в пуле uniswap_v3. Позиция в пуле uniswap_v3 репрезентует переданные ему пару токенов(например USDC и WETH) и характерезуется верхней и нижней границей позиции и суммой позиции.

Работа функций deposit и withdraw мета-пула не семетрична. deposit имеет pull стратегию, withdraw - push.

  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)

    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.

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