Connect With Us

You are at:

Crypto Portfolio Trackers: What They Know, What They Guess, and What They Miss

Financial records, smartphone and magnifying glass used to examine what portfolio trackers know and miss

A crypto portfolio tracker can collect balances, transactions and market prices into one view. That sounds like bookkeeping. In practice, it is a reconstruction problem: the software sees only the accounts, addresses and files you give it, then tries to turn fragmented records into one continuous history.

My judgment: a tracker is valuable as a reconciliation engine, not as an oracle. The more complicated the portfolio, the less useful a clean dashboard becomes unless the owner can trace every important number back to a transaction.

Three layers sit underneath one portfolio number

The total at the top of a dashboard combines three different kinds of evidence.

  1. Ownership data: balances reported by an exchange or visible at a public blockchain address.
  2. Transaction history: purchases, disposals, transfers, fees, staking rewards, bridge movements and contract interactions.
  3. Valuation data: the price assigned to each asset at a chosen time.

A tracker can be right about one layer and wrong about another. It may show the correct quantity of a token but use a poor price for an illiquid market. It may show today’s balance correctly while missing the 2021 purchase that created its cost basis. It may import both sides of a transfer and classify them as unrelated send and receive events.

This is why “my balance looks right” is not a sufficient audit.

What a tracker can observe directly

On a transparent chain, a public address gives the software a strong record of on-chain activity. Ethereum describes its ledger plainly: addresses, balances, transactions, contract calls and events are visible to anyone using a block explorer. Bitcoin-style wallets are more awkward because one wallet can derive many addresses. An extended public key can let software derive and watch those addresses without revealing the private keys.

Exchange activity is different. It lives in the exchange’s internal ledger, so a tracker needs an authorized API connection or exported files. CoinTracker states that its exchange connections request read or view access, not trading or transfer access. Koinly supports API and file imports and treats exchanges, services and wallets as separate record containers.

These methods can retrieve evidence. They do not guarantee completeness. An exchange API may omit an old product, a discontinued staking service or activity that occurred before an account migration. A public address cannot reveal an off-chain purchase price. A CSV can be complete for the export window and still exclude earlier years.

What the software has to infer

The most consequential inference is transfer matching. If 1 ETH leaves an exchange and a slightly smaller amount reaches a self-custody address after a fee, the tracker should recognize movement between two accounts owned by the same person. If it instead records a disposal and a new acquisition, performance and tax calculations can diverge sharply.

Koinly says it attempts to match transfers after all wallets are added. That last condition matters. Software cannot match the receiving side of a transfer if the receiving wallet is absent.

Pricing is another inference. CoinTracker says it sources asset prices from CoinMarketCap and DefiLlama and uses an opening price at 12 a.m. UTC. That is a documented methodology, not the only possible fair value. For a liquid asset, differences may be small. For an NFT, bridged token or thin pool, one vendor price can be far from an executable market price.

What no tracker can recover from nothing

If an asset appears in 2026 but the purchase occurred on an exchange account that was closed in 2021, the tracker has no hidden way to recreate the missing cost. Koinly documents that missing purchase history can lead it to assume a zero cost basis. CoinTracker similarly warns that missing wallets or transactions can create insufficient-quantity errors and zero-cost assumptions.

A zero is therefore not always a fact. It can be a conservative placeholder for missing evidence.

The same limit applies to intent. A blockchain records that tokens moved into a contract. It may not tell generic software whether the action was a deposit, a loan, collateral, a wrapped asset conversion or an unrecoverable send without protocol-specific interpretation.

The right way to judge a tracker

Do not begin with the prettiest chart. Test whether the system makes uncertainty visible.

  • Can you inspect the source transaction behind a calculated gain?
  • Does the tool flag missing history, negative balances and unmatched transfers?
  • Can you correct a classification without destroying the original record?
  • Does it identify the price source and timestamp?
  • Can you export the normalized ledger and keep your own copy?
  • Can you separate a display estimate from a tax calculation?

A good tracker shortens the distance between an error and its cause. A bad one produces a confident total while hiding the reconstruction underneath it.

A practical trust ladder

Trust current on-chain quantities first when they can be checked independently in a block explorer. Reconcile exchange quantities against the exchange itself. Then inspect transfers between owned accounts. Only after the quantities and chronology make sense should you evaluate cost basis, performance and tax output.

For the import decision, read wallet address vs API vs CSV. Before connecting an exchange, use the read-only API key security checklist. If the dashboard already disagrees with reality, diagnose why a portfolio balance can be wrong rather than editing the final total.

My final test is simple: if the number cannot be traced, challenged and corrected, it is not yet decision-grade. It is a convenient estimate.

For a product decision, compare the best crypto portfolio trackers and the tax-focused software shortlist.

Primary sources

Leave a Comment

Your email address will not be published. Required fields are marked *