Гайды
April 25

Подбор оптимальных параметров для создания рынков на LlamaLend

Хотите создать собственный рынок кредитования на LlamaLend, но не знаете, с чего начать? Начните с подбора параметров — проведите исследование и определите оптимальные настройки для вашего рынка.

ОГЛАВЛЕНИЕ



Введение

Правильный подбор параметров — фундамент успешного и безопасного рынка кредитования на лендинг платформе Curve Finance. Процесс требует тщательного анализа исторических данных и моделирования различных рыночных сценариев.

Рынки LlamaLend работают по принципу permissionless — их может создать любой пользователь без специальных разрешений. Однако эта задача требует компетенций и ответственности, поэтому функционал создания рынков не интегрирован в стандартный пользовательский интерфейс Curve. Создать новый рынок можно используя специальный контракт-фабрику. (Гайд по созданию рынка выйдет чуть позже.)

Перед запуском нового рынка необходимо провести комплексное исследование на базе истории поведения залогового актива в различных рыночных условиях. Идеальный кандидат — актив с длительной торговой историей, прошедший через различные фазы рынка (бычьи и медвежьи тренды, периоды высокой волатильности).

Для проведения симуляций и бэктестов команда Curve Finance разработала специальный инструмент — симулятор LLAMMA (Lending-Liquidating AMM Algorithm).  Он позволяет:

  • Анализировать исторические данные цен
  • Моделировать поведение рынка при различных параметрах
  • Оценивать потенциальные риски и доходность
  • Оптимизировать ключевые параметры рынка (комиссии, A-параметр, количество диапазонов)

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


Установка и настройка симулятора

Для работы с симулятором необходимо минимальное окружение: Python с библиотеками NumPy и Matplotlib. Все исходные коды и примеры доступны в официальном GitHub репозитории:https://github.com/curvefi/llamma-simulator

Если на этом моменте у вас пропало желание изучать материал дальше, не уходите — ниже вы найдёте Telegram-бота, который выполняет те же задачи без самостоятельного запуска Python-скриптов. Тем не менее настоятельно рекомендуется изучить весь материал если вы планируете создание рынка на LlamaLend.

Для начала работы с симулятором вам потребуется установить необходимые компоненты:

# Создание и активация виртуального окружения
python -m venv .venv
source .venv/bin/activate
# Установка компонентов NumPy, Matplotlib и Requests
pip install --upgrade pip
pip install numpy matplotlib requests

Также вам понадобятся исторические данные о ценах. Для их загрузки можно использовать скрипты из директории data/fetch-*.py. Например, для загрузки данных CRV/USDT:

cd data
python3 fetch-crvusd.py
mv crvusdt.json crvusdt-1m.json  # Переименование с указанием таймфрейма
gzip crvusdt-1m.json  # Сжатие файла для экономии места

Симулятор работает с данными в сжатом формате (.gz), что ускоряет загрузку и экономит дисковое пространство.


Настройка перед симуляцией

Для подбора параметров рынка нам нужно провести 2 основные симуляции 2_simulate_A.py и 1_simulate_fee.py. Причем, не смотря на нумерацию, сначала стоит проводить симуляцию именно через 2_simulate_A.py для получения А.

Перед симуляцией нужно настроить каждый из скриптов под свой тип залогового актива, можно взять готовый вариант из многочисленных примеров на https://github.com/curvefi/llamma-simulator или задать переменные самостоятельно.

Пояснения для переменных задаваемых в скриптах:

A=[int(a) for a in logspace(log10(10), log10(300), 50)] 
(для 2_simulate_A.py)

Здесь задается диапазон подбора параметров А. 10 - минимальный А, 300 - максимальный А. 50 - количество собираемых точек для построения итогового графика.
Рекомендация - для волатильных монет используются низкие значения, а для связанных монет таких как стейблкоины и другие жестко связанные активы нужно использовать более высокие (варианты смотрите в примерах).

A=30 
(для 1_simulate_fee.py)

Конкретное значение A для подбора fee.

range_size=4

