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

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка калькулятора дохідності DeFi-стратегій
Середній
~3-5 днів
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1288
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    860

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

Користувач бачить «APY 45%» на платформі та кладе гроші. Через три місяці знімає — отримав 8% у доларах. Остаток з'їли: комісії при вході та виході, газ на 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. У реальності ставка змінюється кожний блок, а газ на кожен compound операцію зменшує реальну дохідність.

Breakeven по compound частоті: При газі $5 за claim та $1000 позиції з APR 40% — оптимальна частота compound раз в ~7 днів. Частіше — газ з'їдає більше, ніж заробляє 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% Stress-тест

Gas cost calculation

Кожна операція має вимірюваний 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 калькулятор: при якій мінімальній сумі та тривалості стратегія окупає 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 тижні. Вартість розраховується індивідуально.