Howto · Apr 3, 2026

How to Calculate Crypto Profits

Step-by-step: how to calculate profit and loss on any crypto trade, including fees, cost basis methods, and ROI/annualized return.

"How much did I actually make?" is a deceptively hard question in crypto. Multiple buys at different prices, partial sells, fees on both sides, swaps that count as sales, and rewards that arrive at varying prices all complicate a calculation that looks simple at first. This how-to walks through the math step by step, then shows the multi-buy case and the annualized-return adjustment. Not financial or tax advice; for compliance, use dedicated tax software. For decisions, use this and a calculator.

Quick Answer / TL;DR

For a single buy and sell:

Profit ($) = (Sell price × quantity) - (Buy price × quantity) - All fees
ROI (%)    = Profit / Total cost basis × 100

For multiple buys: track each tax lot separately and apply your chosen accounting method (FIFO, HIFO, or specific identification) when you sell.

For comparing periods of different lengths: annualize using (1 + return) ^ (365 / days held) - 1.

For tax purposes: the sale price minus the lot's cost basis minus fees equals the capital gain or loss. Swaps count as sales of the disposed asset. See long-term vs short-term capital gains.

🧮 Try it: Crypto Profit/Loss Calculator

The Simple Case

You bought 1 ETH at $2,000 (paying a $5 fee) and sold it at $3,000 (paying a $6 fee).

Cost basis = (2,000 × 1) + 5 = $2,005
Proceeds   = (3,000 × 1) - 6 = $2,994
Profit     = 2,994 - 2,005   = $989
ROI        = 989 / 2,005     ≈ 49.3%

