Contract first, never the ticker
For anything held in a wallet, the contract address is the identity we price against. Two tokens with the same symbol on the same chain are two different assets, and they are valued separately.
This is what stops the most common way a portfolio number goes wrong on-chain: a scam airdrop that borrows a well-known ticker, lands in your wallet unasked, and inflates your total by an amount you never had.
Where a price comes from
Several sources, tried in order of how much we trust them for that asset.
- Exchange market data, for assets that trade on a venue we already read.
- A coin-level price where the asset is unambiguously identified.
- A contract-level price, which is the path for on-chain tokens.
- DefiLlama, as a fallback when the primary source has no answer or is rate limited.
- Dollar stablecoins are pinned at one dollar rather than looked up.
Historical values use a stored daily price per asset and day, so a chart of what your portfolio was worth last March is built from prices from last March, not from today's price applied backwards.
When we refuse to put a number on it
Some tokens have no honest price: no liquidity, no market, no reliable source. We leave those unpriced and exclude them from your totals rather than inventing a value that would make the total wrong.
That decision doubles as a signal. A token that cannot be priced anywhere is very often a scam airdrop, which is one of the inputs to how we classify junk.
An unpriced token is still shown to you. It is excluded from the total, not hidden from the ledger, because the fact that it arrived is itself part of your history.