- What Should a Crypto Portfolio Profit and Loss Report Show?
- Start With a Clean Multi-Asset Transaction Ledger
- Choose One Scope, Base Currency and Valuation Time
- Calculate Lifetime Economic Profit or Loss
- Calculate Profit or Loss for a Reporting Period
- Separate Unrealized and Realized P&L
- Worked BTC, ETH and SOL Portfolio Example
- How to Treat Deposits, Withdrawals, Transfers and Rewards
- Include Every Fee Without Double Counting
- Choose the Right Return Percentage
- Measure Asset Contribution, Not Just Asset Return
- Reconcile the Report Before You Trust It
- Calculate a Portfolio in Forvest
- Final Checklist
Crypto portfolio profit and loss is the change in the economic value of a multi-asset portfolio after separating market performance from deposits, withdrawals, transfers and fees. The reliable way to calculate it is to build one transaction ledger, choose one base currency and valuation time, and reconcile realized profit, unrealized profit and cash flows without counting the same money twice.
Short answer: for a portfolio that started from zero, lifetime profit or loss equals ending portfolio value plus external withdrawals minus external contributions. For a reporting period, use ending value minus beginning value minus net external cash flow. Then calculate realized and unrealized results asset by asset so the total can be audited.
This guide explains portfolio reporting, not personalized investment, accounting or tax advice. Cost-basis rules and the treatment of rewards, fees and transfers depend on jurisdiction and circumstances. Use a qualified professional for filing or legal decisions.
What Should a Crypto Portfolio Profit and Loss Report Show?
A useful report answers more than “Is the balance higher?” It shows where the result came from and whether the number can be reproduced. At minimum, separate the following outputs:
| Output | What it measures | Why it matters |
|---|---|---|
| Current portfolio value | Units held multiplied by one consistent market price for each asset | Shows the value of open positions at the valuation time |
| Realized profit or loss | Net proceeds from disposed units minus their allocated cost basis | Explains results already locked in by sales, swaps or spending |
| Unrealized profit or loss | Current value of unsold units minus their remaining cost basis | Shows the gain or loss still exposed to market prices |
| External cash flow | Money or assets added to or removed from the measured portfolio | Prevents deposits from being mistaken for performance |
| Fees and costs | Trading, spread, network, custody and other recorded costs | Connects gross market movement to the investor’s net result |
| Return percentage | Profit relative to capital, adjusted for the chosen method | Makes periods or portfolios more comparable |
The same portfolio can have positive unrealized profit and negative realized profit, or the reverse. Combining both into one unexplained percentage hides that distinction. If you first need a broader overview of available tools, use our crypto profit and portfolio calculator guide. This page focuses specifically on auditable multi-asset calculation.
Start With a Clean Multi-Asset Transaction Ledger
The calculation is only as reliable as the ledger. Export transactions from every exchange and wallet in scope, then normalize them into one table. Do not begin by copying current balances: balances cannot explain which units were bought, sold, transferred or received.
| Required field | Example | Control |
|---|---|---|
| Date and time | 2026-01-15 14:30 UTC | Use one timezone and retain the source timestamp |
| Transaction type | Buy, sell, swap, deposit, withdrawal, reward or fee | Do not classify every incoming transfer as income |
| Asset and units | ETH, 0.7500 | Keep enough decimal precision for the asset |
| Gross value | USD 1,800 | Use a documented price at the transaction time |
| Fee | USD 18 | Record the fee asset as well as its base-currency value |
| Account or wallet | Exchange A | Allows own-wallet transfers to be matched |
| Transaction ID | Exchange order ID or transaction hash | Supports duplicate detection and later review |
Match both sides of transfers between your own accounts. A withdrawal from Exchange A and a deposit to Wallet B are normally one internal movement for portfolio-performance purposes, not a sale followed by a new contribution. Any transfer fee is still a real reduction in units and should remain in the ledger. For practical tracking controls, see our crypto portfolio tracker and calculator guide.
Choose One Scope, Base Currency and Valuation Time
Before calculating, write down the reporting boundary. Does “portfolio” include every exchange, self-custody wallet, stablecoin balance and uninvested fiat balance, or only one account? A transfer changes performance only when it crosses that boundary.
Next, choose one base currency, such as USD, EUR or AED. Convert every transaction and ending balance into that currency using a consistent price source and timestamp. If a BTC trade is valued at 23:59 UTC but an ETH balance is valued twelve hours later, the total mixes different market states.
Total portfolio value = sum of (units held for each asset x price in the base currency) + included cash balances
Document the price source, timestamp and treatment of illiquid or unpriced tokens. A token with no dependable market price should not silently inherit its last quoted value. Flag it for manual review.

