переводы
April 14

Анализ и улучшения пулов Yield Basis

Перевод на русский поста в блоге

Пулы Yield Basis (YB) используют под капотом пулы Curve Twocrypto с инвариантом «stableswap». Эти пулы характеризуются рядом параметров (пиковая концентрация ликвидности «A», называемая коэффициентом усиления; динамические комиссии, характеризующиеся min_fee, max_fee, fee_gamma; и ставка «дозаправки» (refuel rate), поступающая из Yield Basis в пулы). Производительность пула можно охарактеризовать ростом его стоимости (представленной как виртуальная цена) — это значение соответствует стоимости пула, когда он сбалансирован, а также тому, насколько хорошо price_scale (цена, вокруг которой сосредоточена ликвидность) следует за реальной ценой.

Краткое изложение результатов исследования представлено на одном изображении:

Данные для этого исследования доступны на GitHub в репозитории yb-simulations

В соответствии с "price_scale"

Начиная с середины ноября, вот как, например, price_scale для пула cbBTC следует за реальными ценами:

Вы можете видеть, что price_scale некоторое время следовал за реальными ценами, а затем отклонился.

А вот что можно увидеть, если мы попытаемся симулировать поведение пула для того же самого временного интервала с точно такими же параметрами:

Краткая симуляция price_scale для BTC

Симуляции немного занижают производительность пула. Это справедливо, так как симуляции учитывают ТОЛЬКО арбитраж между пулом и централизованными биржами и полностью игнорируют любые дополнительные естественные потоки через пулы. Самым крупным фактором, способствующим дополнительному доходу в реальном пуле по сравнению с симуляциями, являются транзакции, включающие ликвидации на кредитных платформах. Благодаря им пул зарабатывает немного больше, чем мы симулировали, и реальная производительность несколько лучше.

Давайте расширим диапазон симуляций, чтобы проверить период с начала 2025 года по настоящее время:

Симуляция price_scale для BTC с 2025 года

Вы можете видеть, что волатильность с начала 2025 года была, вероятно, ниже, чем она стала позже, поэтому price_scale хорошо следовал за реальными ценами до конца февраля 2026 года.

Давайте расширим диапазон еще больше и посмотрим с начала 2024 года:

Симуляция price_scale для BTC с 2024 года

В 2024 году производительность при этих параметрах (из-за гораздо более высокой краткосрочной волатильности) также была бы невысокой. Однако мы, вероятно, сейчас находимся в том же режиме, что и до 2025 года! При текущих параметрах, оптимальных для 2025 года, длительность «отвязок» (depegs) может быть действительно большой (месяцы).

Еще одна примечательная особенность: price_scale изменяется большими шагами. Это нежелательно, так как приводит к внезапным утечкам стоимости к арбитражным трейдерам, чего можно избежать.

В идеале пул Curve должен состоять из 50% BTC + 50% crvUSD, т.е. быть сбалансированным. Иногда он может отклоняться от этого, но в идеале мы должны стремиться минимизировать это отклонение: это минимизирует TRD (временной дисконт погашения — temporary redemption discount) и давление на привязку crvUSD. Пул идеально сбалансирован, когда price_scale = текущей цене, однако он разбалансируется, когда они не равны, и дисбаланс выше, когда A выше.

Вот как практически были сбалансированы пулы BTC с ноября 2025 года:

Можно заметить, что пулы выходили из баланса до 22%/78% в пике, когда price_scale отклонялся от текущей цены, в то время как идеальный «привязанный» баланс составляет 50%/50%.

Давайте сравним это с симуляциями за тот же период времени:

Можно увидеть, что пулы еще более разбалансированы в симуляциях, потому что в реальности price_scale догоняет реальность быстрее, чем в симуляциях. Важно сравнивать, потому что мы хотим, чтобы симуляции немного занижали производительность.

Давайте расширим диапазон и посмотрим, как это работало бы, если бы мы начали в январе 2025 года:

Симуляции дисбалансов BTC-пула 2025

И если бы мы начали в январе 2024 года:

Симуляции дисбалансов BTC-пула 2024

Легко заметить, что в 2024 году имели бы место очень длительные периоды «бычьих дисбалансов», доводящие отклонения до 80%/20%, в направлении, противоположном текущему пиковому отклонению 22%/78%.

Рост депозитов — фундаментальная стоимость и стоимость погашения

Измеренный рост с ноября 2025 года по настоящее время для пула cbBTC:

Измеренное изменение стоимости в пуле cbBTC

И за тот же период — симулированный. Рост симулированной фундаментальной стоимости немного меньше, так как симуляции не учитывают разделение на стейкинг/анстейкинг.

Временной дисконт погашения (TRD) — это разница между двумя линиями на графике. Симулированный TRD немного выше, потому что пул ребалансируется быстрее в реальности.

Если мы симулируем, начиная с января 2025 года:

