Skip to main content

Borrow & Supply APY Calculation

A reserve is a single asset lending pool within a market. All deposits of an asset enter the same reserve, and all borrowing draws from that pool. Variable rates are driven by utilization, the fraction of deposits currently borrowed:
Utilization = Borrowed / Total Deposited
As utilization increases, borrow rates rise. As utilization decreases, borrow rates fall. Supply APY is derived from borrower interest and depends on both the borrow rate and utilization:
Supply APY ≈ Borrow Rate × Utilization × (1 − Protocol Spread)
Not all deposited capital is borrowed at any given time, so supply APY is always lower than the borrow rate. Higher utilization means more of the pool is earning interest, which increases lender yield. Reserves are isolated pools. The same asset in different markets has different borrowers, collateral, and risk profiles, and therefore different rates.
1

Fetch All Markets

Retrieve the list of all lending markets on Kamino.
const API_BASE_URL = 'https://api.kamino.finance';
const response = await fetch(`${API_BASE_URL}/v2/kamino-market`);
const markets = await response.json();
The /v2/kamino-market endpoint returns all lending markets including Main Market, JLP Market, Altcoins Market, and Prime Market.
2

Get Reserve APYs for Each Market

For each market, fetch the APY metrics for all reserves (USDC, SOL, wETH, etc.).
const allMarketReserves = await Promise.all(
  markets.map(async (market) => {
    const response = await fetch(
      `${API_BASE_URL}/kamino-market/${market.lendingMarket}/reserves/metrics`
    );
    const reserves = await response.json();
    return { market, reserves };
  })
);

allMarketReserves.forEach(({ market, reserves }) => {
  console.log(`\n${market.name}:`);

  reserves.forEach((reserve) => {
    console.log(`\n${reserve.liquidityToken}:`);
    console.log(`  Supply APY: ${(reserve.supplyApy * 100).toFixed(2)}%`);
    console.log(`  Borrow APY: ${(reserve.borrowApy * 100).toFixed(2)}%`);
    console.log(`  Total Deposits: $${reserve.totalSupplyUsd}`);
    console.log(`  Total Borrowed: $${reserve.totalBorrowUsd}`);
  });
});
The /kamino-market/{pubkey}/reserves/metrics endpoint returns comprehensive metrics for each reserve including APYs, total deposits, and borrows.

Borrow Concepts

Understand reserves, markets, and rate models

Market Data

Query market metrics and reserves

Deposit via API

Supply assets to earn APY

Borrow via API

Borrow assets against collateral