Skip to main content
Every position from every source is normalized into 1 internal shape. The Positions Explorer shows this shape directly.

Fields

FieldDescription
sourceData provider that surfaced the position (zerion, helius, jupiter, vybe, moralis, ledger, hyperliquid, polymarket, pendle, defillama, merkl, dropsbot, manual)
snapshotWhich snapshot the row belongs to
dateWhen the snapshot was created
walletWallet label and address
chainChain the position lives on
protocolProtocol, for example Pendle V2, Hyperliquid, Upshift, Yearn V3
typePosition type (see Position types)
tokenToken symbol
valueUSD value at snapshot time
asset_classEconomic exposure class (see Asset classes)
maturityMaturity date, if applicable (see Maturity)
apyAPY, if applicable

How APY is derived

Retina reads APY in this order:
  1. Protocol-reported APY, when the provider returns one. This covers Pendle, Hyperliquid staking, and many EVM vaults.
  2. DeFiLlama fallback for pools without a direct report.
  3. Live funding rate for perp positions.
If none of those returns a number, the APY field is empty and you can fill it in with a Manual APY override on the Dashboard’s Yield Table.

Estimated daily income

The Dashboard’s Estimated / Day column applies the APY to the current position value and divides to a per-day number. This assumes APY is constant over the day. Real yields fluctuate, so treat the daily number as an estimate.