§ PORTFOLIO
Know what you hold — and what you actually paid for it.
Most portfolio trackers are good at one half of the problem. They will tell you how much of a coin you hold, because an exchange or a blockchain will say so. What you paid is a different question entirely, and the usual answer is to guess — silently, and in a way that looks like a real number. Postmortem's portfolio keeps the two apart: synced quantity is treated as truth, cost basis comes from a transaction ledger you control, and anything the ledger doesn't explain is reported as unknown rather than invented.
One view across exchanges, wallets and whatever you type in
Three kinds of source, side by side. Spot balances read from Binance, Bybit, OKX, Bitget, BingX and MEXC using the same read-only API keys the journal already uses. Watched addresses on Ethereum, BNB Chain, Base, Arbitrum, Polygon, Solana, Bitcoin, Tron and SUI. And manual containers for the things nothing can see — a hardware wallet, a coin you lent a friend, an OTC buy.
Watched addresses are public, read-only data. There is no key, no seed and no signing anywhere in this path: the app can see an address, and it cannot move anything out of it.
Cost basis that refuses to guess
Every buy, sell, transfer, airdrop, reward and fee goes in a ledger, and a weighted-average engine turns it into an average cost per asset — portfolio-wide, not per venue, so moving BTC from an exchange to a hardware wallet does not change what your BTC cost you.
The part most trackers get wrong is the gap. If a chain says you hold 0.8 BTC and your ledger only explains 0.5, you will see value on all 0.8, unrealised P&L on 0.5, and the row will say "cost basis unknown for 0.3 BTC" with a one-click way to add the missing transaction. It will never spread the known average across the part it does not know about, and it will never show a portfolio-level P&L percentage while a material chunk is uncovered.
Import history instead of typing it: upload any CSV, map the columns once, and rows that fail validation are rejected individually with a line number rather than sinking the whole import. A bad import can be rolled back as a unit.
A ticker is not an identity
Anyone can mint a token and call it UNI. A tracker that prices holdings by ticker will happily value that at Uniswap’s price — a number that looks authoritative and is entirely fictional, and one that scam airdrops rely on to make a wallet look richer than it is.
Postmortem prices a token that carries a contract by that contract, filtered to the right chain, and only from the deepest liquidity pool above a floor — a pool with a few hundred dollars in it quotes a price that moves on any trade. A holding it cannot identify is left unpriced and flagged, rather than borrowing a real coin’s price. The total then says "excludes N unpriced assets" instead of quietly under- or over-counting.
Dust is grouped rather than deleted: holdings under a dollar collapse into one row so six real positions are not buried under airdrop residue, but they still count toward every total. An unpriced holding is never treated as dust — "we don’t know what it’s worth" must not be filed under "negligible".
Deliberately separate from your futures journal
A workspace switcher flips the entire app between TRADING and PORTFOLIO, and that is the only place the two products touch. No holding appears on the trading dashboard, in the analytics, in the capital ledger or in the position-sizing math.
That separation is the point rather than an oversight. If your spot bags counted as trading capital, every risk-per-trade number the calculator produced would be wrong in the direction that gets accounts blown up.
FAQ
Is this a tax tool?
No, and it does not pretend to be. It uses weighted-average cost, which many jurisdictions do not accept, and it does not track tax lots or disposal dates. CSV export is "here is my data", not a filing-ready gain/loss report. Take it to an accountant, not to a tax office.
Which chains can I watch?
Ethereum, BNB Chain, Base, Arbitrum, Polygon, Solana, Bitcoin, Tron and SUI. Addresses are watch-only public data — no private key or seed phrase is ever requested, stored or needed.
Does it know what I paid if I only connect an exchange?
No, and it will say so rather than invent one. An exchange API reports how much you hold, never what you paid for it. Value shows on everything you hold; profit and loss only appears on the quantity your ledger explains, and you fill that in by adding transactions or importing a CSV.
Why is one of my tokens showing no price?
Because we could not establish what it is. A token is priced by its contract, so an unrecognised contract with no deep liquidity pool is left unpriced and flagged rather than valued at whatever coin shares its ticker. That is usually the correct answer for an airdropped token you did not buy.
Does my portfolio affect my position sizing?
Never. The two workspaces share no numbers by design. Position sizing uses your trading capital only — holdings inflating that figure is exactly how a 1% risk becomes a 4% risk without anyone noticing.
Which plan includes portfolio tracking?
Portfolio is a Pro feature. Free and Basic accounts can open every screen running on a sample portfolio, so you can see exactly what you would be buying before you pay for it.
Related reading
Ready to run the autopsy on your trading?
Free to start — no card, your last 7 days on the house.
Start free