Разработка системы сравнения APY/APR протоколов
Пользователь видит на Aave 4.2% APY на USDC, на Compound 5.1% APR, на Morpho 5.8% c rewards токенами. Но цифры несопоставимы: Aave считает compound interest, Compound — простую ставку, Morpho добавляет MORPHO вознаграждения. На одном проекте для DeFi-агрегатора мы обнаружили, что поставщики данных выдавали APY и APR вперемешку, а rewards искажали картину до 7% разницы. После нормализации и внедрения risk-adjusted score клиент увеличил TVL своего пула на 35% за счёт точного отображения доходности. Система также сэкономила команде по 15 часов ручного анализа в неделю — это позволило быстрее реагировать на изменения рыночных условий.
Мы разработали систему, которая нормализует метрики к единому стандарту — Daily APR — и показывает реальную доходность с учётом всех факторов. В основе лежат on-chain данные, Multicall3 батчинг и историческая агрегация. На практике разница в представлении доходности может вводить в заблуждение даже опытных LP. Корректная нормализация — первый шаг к объективному сравнению пулов.
Проблема сравнения метрик
APR — простая ставка без реинвестирования. APY — с учётом compound effect. Разница при частом начислении существенна:
APY = (1 + APR/n)^n - 1 На Ethereum при APR = 10% и начислении каждый блок (≈ 2190 раз/год) APY ≈ 10.52%. Для корректного сравнения система нормализует всё в Daily APR — делим годовую ставку на 365. Пользователю показываем APY, внутри считаем в Daily APR.
Сравнение метрик для наглядности:
| Параметр | APR | APY |
|---|---|---|
| Учёт реинвестирования | Нет | Да |
| Типичное использование | Кредитование | Депозиты |
| Пример (10% годовых, дневная капитализация) | 10% | 10.52% |
Многие протоколы поверх базовой ставки платят собственные токены (COMP, AAVE, MORPHO). Мы показываем base APY (без rewards) и total APY (с rewards) раздельно. Для reward-токенов учитываем текущую цену через oracle (Chainlink) — волатильна, может упасть к моменту claim, а также vesting/lock (AAVE Safety Module вестируется 10 дней) и emission decay. Пользователь сам решает, учитывать ли нестабильные rewards.
Получение данных on-chain: каждый протокол предоставляет данные по-своему. Мы используем Multicall3 для батчинга: 1000 отдельных вызовов упаковываются в одну транзакцию. Это в 100 раз эффективнее последовательных запросов и экономит газ.
Пример для Aave V3:
const calls = protocols.flatMap(protocol => assets.map(asset => ({ target: protocol.address, callData: protocol.interface.encodeFunctionData("getReserveData", [asset]) })) ); const results = await multicall.aggregate(calls); Для исторических данных используем официальные субграфы (The Graph) Aave, Compound. Для протоколов без субграфа — собственный event indexer.
Архитектура системы
Слой сбора данных
On-chain вызовы дорогие (RPC requests). При 10 протоколах × 20 assets × 5 метрик = 1000 calls при каждом обновлении. Решение: Multicall3 батчинг — все calls в одну транзакцию. Что входит в нашу работу:
- Разработка адаптеров для каждого протокола (типовые контракты + кастомные)
- Настройка кэширования: Redis (TTL 60 сек) для текущих ставок, PostgreSQL — часовые снепшоты
- Real-time обновления через WebSocket (при наличии событий)
- Background job каждые 60 секунд fetches on-chain данные
Как мы гарантируем точность метрик?
Мы проверяем формулы по официальной документации протоколов — Aave, Compound. Каждый адаптер проходит unit-тесты с использованием Tenderly fork. Результаты сверяются с данными Etherscan и Dune Analytics.
Историческая динамика
Текущий APY — моментальный снимок. Для принятия решений нужна история: moving average (7d, 30d), волатильность (std dev APY), min/max за период. Volatile APY (меняется в 5x диапазоне за месяц) — другой профиль риска, чем stable APY (±0.5%). Пример расчёта волатильности: за 30 дней APY колебалась от 3.2% до 7.8%. Стандартное отклонение — 1.4%. Это сигнал о нестабильной доходности, часто из-за reward-эмиссии.
Ранжирование и сравнение
Просто отсортировать по APY — недостаточно. Система предлагает фильтры:
- Только stable APY (волатильность < 0.5% за 30 дней)
- Только audited протоколы (проверенные аудиты)
- Минимальный TVL (исключаем маленькие пулы)
Пользователь сам взвешивает приоритеты — единый score не навязывается.
Какие протоколы поддерживаются по умолчанию?
Поддерживаем основные рынки и пулы:
| Протокол | Тип | Сеть | Активы |
|---|---|---|---|
| Aave V3 | Lending | Ethereum, Polygon, Arbitrum | USDC, USDT, WETH, WBTC |
| Compound V3 | Lending | Ethereum, Polygon | USDC, WETH |
| Morpho | Aggregator | Ethereum | USDC, WETH, DAI |
| Curve | AMM | Ethereum, Polygon | USDC, DAI, FRAX |
| Pendle | Yield | Ethereum, Arbitrum | USDC, wstETH |
| Uniswap V3 | AMM | Ethereum, Polygon, Arbitrum | WETH/USDC, WETH/DAI |
По запросу добавляем любой EVM-протокол с кастомным адаптером.
Как мы нормализуем APY пошагово
- Получаем raw-данные из контракта протокола через Multicall3 (одна батч-транзакция).
- Извлекаем базовую ставку и параметры награждения (reward per second, oracle price).
- Пересчитываем в единый формат: конвертируем APR в APY с частотой капитализации протокола.
- Для reward-токенов вычисляем тотальный APY с учётом текущей цены и вестинга.
- Записываем снепшот в историческую базу и обновляем Redis-кеш (TTL 60 сек).
Этот процесс повторяется каждую минуту автоматически.
Что входит в работу
- Адаптеры для каждого протокола (типовые + кастомные)
- REST API с документацией (OpenAPI)
- Исторический индекс (часовые снепшоты в PostgreSQL)
- UI-компоненты для Next.js (Recharts, TanStack Query)
- Юнит-тесты и интеграционные тесты на Tenderly fork
- Инструкция по развёртыванию и эксплуатации
- Поддержка в течение 30 дней после запуска
Технический стек
- Backend: Node.js + TypeScript, Viem (on-chain), PostgreSQL, Redis, Bullmq
- Frontend: Next.js, TanStack Query, Recharts / Tremor
- Инфраструктура: Docker Compose, GitHub Actions, Tenderly для forking
Сроки: MVP с 3-5 протоколами, текущие rates — 3-5 дней. Полноценная система с историей, фильтрами и визуализацией — 2-3 недели. Стоимость рассчитывается индивидуально. Свяжитесь с нами для оценки вашего проекта. Закажите демо-версию, чтобы увидеть нормализованные метрики ваших протоколов.
Наш опыт — 5+ лет в Web3, 50+ интеграций DeFi-протоколов. Гарантируем корректность расчётов и соответствие on-chain данным.