The two fees show up on opposite sides: acquisition fees increase basis (they're part of what you paid); disposal fees reduce proceeds (they reduce what you actually received).

The Multiple-Buy Case

You bought ETH at three different prices:

  • Lot A: 0.5 ETH at $1,800 + $2 fee → basis $902
  • Lot B: 0.5 ETH at $2,200 + $2 fee → basis $1,102
  • Lot C: 0.5 ETH at $2,600 + $2 fee → basis $1,302

You sell 1 ETH at $3,000 with a $5 fee. Proceeds: $2,995.

Which lots did you sell? This is where accounting methods matter:

  • FIFO: sold Lot A + Lot B. Basis = $902 + $1,102 = $2,004. Gain = $991.
  • HIFO: sold Lot C + Lot B. Basis = $1,302 + $1,102 = $2,404. Gain = $591.
  • LIFO: sold Lot C + Lot B (same as HIFO in this example). Gain = $591.
  • Specific ID: you decide. Lot A + Lot C = $2,204 basis, $791 gain. Lot A + Lot B = $2,004, $991. Etc.

For tax purposes, the IRS requires consistent application of your chosen method. Recent regulations also push toward per-wallet/per-account application. See crypto taxes complete guide.

For economic decision-making (not just tax), the multi-lot situation is the same calculation — you've realized $991 (FIFO) or $591 (HIFO) on the 1 ETH sold, and 0.5 ETH (Lot C, FIFO case) or 0.5 ETH (Lot A, HIFO case) remains in your inventory with its respective basis.

Including Swaps

When you swap ETH for USDC, you've disposed of ETH at its USD-equivalent fair market value at the time of the swap, and acquired USDC with that same FMV as your new basis.

Example: you swap 0.5 ETH (cost basis $902, FIFO Lot A) for USDC. At the moment of the swap, 1 ETH = $3,000, so 0.5 ETH = $1,500 of USDC (less any swap fee). The fee might be a percentage or a fixed amount; let's say $5.

Proceeds from ETH disposal = 1,500 - 5 = $1,495
Basis of ETH disposed       = $902
Capital gain on ETH          = $1,495 - $902 = $593
Basis of new USDC received   = $1,495 (1,495 USDC at $1 each)

When you later spend or sell that USDC, the basis is $1,495 (so essentially no gain or loss on stablecoin).

ROI and Annualized Return

Raw ROI of 50% over 6 months is much better than 50% over 5 years. To compare, annualize:

Annualized = (1 + ROI)^(365 / days_held) - 1

Example: 50% return over 6 months (≈ 182 days):

Annualized = (1.50)^(365/182) - 1 ≈ (1.50)^2.005 - 1 ≈ 2.255 - 1 ≈ 125.5%

Annualized 50% over 5 years:

Annualized = (1.50)^(365/1825) - 1 ≈ (1.50)^0.2 - 1 ≈ 1.0845 - 1 ≈ 8.45%

Same nominal return, very different annualized rates. Always annualize when comparing strategies of different durations.

Including Staking and Other Income

Rewards earned during the holding period are ordinary income at receipt's FMV, separate from the buy/sell cycle. If you bought 10 SOL and received 0.2 SOL in rewards while holding:

  • Original 10 SOL: standard buy/sell math.
  • Reward 0.2 SOL: ordinary income at the FMV at receipt; that FMV becomes the basis when you later sell those 0.2 SOL.

When you sell all 10.2 SOL together, your tax software treats this as two separate transactions (the original 10 with original basis; the 0.2 with reward-receipt basis). The total profit is the sum.

For investment-decision math (not tax math), you can think of the total return as:

Total economic return = (sale value - original cost) + reward value at receipt

But for tax purposes, the components must be split correctly.

Dealing With Fees

Fees come in several flavors:

  • Maker/taker exchange fees on a CEX — usually a percentage of trade value.
  • Gas fees on-chain — paid in the chain's native token. Each gas payment is also a disposal of that token, which has its own micro-gain or -loss.
  • Spread on a broker app — implicit fee not shown as a line item.
  • Withdrawal fees when moving off an exchange.

All fees affect economic profit. For tax purposes, acquisition fees go into basis and disposal fees come out of proceeds. For decision-making, sum all fees in the round-trip.

Worked Example: 6 Months of Activity

A simplified scenario:

  1. January: buy 0.5 BTC at $40,000 + $20 fee. Basis: $20,020.
  2. March: buy 0.5 BTC at $50,000 + $25 fee. Basis: $25,025.
  3. May: receive 0.005 BTC in interest from a CeFi product, FMV $260. Ordinary income: $260. Basis on those 0.005: $260.
  4. July: sell 1 BTC at $60,000 - $30 fee. Proceeds: $59,970.

What's the realized capital gain?

Using FIFO, the 1 BTC sold = first 0.5 (Lot 1) + next 0.5 (Lot 2).

  • Lot 1: 0.5 sold, proceeds 0.5/1.0005 × 59,970 ≈ $29,985, basis $20,020, gain $9,965.
  • Lot 2: 0.5 sold, proceeds ≈ $29,985, basis $25,025, gain $4,960.

(The 0.005 BTC of interest is still in inventory with $260 basis.)

Total realized capital gain on Schedule D: ≈ $14,925 (with the proceeds split simplified for clarity).

Ordinary income separately: $260 from the interest.

Total economic gain ≈ $15,185 + ($260 basis still held, which is also "economic" but not yet realized for tax).

Use a calculator and tax software to get exact numbers for your scenario.

🧮 Try it: Crypto Profit/Loss Calculator

Common Mistakes

  • Forgetting fees on both sides. They typically reduce realized profit by 0.5-2% per round trip on a CEX, more with on-chain swaps.
  • Mixing tax basis with economic basis. Ordinary-income basis comes in at receipt FMV, not original buy price.
  • Comparing un-annualized returns. 30% in 6 months is very different from 30% in 3 years.
  • Ignoring stablecoin micro-gains/losses. Usually trivial, but they accumulate in tax software.
  • Treating a swap as non-taxable. It's a sale of the disposed asset.
  • Failing to update cost basis when you wrap/unwrap, bridge, or migrate. Software helps if everything is connected.
  • Calculating ROI on net deposits to an account rather than per-trade. You miss the cost of capital and the timing.

Tips

  • For decision-making, use the simple formula and a calculator.
  • For tax filing, use dedicated software and reconcile.
  • Track every reward at its receipt FMV — that's the basis for the eventual disposal.
  • Annualize returns when comparing strategies.
  • Save fee structures of your exchanges; they shift over time.

Frequently Asked Questions

Q: Do I include unrealized gains in my profit?

For decision-making, you might mark to market. For tax purposes, no — only realized (sold or swapped) gains count. Unrealized gains can disappear in a drawdown.

Q: How are crypto rewards calculated in profit?

For investment math: their value at receipt is part of your return. For tax math: ordinary income at receipt's FMV; the FMV becomes basis for the eventual sale.

Q: What about gas fees as separate disposals?

Strictly, each gas payment in ETH is a tiny disposal of ETH at its FMV when paid. Tax software tracks this. The amounts are usually small.

Q: My exchange shows my "profit" automatically. Why use my own math?

Exchange dashboards typically ignore cross-exchange transfers, off-platform rewards, and inconsistent basis methods. They're useful for a quick sanity check but not for tax filing or rigorous performance tracking.

Q: How do I handle a partial sell?

The partial sell disposes of the chosen lot(s) at proportional basis. Specific identification gives the cleanest result; FIFO is the default if you don't choose. Tax software handles this if configured.

Conclusion

Calculating crypto profits is straightforward once you have the framework: cost basis + fees in, proceeds - fees out, lot selection for partial sells, separate handling of rewards, and annualization for comparing different periods. The arithmetic doesn't change; the bookkeeping is where most people stumble. Use a calculator for decisions and tax software for filing.

Run any sizable trade through a calculator before clicking sell to know exactly what you'll realize.

🧮 Try it: Crypto Profit/Loss Calculator

Last updated: November 2026

Related Calculators