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 is0when 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, andrewards. Each is0when 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 is0otherwise.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_feesis the collected part.unclaimed_feesis the uncollected part.total_rewards,claimed_rewards,unclaimed_rewards— the reward-token equivalents. Uniswap positions have no reward token, so those totals are0. 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
*_percentagefields express that difference relative to the held value, and are0when 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, andlp_divergence_pnl_usd_valuemeasure the position against that benchmark.
Lending risk
at_risk— true when the health factor is a finite number below 1.5.MAXand∞are not at risk. A summary’stotal_at_riskcounts chains (Aave, Morpho) or obligations (Kamino) in that state.- Health factor — each protocol’s own liquidation-risk measure:
MAXwhen 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 defaultmarket_idtomain. Summary, the position list, the bundle, and batch return every market on the chain when you omit it. On Ethereum,lidoandhorizonare 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.