DeFi positions in one view: LPs, loans, staking and rewards across every wallet
Why DeFi positions vanish from wallet balances, what a position decoder reads, and how to see LPs, loans, staking and rewards across chains in one place.
Open a wallet app after a month of DeFi and the balance is wrong. The ETH you put into a pool is gone, replaced by a token you do not recognise; the USDC you lent shows as zero; the stake shows as nothing at all. None of it is lost. It moved into contracts, and a wallet that lists tokens by balance cannot see inside a contract. A DeFi position is exactly that: value the chain attributes to your address through a protocol, not as a plain token in your wallet. This guide is about reading those positions across protocols, chains and wallets, in one view.
Why balances lie
A liquidity position is a claim on a share of a pool, sometimes represented by an LP token, sometimes by an NFT (concentrated liquidity on Uniswap v3 and its forks), sometimes by nothing visible at all. A loan is two legs: what you supplied, which earns, and what you borrowed, which costs, and a wallet shows neither the debt nor the collateral as a number you can read. Staking locks the asset and often mints a receipt token with its own price. Rewards accrue inside the protocol until you claim them. Each of these has a value, and the wallet’s token list is the wrong place to look for it.
What a position decoder reads
A decoder knows the contracts. For each protocol it knows which contract holds deposits, which token is a receipt, how to price an LP share from the pool’s reserves and how to net a loan into one position. Aggregators do this work once for hundreds of protocols and expose the result: this address holds a Uniswap v3 position in ETH and USDC, currently in range, worth this much; this address supplied USDC on Aave and borrowed ETH against it; this address holds stETH from Lido and a validator stake on Solana. Decoders are the reason DeBank, Zerion and, until it went offline in August, Zapper existed. TrueHold reads the same class of data through aggregators and chain-specific readers, and organises it by kind of position instead of by app.
The five kinds of position
Liquidity
What it is
A share of a pool: two or more tokens plus the fees they earn. Concentrated positions also have a price range.
What to watch
Range status, exposure per leg, impermanent loss against simply holding the two tokens
Lending
What it is
Supplied assets that earn and borrowed assets that cost, on one market.
What to watch
Loan health: collateral value against debt, the liquidation price
Staking
What it is
Native or liquid staking: the locked asset, a receipt token, rewards.
What to watch
Receipt token price against the underlying, unbonding time
Vesting and locks
What it is
Tokens promised to the address on a schedule.
What to watch
Unlock dates, and whether the value is counted before it is claimable
Rewards
What it is
Accrued but unclaimed tokens from any of the above.
What to watch
Claim value against the gas it costs to claim
| Position | What it is | What to watch |
|---|---|---|
| Liquidity | A share of a pool: two or more tokens plus the fees they earn. Concentrated positions also have a price range. | Range status, exposure per leg, impermanent loss against simply holding the two tokens |
| Lending | Supplied assets that earn and borrowed assets that cost, on one market. | Loan health: collateral value against debt, the liquidation price |
| Staking | Native or liquid staking: the locked asset, a receipt token, rewards. | Receipt token price against the underlying, unbonding time |
| Vesting and locks | Tokens promised to the address on a schedule. | Unlock dates, and whether the value is counted before it is claimable |
| Rewards | Accrued but unclaimed tokens from any of the above. | Claim value against the gas it costs to claim |
One view across wallets and chains
In TrueHold, every wallet you add by address is decoded and its positions are grouped by kind across all of your wallets: one liquidity section, one lending section, one staking section, plus deposits and everything the sources label in their own way. On Ethereum and the EVM chains the positions come from an aggregator that covers the major protocols; on Solana from a Solana-specific reader that returns lending markets, pools, native and liquid staking and vesting; on TON from the chain’s own registry of lending and liquid-staking tokens. A liquidity position shows its legs, its exposure and whether it is in range; a lending position nets supplied against borrowed; a staking position shows the amount staked and what kind of stake it is. The same total holds exchange-side earn balances where the exchange reports them, and Hyperliquid vaults and staking, so a total is a total.
What no decoder sees
Protocols too new or too small for the aggregator’s registry appear as unknown tokens or not at all. Positions on chains outside the reader’s list do not appear: TrueHold does not read Cosmos, Sui or Cardano. Fees and live leg balances on some pools come from the aggregator’s last refresh rather than from the chain at that second. And a position’s health is a snapshot, not an alert. When a number looks wrong, open the protocol’s own app; if the two disagree, the protocol is right and the decoder is behind.
A weekly routine
- Check range status on concentrated liquidity. Out of range means one leg and no fees.
- Check loan health after a large move in either asset, before the protocol checks it for you.
- Claim rewards when they exceed gas by a clear margin, not on a schedule.
- Reconcile receipt tokens against what they represent; a depeg shows here first.
- Write down where each position lives. When Zapper went offline, the map went with it for anyone who had not; see After Zapper.
Frequently asked questions
Why does my wallet show zero for tokens I lent?
Because the tokens are in the lending contract, not in your wallet. The wallet shows a receipt token or nothing; a position decoder shows the supplied amount and the debt against it.
Can a tracker show impermanent loss?
It can show the current value of a position against holding the two tokens, if it knows the entry. TrueHold’s impermanent loss calculator does the math for any price move; the position view shows the legs and exposure today.
Does TrueHold need my wallet connected to read DeFi positions?
No. Paste the address. Decoding uses public chain data and protocol registries, and nothing is signed.
Which chains are decoded?
Ethereum and the EVM chains on the coverage pages, Solana and TON. Cosmos, Sui and Cardano are not read.
Terms in this article
See your whole portfolio in one view
Read-only by design. Paste a wallet, link an exchange, and watch every chain. Free to start.
Open TrueHold →