tl:dr; We will use the exact trade price reported within an exchange's trade imports. If this is not known, or it is a crypto-crypto trade, we will use the exchange's spot price of the disposed crypto at that exact date and time. If there is no exchange, or no crypto listed, we will use our global price index built from over 130 worldwide exchanges.
Crypto gains and prices
Let's say you bought 1 BTC for $6,000 and then traded it for 50 ETH. How much in capital gains do you have?
To calculate capital gains, we subtract the original cost basis and any trading fees, from the acquired property's value. However, to do this we must know the price of BTC at the time it was disposed.
For tax years 2018 and earlier we calculated Fair Market Value (FMV) using daily weighted average pricing that we collected from exchanges. We know that 1 BTC would be worth, say $7,000, on that day and so we could calculate your gains as (let's assume zero trading fees for the purpose of these examples):
Capital gains = $7,000 - $6,000 = $1,000
For tax years 2019 onward, we have spot price data for more than 130 exchanges across the globe. Each time a trade is executed we collect the exact price so we get the most accurate pricing to the second.
Trade time is important
Let's say you used Coinbase Pro as your exchange and sold your 1 BTC for 50 ETH. It is extremely important that we have the exact time of this trade, and fortunately, all our API and CSV imports include this information to the second.
So, if our trade was made at 12/15/2019 at 9:15:21am PST.
The spot price on the Coinbase exchange at that time was $7,088.04.
Our capital gains are therefore
Capital gains = $7,088.04 - $6,000.00 = $1,088.04
This also sets the cost basis for those newly acquired 50 ETH at $141.76 each.
Prices are per exchange
What if we had traded the 1 BTC on BinanceUS instead?
The BTC price on the US Binance exchange at that time was $7,091.65, worth a little more, so our gains would be
Capital gains = $7,091.65 - $6,000.00 = $1,091.65
What if the exchange is unknown?
What happens if you traded your BTC on an exchange where we are not collecting data, or it was a decentralized anonymous exchange? We still must calculate the Fair Market Value and so will use our global price index. Global pricing is our own global price index of crypto at a point in time, built from weighted traded volume from a set of global exchanges.
What if there are no spot prices?
If an exchange, or crypto, has no spot prices then we will fallback to using global pricing.
What if the time isn't known?
Sometimes you will enter transactions with no time - for example, income and spending could be entered manually and you might only enter the date on which the transaction occurred. Without the time, we will fall back to using daily pricing from our global price index. However, you will get more accurate results if you can estimate the time of each transaction at least to the nearest hour.
To get a price of crypto at any point in time, we use the following rules:
- If exchange trade reports fiat pricing, use imported price
- If exchange and crypto has pricing, use exchange's spot price
- If exchange is not known but crypto has pricing, use global price index
Where we have no crypto price at all for a given symbol we use zero price and you will have to adjust it manually.
IRS Pricing Rules
The IRS Frequently Asked Questions on Virtual Currency Transactions deal with crypto pricing in Q.25 and Q.26.
If you receive cryptocurrency in a transaction facilitated by a cryptocurrency exchange, the value of the cryptocurrency is the amount that is recorded by the cryptocurrency exchange for that transaction in U.S. dollars
Meaning, if you traded BTC for USD, you should use the exchange's USD price as defined for that trade.
If the transaction is facilitated by a centralized or decentralized cryptocurrency exchange but is not recorded on a distributed ledger or is otherwise an off-chain transaction, then the fair market value is the amount the cryptocurrency was trading for on the exchange at the date and time the transaction would have been recorded on the ledger if it had been an on-chain transaction.
Use the spot price as if it was traded on the exchange at that date and time.
If you receive cryptocurrency in a peer-to-peer transaction or some other transaction not facilitated by a cryptocurrency exchange, the fair market value of the cryptocurrency is determined as of the date and time the transaction is recorded on the distributed ledger, or would have been recorded on the ledger if it had been an on-chain transaction. The IRS will accept as evidence of fair market value the value as determined by a cryptocurrency or blockchain explorer that analyzes worldwide indices of a cryptocurrency and calculates the value of the cryptocurrency at an exact date and time. If you do not use an explorer value, you must establish that the value you used is an accurate representation of the cryptocurrency’s fair market value.
More complicated, but says if there was no exchange, use the fair market value at that date and time, which can be from a worldwide index of cryptocurrency prices. Or, you can use your own price, but you must show it to be an accurate value.
Bitcoin.Tax satisfies these requirements as 1) we always use an exchange's described trading price from trade imports, 2) we use the exchange's spot price if known, and 3) we use our global index of crypto pricing.