The messages start every December, usually from someone holding a position that is down by half and wondering whether there is anything useful to do with it besides stare at it. There is, and it is more mechanical than people expect. Selling banks a capital loss, and that loss offsets capital gains you have realized anywhere else, in crypto, in stocks, in anything. If your losses exceed your gains, US rules have long let a small slice of the excess, three thousand dollars a year, offset ordinary income, and the rest carries forward to future years. None of that is exotic. Equity investors have run this play for decades. The interesting part with crypto is what you are allowed to do thirty seconds after you sell.
Sell a stock at a loss and buy it back within thirty days and the wash sale rule disallows the loss. The disallowed amount gets folded into the basis of the new shares and you get nothing this year. Crypto, as US rules stand, has no such window. The wash sale statute covers stock and securities, and the IRS has treated crypto as property since the first guidance it ever issued on the subject. Property sits outside the statute's text. So you can sell ETH at a loss, buy it back the same afternoon, keep your exposure through whatever recovery you are worried about missing, and still claim the loss. I have watched people harvest the same position several times through one long drawdown, stepping their cost basis lower each round.
Why the gap exists and why I would not lean on it
Two caveats before anyone treats this as a permanent feature. The first is the economic substance doctrine, which lets the IRS disregard transactions that change nothing about your economic position and exist only to generate a tax result. A sale followed by an instant rebuy at nearly the same price is more or less the textbook pattern. In practice I have not heard of it being used against ordinary harvesters, partly because even a short gap carries real price risk and you eat real spread and fees on both legs, but absence of enforcement and actual safety are two different things. Waiting a day or two between the sale and the rebuy makes the whole thing look a lot more like a real trade, because at that point it is one.
The second caveat is legislative. Proposals to extend the wash sale rule to digital assets have shown up repeatedly in budget drafts, mostly because the revenue estimate attached to them looks good on paper. I have no idea when the gap closes. My working assumption is that it eventually does, so I harvest while the treatment is favorable, document everything as if the stricter regime already applied, and avoid building anything whose entire value depends on the loophole surviving another cycle.
ETH, stETH, and the substantially identical problem
The wash sale rule, where it applies, blocks repurchase of the same security or anything substantially identical to it, and nobody knows where that line would sit in crypto because the statute has never had to answer. The question already matters, though. Some people prefer to harvest by swapping into a correlated but genuinely different asset rather than rebuying the same one, on the theory that a real change of position is easier to defend if the law changes with an ugly transition rule, or if economic substance ever gets teeth. And if Congress does extend the rule, substantially identical becomes the entire game, and the crypto pairs are harder than anything in equities.
Take ETH and a liquid staking token like stETH. They track each other closely most of the time, which is the whole point of holding one. But the staking token is a different asset with a different risk profile: smart contract risk, validator risk, and a history of trading at a discount during stress. By equity analogies, swapping one broad index fund for a competitor's nearly identical fund is done constantly and rarely challenged, while selling a stock and buying a call option on it is explicitly caught. Liquid staking tokens sit somewhere in between, and reasonable people disagree about which side they land on. Wrapped assets are the harder case. A wrapper's entire job is to be the same thing in a different envelope, and I would not want to argue that WBTC is meaningfully distinct from BTC in front of anyone whose job is to disagree with me.
My own rough ladder, for whenever the rules tighten: rebuying the same asset is the aggressive end, wrapped versions of the same asset are barely different from that, liquid staking tokens are arguable in both directions, and rotating into a different asset that merely correlates, ETH into SOL say, seems clearly fine because they are simply different things that happen to move together in risk-on and risk-off.
Year-round beats the December scramble
Crypto drawdowns do not check the calendar. The best harvesting opportunities show up whenever the market breaks, and the big breaks have historically landed in whatever month they felt like. If your process only runs in December, a few things go wrong at once. You miss mid-year lows entirely, and a position that was down badly in June may be back near breakeven by year end with nothing left to harvest. You transact in a window where everyone with the same idea is transacting, in holiday liquidity, so slippage eats a bigger share of the tax value. And you make rushed decisions about which lots to sell, which is where the actual money is.
Lot selection deserves a beat. If you bought at several prices, specific identification lets you choose which lot you are selling, and the character of the loss matters. Short-term losses net against short-term gains first, and short-term gains are taxed at higher ordinary rates, so a short-term loss is typically worth more per dollar than a long-term one. The other thing people forget is that rebuying resets the holding period. Harvest a loss on coins you have held for eleven months, rebuy the same day, and your long-term clock starts over from zero. Sometimes that trade-off is worth it, sometimes it is not, and it is never something you want to discover in April.
The checklist
This is the process I would run monthly, and again after any sharp move.
- Pull realized gains and losses for the year to date, split by short-term and long-term character.
- List every lot trading below its cost basis, per wallet and per venue. Blended portfolio averages hide harvestable lots.
- For each candidate, estimate the tax value of the loss, roughly the loss times your marginal rate on that character of gain, and compare it to the full round-trip cost of spread, fees, and slippage. Skip anything where the tax value is not a comfortable multiple of the cost.
- Decide your re-entry before you sell: immediate rebuy, a correlated substitute, or staying out. Write the decision down.
- Execute, then record everything the same day: timestamps, venue, transaction hashes or trade IDs, which specific lot you identified, proceeds, and fees.
- Export the CSVs immediately. Exchanges shut down and APIs get deprecated, and reconstructing cost basis from a dead platform is miserable.
- Recompute basis and the new holding period start on anything you rebought.
On documentation, the bar to aim for is per-lot records that would survive an audit without any goodwill from the auditor: acquisition date and cost for every lot, disposal date and proceeds, fees on both sides, and which wallet or account held it, since reporting expectations have been moving toward wallet-level accounting rather than one big blended pool. Half of this is just having the data in front of you, which is part of why we built per-position unrealized P&L into Blockcircle's portfolio view, because you cannot harvest a loss you never noticed.
The usual disclaimer applies more than usual here. I am not a tax professional, rules differ by country, and at any real portfolio size you want an accountant who has seen crypto returns before, if only to sanity-check your rebuy timing. What the accountant cannot do for you is watch your positions in June. Put the review on a recurring calendar slot, and make sure it does not say December.