Анализ и улучшения пулов 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 некоторое время следовал за реальными ценами, а затем отклонился.
А вот что можно увидеть, если мы попытаемся симулировать поведение пула для того же самого временного интервала с точно такими же параметрами:
Симуляции немного занижают производительность пула. Это справедливо, так как симуляции учитывают ТОЛЬКО арбитраж между пулом и централизованными биржами и полностью игнорируют любые дополнительные естественные потоки через пулы. Самым крупным фактором, способствующим дополнительному доходу в реальном пуле по сравнению с симуляциями, являются транзакции, включающие ликвидации на кредитных платформах. Благодаря им пул зарабатывает немного больше, чем мы симулировали, и реальная производительность несколько лучше.
Давайте расширим диапазон симуляций, чтобы проверить период с начала 2025 года по настоящее время:
Вы можете видеть, что волатильность с начала 2025 года была, вероятно, ниже, чем она стала позже, поэтому price_scale хорошо следовал за реальными ценами до конца февраля 2026 года.
Давайте расширим диапазон еще больше и посмотрим с начала 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 года:
И если бы мы начали в январе 2024 года:
Легко заметить, что в 2024 году имели бы место очень длительные периоды «бычьих дисбалансов», доводящие отклонения до 80%/20%, в направлении, противоположном текущему пиковому отклонению 22%/78%.
Рост депозитов — фундаментальная стоимость и стоимость погашения
Измеренный рост с ноября 2025 года по настоящее время для пула 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, которое у нас сейчас «зашито» в коде, похоже на довольно нестабильную точку на грани приемлемости согласно новым метрикам, которые мы только что ввели.
Оптимальные параметры, найденные для пулов BTC, можно увидеть здесь на GitHub.
price_scale с новым кодом пула с 2024 годаМожно заметить, что price_scale следует за ценами намного лучше, чем раньше. Интересно, что если мы начнем симуляции в 2025 году, цена следует немного лучше (хотя это может быть связано со случайной природой цен).
price_scale с новым кодом пула с 2025 годаДисбаланс пулов
Дисбалансы на пиках достигают 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