Размер диапазона который задается параметром количество полос (bands).
Рекомендация - использовать минимальный диапазон =4,  в таком случае мы проверяем самый худший сценарий.

fee=0.002
(для 2_simulate_A.py)

Размер комиссий для подбора А.
Рекомендация - при первом сканировании использовать значение 0.002, получив А сможете подобрать оптимальный fee в 1_simulate_fee.py.

fee=logspace(log10(0.0001), log10(0.02), 20)
(для 1_simulate_fee.py)

Здесь задается диапазон подбора параметров fee. 0.0001 - минимальный fee, 0.02 - максимальный fee. 20 - количество собираемых точек для построения итогового графика.
Рекомендация - для волатильных монет используются более высокие значения комиссий, а для связанных монет таких как стейблкоины и другие жестко связанные активы нужно использовать более низкие значения (варианты смотрите в примерах).

min_loan_duration=1/24/2, max_loan_duration=1/24/2

Временной промежуток, задается в днях. Для большинства реальных сценариев стоит выбирать короткие временные промежутки -  предполагаемое максимальное время необходимое ликвидаторам для ликвидации. В примере: 1/24/2 = 1/48 дня или 30 минут.
min_loan_duration=0.5, max_loan_duration=0.5 - такой формат также допустим.
Можно для симуляции задать диапазон разных временных промежутков, но один вариант (одинаковые значения min и max как в примере) тоже подходит.
Рекомендация - чем меньше участников рынка и медленней арбитраж тем больший промежуток стоит выбирать.

samples=500000, n_top_samples=5

samples: число Monte Carlo-прогонов — сколько случайных сценариев (позиции с разными начальным временем и длительностью) будет сгенерировано и прогнано через симулятор.

Чем больше значений, тем точнее и стабильнее оценка потерь, но дольше считает, симуляция 500 000 сценариев занимает часы на среднем компьютере.

n_top_samples: из всех 500 000 прогонов берутся 5 самых худших (с наибольшими значениями потерь), и по ним считается среднее. Это позволяет оценить хвостовой риск — насколько плохо может сложиться в экстремальных ситуациях.

Рекомендация 1 - для полноценного исследования оптимального А стоит запускать не мене чем на 500 000 сценариев.
Рекомендация 2 - для исследования оптимального fee можно использовать меньшее количество сценариев, но большее количество худших, к примеру: samples=10000, n_top_samples=1000.

add_reverse=True

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

Texp=600 

Означает время экспоненциального сглаживания (EMA) и задаётся в секундах.  Должен быть равен аналогичному параметру у оракула.  По умолчанию для всех оракулов NG пулов он равен 600. Но если значения у оракула будет другим стоит указывать именно его.


Симуляция и подбор параметров рынка

При создании рынка на LlamaLend необходимо определить несколько ключевых параметров, которые будут влиять на его эффективность и безопасность. Рассмотрим каждый из них более подробно.

1. Оптимальный параметр усиления (A)

Начать исследование лучше с поиска оптимального параметра А.

Параметр усиления (A или amplification) зависит от волатильности актива и является критически важным для балансировки рисков. Чем выше волатильность актива, тем более консервативное (низкое) значение A следует выбрать.

Для определения оптимального значения A используется скрипт 2_simulate_A.py:

python3 2_simulate_A.py        

Этот скрипт генерирует два графика – потери и дисконт для заданного количества диапазонов.

Оптимальное значение A соответствует минимуму оранжевого графика. Например, здесь это значение примерно равно 30.

2. Оптимальная комиссия (fee)

Комиссия в LLAMMA влияет на доходность и стабильность рынка. Для большинства активов (кроме EUR) оптимальный диапазон комиссии составляет 0,2%–0,9% (fee = 0.002–0.009 в коде). Рекомендуется определять точное значение комиссии с помощью симуляции, как будет показано далее.

Для определения оптимальной комиссии используется скрипт 1_simulate_fee.py, который рассчитывает потери в зависимости от комиссии для позиции с заданным количеством диапазонов (bands) и найденного ранее параметра усиления A.