Calculate Lifetime Economic Profit or Loss
If the measured portfolio started from zero and every external flow is known, the cleanest lifetime reconciliation is:
Lifetime P&L = ending portfolio value + external withdrawals – external contributions
External contributions include cash or assets brought into the portfolio from outside the reporting boundary. External withdrawals are value removed from that boundary. Internal transfers are excluded because they neither add nor remove investor capital.
Suppose an investor contributed $5,050, later withdrew $742.50 of net sale proceeds, and the remaining portfolio is worth $5,160. Lifetime P&L is:
$5,160 + $742.50 – $5,050 = $852.50 profit
This equation is an economic reconciliation, not a tax calculation. It tells you whether the complete measured portfolio is ahead or behind after known flows. It does not decide which gains are taxable or which cost-basis method applies.
Calculate Profit or Loss for a Reporting Period
For a month, quarter or year, include the opening value:
Period P&L = ending value – beginning value – net external cash flow
Net external cash flow = contributions – withdrawals
If a portfolio began the month at $10,000, received a $2,000 contribution and ended at $12,600, its period profit is $600. Calling the result a 26% return would be wrong because $2,000 of the increase came from the investor, not the market.
The absolute $600 P&L is valid once the cash flow is classified correctly. Turning it into a percentage requires a return method that addresses when the $2,000 arrived. This is why an audit-ready report stores dated flows instead of only beginning and ending balances.
Separate Unrealized and Realized P&L
For every open position:
Unrealized P&L = current value of unsold units – remaining cost basis
For every disposal:
Realized P&L = net disposal proceeds – allocated cost basis of disposed units
Net disposal proceeds normally means gross proceeds minus costs allocated to the disposal under the accounting convention being used. The allocated basis depends on the permitted identification method. FIFO, specific identification and weighted-average methods can produce different realized results even when the portfolio’s total economic value is unchanged.
For US federal tax context, the IRS explains that gain or loss on a digital-asset sale is the difference between adjusted basis and amount realized, and its current digital asset transaction FAQs also describe recordkeeping, fees and unit identification. Those rules are jurisdiction-specific; use the rules that apply to you.
Worked BTC, ETH and SOL Portfolio Example
Consider a simplified portfolio with three purchases. The investor uses one base currency and includes acquisition fees in the analytical cost of each position.
| Asset | Units bought | Gross purchase | Buy fee | Initial cost basis |
|---|---|---|---|---|
| BTC | 0.0400 | $2,000 | $20 | $2,020 |
| ETH | 0.7500 | $1,800 | $18 | $1,818 |
| SOL | 12.0000 | $1,200 | $12 | $1,212 |
| Total | – | $5,000 | $50 | $5,050 |
The investor then sells 0.25 ETH for $750 and pays a $7.50 sale fee, leaving net proceeds of $742.50. For this educational example, average cost is used: ETH basis per unit is $1,818 / 0.75 = $2,424. The basis allocated to 0.25 ETH is $606, so realized profit is $136.50.
At the reporting time, assume BTC is $65,000, ETH is $3,200 and SOL is $80. The open-position calculation is:
| Asset | Units remaining | Current value | Remaining basis | Unrealized P&L |
|---|---|---|---|---|
| BTC | 0.0400 | $2,600 | $2,020 | +$580 |
| ETH | 0.5000 | $1,600 | $1,212 | +$388 |
| SOL | 12.0000 | $960 | $1,212 | -$252 |
| Total | – | $5,160 | $4,444 | +$716 |
The result reconciles in two ways:
- realized P&L of $136.50 plus unrealized P&L of $716 equals $852.50;
- ending holdings of $5,160 plus the $742.50 withdrawn minus $5,050 contributed also equals $852.50.
If those totals do not agree, look for a missing fee, unmatched transfer, duplicated transaction, unrecorded reward or incorrect cost allocation.

