Home Features Pricing FAQ Blog Help Privacy Policy Terms of Service
Beginner Education

Cost Basis in Crypto: Average Cost vs FIFO (and Why Your P&L Looks Wrong)

Cost basis decides your realized profit. Learn Average Cost vs FIFO, see a worked example, avoid the three mistakes that make your P&L (and taxes) look wrong.

← All posts
Beginner Education 6 min read
Share this article:

If you've ever sold some BTC and thought “wait… why is my profit number so weird?”, you're not alone. In crypto, P&L isn't just price — it depends on which coins you sold. That choice is called cost basis.

Two people can make the exact same buys and sells, at the exact same prices, and still see different realized profit depending on whether their tracker uses Average Cost or FIFO.

Your realized profit depends on which lots you “sell” on paper — not just the market price.


What “cost basis” means (in plain English)

Every time you buy crypto, you create a lot: an amount you bought at a particular price (plus fees). When you later sell, the app must decide which lots were sold, so it can compute your realized profit.

📝 Note
Realized P&L = Proceeds − Cost basis − Fees
Cost basis is the “what you paid” for the specific coins you sold (not necessarily your most recent buy).

This is why your P&L can look “wrong” when you compare two apps: they might both be correct — they just use different rules for choosing lots.


Average Cost vs FIFO: the core difference

Here are the two most common methods beginners run into:

MethodHow it picks lotsWhat it tends to do to profit timing
Average CostBlends all buys into one average price per coinSmooths realized profit; less sensitive to which buy happened first
FIFO (First-In, First-Out)Sells your oldest lots firstCan make early sells look more profitable (or less), depending on your earliest buys
💡 Tip
If your portfolio app doesn't clearly say which cost basis method it uses, assume your realized P&L is a “best guess,” not a precise accounting result.

Worked example (with numbers): one sell, two different profits

Let's use a simple scenario with one coin (ETH), ignoring taxes for the moment, and assuming fees are $0 to keep the math clean.

DateActionAmountPriceValue
Jan 10Buy1.0 ETH$1,000$1,000
Feb 05Buy1.0 ETH$2,000$2,000
Mar 20Sell1.0 ETH$1,800$1,800

You bought 2 ETH total, then sold 1 ETH. The question is: which 1 ETH did you sell?

Method 1: FIFO (sell the oldest ETH first)

FIFO says the first ETH you bought (Jan 10 at $1,000) is the one you sold on Mar 20.

📝 Note
FIFO realized P&L
Proceeds = $1,800
Cost basis = $1,000
Realized profit = $800

Your remaining holding is the Feb 05 lot: 1 ETH with cost basis $2,000.


Method 2: Average Cost (blend both buys)

Average Cost says: “You own 2 ETH at an average price.” The average cost per ETH is:

📝 Note
Average cost per ETH
Total cost = $1,000 + $2,000 = $3,000
Total ETH = 2.0
Average cost = $3,000 / 2 = $1,500 per ETH
📝 Note
Average Cost realized P&L
Proceeds = $1,800
Cost basis = $1,500
Realized profit = $300

Same sell. Same market price. But realized profit is $800 vs $300 depending on the method. That's why your P&L can “look wrong” when you switch apps — the app didn't lose your data, it changed the accounting lens.

Cost basis is a timing engine. It changes when profit appears (realized now vs later), even when your long-term outcome may be similar across the full lifecycle of all lots.

Why this matters for P&L (and not just taxes)

Even if you don't care about tax reporting yet, cost basis impacts the two numbers people look at most:

⚠️ Warning
If you compare P&L across exchanges, wallets, or apps without aligning the cost basis method, you're comparing apples to oranges.

Three common mistakes that make P&L look wrong

Most “wrong P&L” issues aren't bugs — they're missing context. Here are the three most common pitfalls.

1
Ignoring fees in cost basis (or counting them twice)
Trading fees change your true cost and your true proceeds. If an app excludes fees, it will often overstate profit. If you import fees inconsistently (some trades include them, some don't), your realized P&L becomes noisy and hard to trust.
2
Mixing transfers with sells (especially between exchanges)
A transfer is not a taxable sell — but if your history labels it incorrectly (or misses the matching inbound transfer), your tracker can “think” you sold at $0 or bought at $0, which creates huge fake gains or losses.
3
Switching method mid-stream and expecting identical history
If you change from Average Cost to FIFO (or import to a new tool that uses a different default), old sells will be re-matched to lots. Your historical realized P&L can change — not because the past changed, but because the matching rule changed.

A different cost basis method can change your realized history — without changing your actual trading.


Quick sanity checks when your profit number “feels off”


So which method should you use?

There's no universal “best” method. The right answer depends on your jurisdiction and your reporting needs. But for beginners tracking performance, the key is simpler:

💡 Tip
Choose a method you understand, stick to it consistently, and avoid comparing realized P&L across tools unless the method matches.

If you're using a tracker mainly to learn from your decisions, consistency beats perfection. A consistent cost basis method makes trends visible and helps you avoid the psychological trap of celebrating (or panicking) over numbers that are mostly accounting artifacts.


A soft next step (Coinlio)

Coinlio is built to keep portfolio tracking practical and understandable. If you're trying to make sense of performance over time, pair the cost-basis basics here with a longer horizon view like Profit by Year so you can separate “method noise” from real strategy outcomes.

Educational content. Not financial or tax advice.

Try Coinlio Free

3 portfolios, unlimited assets, zero data selling. Download now on the App Store.

Try Coinlio Free →
Link copied!