Опять же, мы видим, что параметры были бы рабочими для 2025 года, но не после.

Давайте симулируем, начиная с более раннего времени — января 2024 года:

Здесь мы видим, что аналогичный TRD происходил бы в прошлом с последующим полным восстановлением, однако после довольно долгого времени.

Мы хотим исправить следующие проблемы, большинство из которых мы видим на графиках:

  • Очень большой и длительный TRD (стоимость погашения падает). Люди могут не захотеть ждать несколько месяцев, когда они собираются выйти из своих позиций;
  • Большие и длительные дисбалансы пула: та же проблема, что вызывает TRD, они также влияют на привязку crvUSD, ограничивая масштабирование;
  • Корректировка price_scale пулом происходит слишком резко: это создает внезапные падения фундаментальной стоимости. Это нежелательно, а также приводит к утечке части стоимости к арбитражным трейдерам;
  • Поведение LevAMM, когда пул сильно разбалансирован: мы всегда должны разрешать сделки в сторону меньшего дисбаланса (не включено на графиках);
  • Пулы Curve в настоящее время могут использовать только 50% заработанных комиссий на ребалансировку. Сделать эту долю настраиваемой, по-видимому, дает большую разницу, как мы увидим далее.

Улучшения в симуляциях и пулах

Во-первых, мы хотим отговорить пул от разбалансировки. Для этого, при поиске максимального APR пула, мы корректируем его с помощью коэффициента дисбаланса:

avg_imbalance = average_over_time(
	1 - 4 * b_0 * b_1 * price_scale / (b_0 + b_1 * price_scale)**2
)
APR_adjusted = APR * (1 - 0.2 * avg_imbalance)

где b_0 и b_1 — балансы crvUSD и BTC в пуле. Если бы пул был идеально сбалансирован все время, это среднее было бы равно нулю, а APR_adjusted был бы просто равен APR.

Во-вторых, мы хотим предотвратить периоды, когда APR слишком низкий. Для этого вместо расчета «обычного» APR мы вычисляем среднее геометрическое всех 2-месячных APR, определенных в скользящем окне.

В работающих в настоящее время пулах BTC цена, на которую корректируется price_scale, рассчитывается как:

relative_price_step = max(
	(price_scale - price_oracle) / price_scale / 5,
	adjustment_step
)

Это ограничивает relative_price_step (относительный шаг цены) с нижней стороны.

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

relative_price_step = min(
	(price_scale - price_oracle) / price_scale / 5,
	adjustment_step
)  
adjustment_step ~= 0.5%

Это ограничивает шаги корректировки цены так, чтобы они не превышали 0,5%. Метод уже протестирован на пуле WETH.

Еще один очень важный момент: в настоящее время LP получает 50% комиссий, заработанных пулом, а другие 50% комиссий тратятся на ребалансировку пула. Это вызывает вопрос: что, если разделение 50/50 является субоптимальным? Похоже, что так оно и есть. После всех оптимизаций мы обнаружили, что для глобального оптимума нашей новой метрики доля прибыли LP должна составлять около 40%, в то время как мы должны тратить около 60% на ребалансировку. Разделение 50/50, которое у нас сейчас «зашито» в коде, похоже на довольно нестабильную точку на грани приемлемости согласно новым метрикам, которые мы только что ввели.

Поиск оптимальной доли LP и ставки усиления с использованием данных с 2024 года по настоящее время

Оптимальные параметры, найденные для пулов BTC, можно увидеть здесь на GitHub.

price_scale с новым кодом пула с 2024 года

Можно заметить, что price_scale следует за ценами намного лучше, чем раньше. Интересно, что если мы начнем симуляции в 2025 году, цена следует немного лучше (хотя это может быть связано со случайной природой цен).

price_scale с новым кодом пула с 2025 года

Дисбаланс пулов

Дисбаланс с 2024 года

Дисбалансы на пиках достигают 30%/70% и являются гораздо более короткими, чем в текущих пулах. Интересно, что точно так же, как и price_scale, они выглядят немного лучше, если мы берем данные, начиная с 2025 года.

Рост депозитов — фундаментальная стоимость и стоимость погашения

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

Заключение

Методология поиска оптимальных параметров была улучшена, и необходимые изменения в коде пула определены. Мы способны уменьшить нежелательный TRD в 3 раза, а его длительность, вероятно, на порядок. Давление на привязку crvUSD значительно снижено. Производительность пула в среднем сопоставима с тем, что была раньше.

Нам следует масштабировать Yield Basis с улучшенными пулами. Необходимые изменения в коде находятся в стадии реализации.

🔰 Помощь

Помощь и FAQ: https://docs.yieldbasis.com/user/how-it-works
Техническая документация: https://docs.yieldbasis.com/dev/overview

💬 Общение

Cообщество YieldBasis в Телеграм (англ)

📰 Медиа

EN: X/Twitter

RU: Канал Михаила Егорова