How to Treat Deposits, Withdrawals, Transfers and Rewards
Classification controls the result. Use a transaction map and apply it consistently:
| Event | Portfolio-performance treatment | Common error |
|---|---|---|
| Fiat deposited from a bank | External contribution | Counting it as profit |
| Crypto moved between own wallets | Internal transfer; match both sides | Counting withdrawal as a loss and deposit as income |
| Crypto sent outside the measured portfolio | External withdrawal at a documented value | Leaving the units in the ending balance |
| Staking reward or airdrop | Record units, date, source and value as a separate event type | Mixing rewards with contributions or buys |
| Crypto-to-crypto swap | Record disposal of one asset and acquisition of another | Treating it as a transfer with no price evidence |
| Lost access or worthless token | Flag for manual review and evidence | Deleting the history to force balances to match |
Portfolio reporting and tax reporting are different layers. A reward can increase portfolio value before any sale while its income and basis treatment varies by jurisdiction. Keep raw event data so reports can be regenerated when assumptions or rules change.
Include Every Fee Without Double Counting
Fees reduce the capital available to compound and can materially lower long-term results. Investor.gov’s current guide to fees and portfolio returns explains why even apparently small costs matter over time.
Track trading commissions, quoted spread when measurable, network or gas fees, custody charges and subscription costs if they are inside the reporting scope. Do not subtract the same charge once from cash and again from P&L. A reconciliation should use the actual net change in cash or units.
For analytical reporting, a buy fee is commonly included in acquisition cost and a sell fee reduces net proceeds. Tax treatment can be more specific, especially for swaps, network fees or costs paid in crypto. Store the original transaction and fee asset rather than hard-coding one legal conclusion into the ledger.
Choose the Right Return Percentage
Absolute P&L answers “How many base-currency units were gained or lost?” A percentage return answers a different question. Choose the method based on the decision being evaluated.
| Method | Best use | Main limitation |
|---|---|---|
| Simple ROI | One investment with no meaningful intermediate cash flow | Can misstate a portfolio with deposits and withdrawals |
| Time-weighted return (TWR) | Assessing investment performance while neutralizing external-flow timing | Requires valuations around significant cash flows |
| Money-weighted return (MWR/IRR) | Measuring the investor’s experience including the size and timing of flows | Can be hard to interpret and may have numerical issues |
| XIRR | Annualized money-weighted return for irregularly dated cash flows | Requires dated positive and negative flows and is sensitive to data/sign errors |
CFA Institute’s GIPS introduction for asset owners distinguishes time-weighted return from money-weighted return: the latter reflects the size and timing of external cash flows. Microsoft’s XIRR documentation defines XIRR for cash flows that are not necessarily periodic.
In the earlier period example, the portfolio rose from $10,000 to $10,500 before a $2,000 deposit, then from $12,500 to $12,600. The two subperiod returns are 5% and 0.8%. Chaining them gives approximately 5.84% TWR: (1.05 x 1.008) – 1. The investor’s money-weighted result also depends on the exact deposit date.
For a single purchase-and-sale question, our guide to calculating crypto profit correctly explains trade-level logic. For annualized return and holding-period comparisons, use the separate crypto ROI calculation guide.
Measure Asset Contribution, Not Just Asset Return
A small position can have a spectacular return without contributing much to the portfolio. A large position with a modest decline may dominate the result. For a period with no external flows or rebalancing, an approximate contribution is:
Asset contribution to portfolio return = starting asset weight x asset return
If BTC begins at 60% of a portfolio and returns 10%, its approximate contribution is 6 percentage points. If SOL begins at 5% and returns 40%, its contribution is about 2 points. The approximation becomes less reliable when positions are traded, rewards are received or cash flows occur during the period; then calculate contribution in subperiods.
Contribution analysis reveals whether the result came from the intended portfolio structure or one concentrated bet. It also creates a useful bridge to crypto portfolio optimization and a documented portfolio rebalancing strategy.

Reconcile the Report Before You Trust It
Run these controls every time the report is refreshed:
| Control | Pass condition | If it fails |
|---|---|---|
| Units reconciliation | Opening units + received + bought – sold – sent – fees = ending units | Search for missing, duplicate or unmatched transactions |
| Transfer matching | Both sides of every own-account transfer are paired | Compare timestamps, quantities, fees and transaction IDs |
| Value reconciliation | Realized P&L + unrealized P&L agrees with economic P&L | Review basis, proceeds, flows and included cash |
| Price consistency | All ending positions use the documented base currency and time | Revalue with one source and timestamp |
| Fee completeness | Fee asset, units and value exist for every charged event | Compare exchange statements and on-chain records |
| Exception review | Unpriced assets, rewards, forks and lost access are explicitly flagged | Do not force an automatic assumption |
Keep the raw exports unchanged, store the normalized ledger separately and record every manual adjustment with a reason. This makes the calculation reproducible and supports a broader crypto portfolio management process.
Calculate a Portfolio in Forvest
Forvest’s Crypto Portfolio Calculator lets you enter multiple assets and review portfolio-level outputs in one place. Use it to explore how allocation, dates and fees affect the result, then compare the output with your own transaction records.
A calculator can reduce arithmetic work, but it cannot know whether a wallet transfer is internal, which cost-basis convention applies to you, or whether an exchange export is incomplete. Treat the tool as part of a controlled workflow: clean inputs, documented assumptions, calculated output and reconciliation.
Final Checklist
- Define exactly which accounts and assets are inside the portfolio.
- Export and preserve all transactions, balances and fees.
- Normalize timestamps, symbols and values into one base currency.
- Match internal transfers and separate external contributions and withdrawals.
- Allocate cost basis consistently and calculate realized P&L.
- Value remaining units at one timestamp and calculate unrealized P&L.
- Reconcile realized plus unrealized P&L to the economic cash-flow equation.
- Select TWR, MWR/XIRR or simple ROI for the specific question being answered.
- Document exceptions and verify jurisdiction-specific tax treatment separately.
Reviewed: 10 August 2026. Examples are simplified and use hypothetical prices. Crypto assets are volatile, and loss of the full amount invested is possible.