> ## Documentation Index
> Fetch the complete documentation index at: https://docs.useretina.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Position model

> The normalized fields Retina uses for every position (source, wallet, chain, protocol, type, asset class, maturity, APY) and how APY is derived.

Every position from every source is normalized into 1 internal shape. The [Positions Explorer](/pages/positions) shows this shape directly.

## Fields

| Field         | Description                                                                                                                                                    |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `source`      | Data provider that surfaced the position (zerion, helius, jupiter, vybe, moralis, ledger, hyperliquid, polymarket, pendle, defillama, merkl, dropsbot, manual) |
| `snapshot`    | Which snapshot the row belongs to                                                                                                                              |
| `date`        | When the snapshot was created                                                                                                                                  |
| `wallet`      | Wallet label and address                                                                                                                                       |
| `chain`       | Chain the position lives on                                                                                                                                    |
| `protocol`    | Protocol, for example Pendle V2, Hyperliquid, Upshift, Yearn V3                                                                                                |
| `type`        | Position type (see [Position types](/concepts/position-types))                                                                                                 |
| `token`       | Token symbol                                                                                                                                                   |
| `value`       | USD value at snapshot time                                                                                                                                     |
| `asset_class` | Economic exposure class (see [Asset classes](/concepts/asset-classes))                                                                                         |
| `maturity`    | Maturity date, if applicable (see [Maturity](/concepts/maturity))                                                                                              |
| `apy`         | APY, 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.