python3 1_simulate_fee.py

График, полученный в результате выполнения скрипта, показывает зависимость потерь от значения комиссии. Оптимальная комиссия соответствует минимуму графика.

Например, здесь оптимальная комиссия составляет ~0.3% (в коде задается как 0,003).

3. Расчет liquidation_discount и loan_discount

Расчет liquidation_discount

Нужно взять значение синего графика которое находится ровно под нижней точкой оранжевого, оно составляет ~0,07. Это тот убыток, который МОЖЕТ возникнуть в худшем случае (за заданный период времени) при N=4 — именно столько потеряет позиция, если волатильность будет действительно высокой.

Это значит, что мы устанавливаем liquidation_discount = 0,07 (7%).

Расчет loan_discount

Чтобы при повторении такого сценария пользователь не был сразу ликвидирован общепринятой практикой на LlamaLend принято прибавлять 3% к значению liquidation_discount.
0,07 + 0,03 получаем: loan_discount = 0,1 (10%).

4. Итоговая сводка параметров необходимых для создания рынка получаемых из симуляции

А = 10
fee = 0.003
liquidation_discount = 0,07
loan_discount = 0,1 

(позже, при создании рынка, все значения кроме A нужно будет перевести в формат wei 10¹⁸)


Телеграм бот

llamma-simulator-bot: https://t.me/llamma_simulator_bot

Если у вас нет желания самостоятельно запускать скрипт. Воспользуйтесь телеграм ботом который реализует описанные выше возможности симулятора LLAMMA но без необходимости запуска пайтон скриптов.

Внимание. На момент написания этого материала бот находится на ранней стадии тестирования, поэтому возможны неточности или ошибки.

Для работы с симулятором воспользуйтесь меню:

"Fetch prices" При выборе действия "Fetch prices" вы можете запустить сбор исторических данных цен для определённой монеты, доступны варианты сбора данных с бирж Curve и Binance.

"Archives" Хранит ранее собранные архивы исторических данных цен. Позволяет выбирать конкретный архив для симуляции.

"Chart" Строит график истории цен для выбранного архива. Полезно для проверки того что данные были собраны корректно.

"Parameters" Здесь можно задать переменные для каждого из параметров симуляции.

"Scan Fee" и "Scan A"

Запускают процесс соответствующего сканирования.


Общие рекомендации по подбору параметров

При создании нового рынка на LlamaLend важно учитывать следующие рекомендации:

Выбор параметров в зависимости от волатильности актива

Принципы выбора параметров позиции в LlamaLend схожи с теми, что применяются в стратегиях торговли с плечом. Разница в том, что в данном случае вы настраиваете не свою торговую позицию, а параметры всего рынка.

Для активов с высокой волатильностью рекомендуется:

  • Выбирать более консервативное значение параметра A
  • Устанавливать более высокий дисконт займа
  • Ограничивать максимальный LTV для снижения риска ликвидаций

Баланс между доходностью и безопасностью

При оптимизации параметров важно найти баланс между потенциальной эффективностью капитала для пользователей и безопасностью рынка. Слишком консервативные параметры могут сделать рынок неконкурентоспособным (плохое LTV), а слишком агрессивные – подвергнуть его риску массовых ликвидаций при резких движениях цены.

Тестирование параметров на исторических данных

Перед запуском рынка рекомендуется провести тестирование выбранных параметров на исторических данных, особенно включающих периоды высокой волатильности:

  1. Загрузите исторические данные для выбранного актива
  2. Проведите симуляции с различными наборами параметров
  3. Проанализируйте результаты и выберите оптимальную конфигурацию
  4. Протестируйте выбранную конфигурацию на экстремальных сценариях (резкие падения/рост цены)

Заключение

Симулятор llamma-simulator предоставляет научный подход к оптимизации параметров, но также требуется экспертное понимание рынка и характеристик конкретного актива.

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

Используя описанные в этой статье подходы и инструменты, вы сможете создать рынки на Curve Lending LlamaLend, которые будут привлекательны для пользователей и устойчивы к рыночным колебаниям.