Most crypto investors have no idea if they’re actually profitable.
They check their portfolio balance, see a number, and assume that’s what they made. It’s not. Here’s why, and what we’re building to fix it. 🧵👇
Lending position liquidations are the most difficult case for cost basis tracking.
Half your collateral gets sold at a discount you didn’t choose, debt gets repaid out of proceeds, and what’s left in your wallet has no clean acquisition record.
The chain shows a complex multi-step transaction. The tracker shows a balance that suddenly dropped. Reconstructing what actually happened for tax purposes would be extremely challenging even if all protocols had the same liquidation mechanism and standard.
A position that earns interest in the same token isn’t the same as a position that earns interest in a separate token.
Aave aTokens grow your balance directly in your wallet. Lido stETH does something similar.
Stablecoin yield farms drop reward tokens you have to claim manually, and the basis on those rewards is a separate calculation.
Each breaks trackers in a different way, but the result is the same. Inaccurate numbers that lead to misinformed decisions.
A position you can’t track correctly is a position you can’t make decisions on.
We wrote the full breakdown of how lending position cost basis works across Aave V3, V4, Compound V2, and V3.
https://t.co/1D0AVX5uan
If you’ve held an Aave position for more than 12 months and exited this year, your tracker probably reported the entire withdrawal as capital gains.
The IRS doesn’t see it that way and the difference can be thousands in misreported income 🧵👇
Aave V4 abandoned rebasing entirely.
Lending positions there work like ERC-4626 vault shares. Fixed token balance, value-per-share grows.
Aave Labs framed this as a fix for V3’s tax-tracking pain. The mechanics finally match what trackers can actually read from chain.
Coinbase Earn rewards aren’t the same as staking rewards even though Coinbase calls them both staking.
The first is more like interest income from a custodial program. The second is the on-chain validation reward where you keep custody and the protocol pays you.
The IRS treats them differently, though most trackers don’t distinguish between them because the API just returns “rewards” with a USD value.
If you’ve earned both this year, your tax position is already wrong if your tracker bundled them.
Failed transactions cost you real money and disappear from most trackers entirely.
A failed swap on Ethereum during congestion can burn $40-80 in gas and produce nothing. The chain charged you. The DEX has no record because the trade never executed. Your tracker sees a wallet outflow with no offsetting position change and most just ignore it.
Multiply that across a year of active DeFi and the number adds up, all with no record.
Two wallets showing a 100 SOL balance can have dramatically different positions.
If you bought 50 SOL at $20 and 50 at $180, your average cost is $100 and your unrealized P&L on a sale at $150 is +$2,500. If you bought all 100 SOL at $180 and watched it drop to $150, you’re sitting on -$3,000.
Same balance and same current price. Opposite outcomes when you actually sell. Trackers that average everything into a single cost basis number can’t tell you which is which.
Deposit 10 ETH into Aave. 1.5 years later you have 10.4 aETH.
Most trackers see the new aETH balance and treat the extra 0.4 as either a separate asset with no cost basis or a balance change with no event behind it.
Neither is right.
The aToken is a rebasing claim on the underlying, and that yield is income with a basis tied to the day each chunk hit your wallet.
The difference matters, especially at tax time.
A Uniswap V3 LP position is an NFT, not an ERC-20.
This changes how a tracker app values your portfolio. It’s also why your wallet dashboard probably shows it as an unrecognized item or skips it entirely.
LP positions have a price range, a current activity status, and unclaimed fees that all live separately from the principal liquidity.
Aave V2 LP tokens are fungible and at least register as a balance. V3 positions need a tracker that reads the contract directly.
Don’t assume your app supports both.
A Uniswap V3 LP position is an NFT, not an ERC-20.
This changes how a tracker app values your portfolio. It’s also why your wallet dashboard probably shows it as an unrecognized item or skips it entirely.
LP positions have a price range, a current activity status, and unclaimed fees that all live separately from the principal liquidity.
Aave V2 LP tokens are fungible and at least register as a balance. V3 positions need a tracker that reads the contract directly.
Don’t assume your app supports both.
Most LP trackers show you the dollar value of your position and stop there. In reality, there should be four numbers.
We wrote the full breakdown of what's actually happening inside your position and what an LP tracker should be showing you instead.
https://t.co/ifq3NETX5U
You provided liquidity to a Uniswap pool six months ago. Your tracker shows the LP token in your wallet and a current dollar value next to it. That's it.
Behind that number, four different things are happening that change the actual value of your position. 🧵👇
Then there's cost basis on exit. The IRS hasn't issued specific guidance on liquidity pools. CPAs take different positions on whether the deposit was a taxable disposition or a non-event. Whichever stance you choose affects every future sale of the tokens you receive.