Skip to main content
Figures below are what the API returns. USD amounts and percents are decimal strings. 0 and "0" are a confirmed zero. null means the value is missing: a logo, a 24-hour price change, or a pagination URL.

How the data is produced

Position state is read from protocol contracts and indexed in-house by protocol-specific indexers — 19 of them across 10+ chains. Every figure on this page is calculated from that indexed data and reconciled against on-chain state, with measured position-level accuracy of 99.79%.

PnL

Uniswap V3 and Aerodrome V3 use the same definitions.
  • pnl_usd_value — total profit or loss on the position: everything the position has returned (current value, withdrawals, claimed fees and claimed rewards) net of the capital deposited.
  • pnl_percentage — that PnL relative to net invested capital, times 100. It is 0 when net invested capital is not positive.
  • realized_usd_value — value already taken out: withdrawals plus claimed fees and claimed rewards.
  • unrealized_usd_value — the current position value, which includes unclaimed fees and rewards.
  • position_usd_value — token principal plus unclaimed fees and unclaimed rewards.

APR

APR figures are simple (not compounded), annualized from the position’s own history and capital.
  • earned_apr_percentage — three percent strings: yield (fees plus rewards), fees, and rewards. Each is 0 when capital or total yield is not positive.
  • projected_yield_apr — the yearly in-range APR. It applies only while the position is open and in range, and is 0 otherwise.
  • estimated_total_yield — the observed average fee and reward pace, scaled to a day, week, month, and year. It is not the in-range projection.

Fees, rewards, and impermanent loss

  • total_fees — collected, compounded, and still-uncollected fees. claimed_fees is the collected part. unclaimed_fees is the uncollected part.
  • total_rewards, claimed_rewards, unclaimed_rewards — the reward-token equivalents. Uniswap positions have no reward token, so those totals are 0. Aerodrome rewards are AERO.
  • On .../events, each row carries the token price at that transaction, and USD value is amount times that price. There is no separate historical price series.
  • pure_impermanent_loss — the position compared with holding the net deposited tokens at the current price, token principal only.
  • net_impermanent_loss — the same comparison using the current position value, so unclaimed fees and rewards are included.
  • The matching *_percentage fields express that difference relative to the held value, and are 0 when either value is not positive.
  • hodl_gross_benchmark_usd_value — every deposited token marked at the current price, without subtracting withdrawals. market_pnl_usd_value, alpha_vs_hodl_gross_usd_value, and lp_divergence_pnl_usd_value measure the position against that benchmark.

Lending risk

  • at_risk — true when the health factor is a finite number below 1.5. MAX and ∞ are not at risk. A summary’s total_at_risk counts chains (Aave, Morpho) or obligations (Kamino) in that state.
  • Health factor — each protocol’s own liquidation-risk measure: MAX when there is no debt (Aave V3, Morpho), ∞ when LTV is 0 (Kamino).
  • target_health_factor — the level used for safe-borrow and safe-withdraw figures. The default is 1.5.
  • Morpho risk and yield are per market, so those routes require market_id. Aave risk, yield, events, and snapshots default market_id to main. Summary, the position list, the bundle, and batch return every market on the chain when you omit it. On Ethereum, lido and horizon are separate markets.
  • Supply and borrow APY fields are the rates on the indexed position.

Freshness

Orca has no events, snapshots, PnL, or yield route. See Protocols and chains for which chain each protocol covers.