Разработка калькулятора доходности DeFi-стратегий

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка калькулятора доходности DeFi-стратегий
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1258
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1170
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    873
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1092
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    563
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    830

Разработка калькулятора доходности DeFi-стратегий

Пользователь видит «APY 45%» на платформе и кладёт деньги. Через три месяца снимает — получил 8% в долларах. Остальное съели: комиссии при входе и выходе, gas на 12 транзакций, impermanent loss в пуле, налог на reward токены, которые упали на 70% к моменту harvesting. Калькулятор доходности — это инструмент, который показывает реальные числа до принятия решения.

Что нужно считать правильно

APY vs. APR: одна из самых частых путаниц в DeFi

APR (Annual Percentage Rate) — простой процент без реинвестирования. APY (Annual Percentage Yield) — с учётом compound interest. Разница существенная:

  • APR 50% → APY ≈ 64.8% при ежедневном compounding
  • APR 50% → APY ≈ 100% при компаундинге каждый блок (~12 сек на Ethereum)

Формула APY через APR: APY = (1 + APR/n)^n - 1, где n — количество периодов начисления в год.

Проблема: в DeFi APY часто отображается с допущением о постоянной ставке и максимальном compounding. В реальности ставка меняется каждый блок, а gas на каждый compound операцию уменьшает реальную доходность.

Breakeven по compound частоте: При газе $5 за claim и $1000 позиции с APR 40% — оптимальная частота compound раз в ~7 дней. Чаще — gas съедает больше, чем зарабатывает compound. Калькулятор должен считать оптимальный интервал.

Impermanent loss для LP позиций

Для liquidity provider позиций доходность нельзя считать без impermanent loss (IL). Формула IL для Uniswap v2:

IL = 2 * sqrt(priceRatio) / (1 + priceRatio) - 1

Если ETH/USDC пул: ETH входил по $2000, сейчас $3000. priceRatio = 1.5. IL = 2×√1.5/(1+1.5) - 1 ≈ -2.02%.

Для Uniswap v3 с concentrated liquidity IL считается иначе — зависит от диапазона позиции. Если цена выходит из диапазона, позиция становится 100% в одном активе (полный IL, комиссии не начисляются). Математика сложнее, но реализуема: нужно знать tickLower, tickUpper, текущий tick.

Реальные компоненты доходности для полного расчёта

interface YieldComponents {
    baseApr: number;          // Lending APR или trading fees
    rewardApr: number;        // Emission rewards в токенах протокола
    compoundBonus: number;    // Прирост от реинвестирования
    impermanentLoss: number;  // Только для LP (отрицательное)
    tradingFees: number;      // Накопленные комиссии за период
    gasCosts: number;         // Все on-chain операции в USD
    tokenPriceImpact: number; // Изменение цены reward токена
    realYield: number;        // Итого в USD
}

Как строим калькулятор

Источники данных

  • Aave v3: getReserveData() возвращает currentLiquidityRate (RAY = 1e27). Конвертация в APY: (1 + rate/SECONDS_PER_YEAR)^SECONDS_PER_YEAR - 1
  • Compound v3: getUtilization()getSupplyRate(utilization) → линейный расчёт APR
  • Uniswap v3: fees APR считается через subgraph или positions() NFT данные — volume за 24h × fee tier / TVL × 365
  • Curve: get_virtual_price() для base APY + gauge reward APR через CRV emission schedule
  • Balancer: vault API или subgraph для swapFee и volume

The Graph subgraph — предпочтительный источник для исторических данных. Прямые RPC вызовы — для real-time текущих ставок.

Симуляция на временном горизонте

Калькулятор должен не только считать текущий APY, но и проецировать на пользовательский горизонт (30/90/365 дней) с несколькими сценариями:

Сценарий Допущения Назначение
Оптимистичный APR не падает, цена rewards +50% Максимальный потенциал
Базовый APR снижается на 20% за квартал (рост TVL) Реалистичная оценка
Консервативный APR -50%, rewards -70% Защита от ошибочных ожиданий
Bear market APR минимальный, все активы -50% Стресс-тест

Gas cost calculation

Каждая операция имеет measurable gas cost:

const GAS_ESTIMATES = {
    aaveDeposit: 180_000,
    aaveWithdraw: 210_000,
    uniswapV3Mint: 450_000,
    uniswapV3Collect: 280_000,
    curveDeposit: 320_000,
    rewardClaim: 150_000,
} as const;

function calcGasCost(operation: keyof typeof GAS_ESTIMATES, gasPriceGwei: number): number {
    const gasUnits = GAS_ESTIMATES[operation];
    const ethPrice = getCurrentEthPrice();
    return (gasUnits * gasPriceGwei * 1e-9) * ethPrice; // USD
}

Исторические данные по gas price из Etherscan API или The Graph — для расчёта средних затрат при заданной стратегии rebalancing/harvesting.

Функциональность и UX

Минимальный набор:

  • Ввод суммы и периода
  • Выбор протокола/стратегии (поиск по названию)
  • Real-time fetch текущих APR из протоколов
  • Три сценария (оптимистичный/базовый/консервативный)
  • Разбивка: base yield, rewards, impermanent loss, gas costs, net yield
  • Сравнение нескольких стратегий рядом

Дополнительно — ROI breakeven calculator: при какой минимальной сумме и продолжительности стратегия окупает gas costs. Это особенно важно для мелких инвесторов на Ethereum mainnet.

Стек

Frontend: React + TypeScript, Recharts для графиков доходности, wagmi для подключения кошелька. Data: The Graph (APR histories), Alchemy/Infura (real-time chain data), CoinGecko API (цены токенов). Logic: Typescript utility library с чистыми функциями для всех финансовых расчётов — легко тестировать и переиспользовать.

Ориентиры по срокам

Базовый калькулятор для 2-3 протоколов — 3-5 дней. Мульти-протокольный с историческими данными, IL для LP и газ-оптимизатором — 1-2 недели. Стоимость рассчитывается индивидуально.