Why Your Crypto P&L Is Different in Every App — The Three Places the Math Breaks
Columns · · Satoshi Note Editorial
Read in: 한국어
The "total return" in your exchange app and the return in your portfolio tracker do not match. Same account, same day. People ask us which one is right, and our honest answer is "probably neither." A return looks like a single number, but the calculation behind it can split at three places. We hit all three while connecting 18 exchanges, so this column also says plainly which ones we have fixed and which ones we have not.
At a glance
- When the same account shows different returns in different apps, the calculation split at one of three places: transfers between exchanges counted as buys and sells, past P&L converted at today's exchange rate, or income that never appears as a trade (airdrops, staking) left out.
- Satoshi Note (TokenPost's free crypto portfolio tracker, read-only API sync with 18 exchanges) fixed the first by recording balance differences as exchange transfers; the second — foreign-language screens converting past records at the current rate — is a limit that still stands.
- A column on what we saw connecting 18 exchanges, what we fixed and what we have not. Check whether an app states which rate and which basis it uses.
First, transfers get counted as profit or loss
Move bitcoin from exchange A to exchange B. A's balance goes down, B's goes up. Look at A's app alone and your assets "shrank." Look at B's alone and a coin with no cost basis "appeared." Seen separately, one side looks like a loss and the other like free profit.
An app that puts several exchanges on one screen has one job here: pair the two legs as a transfer and cancel them out. That is easy to say. Deposit and withdrawal histories come in a different shape from every exchange, and some exchanges do not expose them at all. So many apps simply drop transfers, or record only the receiving side as a "deposit" with a cost of zero. The moment that happens, the return is inflated.
Our position: a transfer is not P&L, it is a change of location, and the cost basis has to move with the coin. Satoshi Note currently reconciles balances against the exchange, and pairing transfers so the cost basis follows them is the first thing on our list for the rest of this year. In other words, not finished yet.
Second, one exchange rate gets applied to everything
Many people trade in both a local-currency market and a USDT market. To show a total you need an exchange rate, and the number changes depending on which day's rate you use.
- Current value should use today's rate. That part is fine.
- Profit should use the rate on the day you bought and the rate on the day you sold.
Most apps use today's rate for both, because it is simple and fast. The result is that currency moves leak into your coin P&L. In a year when the dollar rose, coins bought in the USDT market look more profitable than they were; in a year when it fell, less.
Satoshi Note still has this limitation on its non-Korean screens: past records are shown at today's rate. We think that is something to write down, not hide. If an app does not say anywhere which rate it used, assume the return you are looking at is two numbers blended together.
Third, income that is not a trade gets left out
Staking rewards, airdrops, promotional coins, exchange points. None of these appear in your trade history, because they are not trades. But they do appear in your balance.
An app that only reads trades therefore sees "a balance that came from nowhere." Apps handle this differently, and the two common approaches are both wrong.
- Record it with a cost of zero, which inflates the return.
- Drop it from the balance, which makes the app's total disagree with the exchange.
Our choice: when an exchange mixes non-coin items like points into the balance, we exclude them from the total; when coins arrive as rewards, we record them as "received," separate from trades. Not every exchange exposes reward history through its API, though, so this works on some exchanges and not on others. That is why the connection screen lists, exchange by exchange, exactly what we can and cannot fetch.
So stop trusting a single return figure
If any one of the three places is off, a number like "+23%" wobbles. That is why we suggest watching three numbers separately instead of one return.
| Number | Meaning | Where it wobbles |
|---|---|---|
| Money in | Cash that went from your bank to exchanges | Transfer handling |
| Current value | Holdings × current price, today's rate | Exchange rate |
| Realized P&L | Profit or loss locked in on coins you sold | Non-trade income |
With those three in front of you, the return is a subtraction you can do in your head, and when something looks wrong you can tell which of the three is off. A single blended return can be wrong without ever telling you where.
These are also the three questions to ask any portfolio app, including the one you use now. How does it handle transfers? Which day's exchange rate does it use? What does it do with coins that have no trade behind them? If the answers are written down somewhere, trust the number. If not, treat it as a rough guide. Satoshi Note itself needs a few more weeks before it can fully answer the first question.
FAQ
My exchange app and my tracker show different returns. Which is right?
Both can be right by their own rules. The numbers diverge at three points: how transfers were counted, which day's exchange rate was used, and whether non-trade income was included. The app that prints its basis on screen is the easier one to reconcile.
How does Satoshi Note handle coins moved between exchanges?
When an API shows a balance rising or falling with no matching trade, it is recorded as an exchange transfer (deposit or withdrawal), not a buy or sell. Coins moved from Binance to Upbit are not booked as bought on Upbit.
Which exchange rate does Satoshi Note use?
The Korean screen is in KRW. English, Japanese and Chinese screens convert the stored KRW amounts to USD at the session rate, which means past records are also shown at the current rate — a limit stated in the column.
This is a column: the Satoshi Note team's view, not a recommendation to buy or sell any coin. What Satoshi Note can and cannot fetch from each exchange is listed under Settings › Connect exchanges › "What gets imported."