Tax-loss harvesting without wash sales
Lesson 17 · about 9 min
Education, not tax advice: rules, rates and thresholds change every year, so confirm anything you plan to act on with a qualified tax professional.
Tax-loss harvesting is the practice of realizing losses deliberately so they offset gains, while keeping the market exposure you actually want. For a long-term investor it is a year-end ritual. For an active trader it is mostly a matter of not undoing losses that already exist, and the wash sale rule is the only obstacle.
The arithmetic
Losses offset gains dollar for dollar, in the netting order from Module 1: short against short, long against long, then across. Excess losses offset up to $3,000 of ordinary income and carry forward.
Worked example. In November a trader has $25,000 of realized short-term gains and holds two positions with unrealized losses: Position A, −$9,000 (held 8 months), and Position B, −$11,000 (held 2 years). Illustrative rates: 24% ordinary, 15% long-term.
| Action | Net short-term | Net long-term | Federal tax |
|---|---|---|---|
| Do nothing | +$25,000 | $0 | $6,000 |
| Harvest A only | +$16,000 | $0 | $3,840 |
| Harvest A and B | +$16,000 | −$11,000 → nets to +$5,000 short-term | $1,200 |
Harvesting both reduces this year's tax by $4,800. The losses were real either way; harvesting merely chose to recognize them in a year with gains to absorb them. Notice that the long-term loss on B ended up offsetting short-term gains taxed at 24%, which is the more valuable use of a long-term loss.
Deferral is not elimination. Replacing the positions at the lower price resets the basis lower, so a future recovery is a larger gain. The benefit is timing (tax paid later is worth less), rate arbitrage (offsetting 24% gains with a loss that would otherwise offset 15% gains), and the $3,000 ordinary-income offset.
Keeping exposure without a wash
Selling a loser and buying it back inside 30 days undoes the harvest. The choices:
- Wait 31 days. Sell, sit flat, re-enter on day 31. Simple; costs you any move during the gap.
- Substitute. Sell the loser, buy something correlated but not substantially identical for 31 days, then swap back if desired. A fund tracking a different index in the same sector; a competitor in the same industry; a different-index ETF. Two funds tracking the same index are risky.
- Double up, then sell. Buy a second lot now, wait 31 days, then sell the original lot at a loss. The purchase falls outside the window when the loss is finally realized. This requires capital to hold both for a month and only works if you start before December 1 for a current-year harvest.
- Use an instrument outside the rule. Section 1256 contracts have no wash sales; a trader can harvest a loss in SPY shares and hold ES for a month, for example, though the two are different products with different costs.
Whichever you use, the replacement purchase must also avoid the 30 days before the sale, and must not happen in an IRA or a spouse's account.
What active traders actually do
For a day trader or swing trader, the losses are usually already realized; the question is whether they were washed back into an open position. December harvesting for such a trader means:
- Reviewing the wash-sale-disallowed column for every ticker (Module 2, Lesson 2).
- For tickers with large disallowed amounts and an open position, deciding whether to close and stay flat through 31 days so the chain resolves this year.
- Not re-entering any December loss sale until 31 days have passed.
The rest of the year, the practical rule is simpler: when a trade in a name goes against you and you expect to be back in it within a month, be aware that the loss will not count until later.
Substantially identical: practical lines
| Pair | Generally treated as |
|---|---|
| Same stock, same stock | Identical |
| Stock and a call option on it | Substantially identical |
| Two ETFs on the same index, different sponsors | Grey area; most avoid |
| Two ETFs on different indexes in the same sector | Not identical |
| Company A and Company B in the same industry | Not identical |
| Preferred and common of the same company | Usually not identical, unless convertible at par |
| Coin and the same coin on another exchange | Identical (though crypto is currently outside the rule) |
Harvesting gains
The mirror image also exists. In a low-income year (a year with a large loss carryforward, a gap year, or income within the 0% long-term bracket), realizing long-term gains deliberately can use the low rate and reset basis higher. There is no wash sale rule for gains, so the position can be bought back immediately. The math is the same as loss harvesting, run in reverse, and it is easy to overlook because it feels like paying tax voluntarily.
Key idea: Harvesting realizes losses in a year with gains to absorb them; the wash sale rule is the only trap. Keep exposure by waiting 31 days, substituting a non-identical instrument, doubling up in advance, or using 1256 contracts.
Try it: List your open positions with unrealized losses larger than $1,000. For each, write the holding period (short or long), a plausible non-identical substitute, and the date 31 days from today. That list is a harvesting plan; whether you execute it depends on this year's gains and next year's expected bracket.
Recap
- Losses offset gains fully, then $3,000 of ordinary income, then carry forward; harvesting moves recognition to a year that can use it.
- Long-term losses that end up offsetting short-term gains are the most valuable kind.
- Avoid washes with a 31-day wait, a non-identical substitute, a doubling-up in advance, or 1256 contracts.
- Replacement purchases in IRAs and spouse accounts still trigger the rule.
- Gain harvesting in a low-income year uses the 0% or 15% bracket and has no wash rule.
See it drawn
Original diagrams for the ideas on this page. Illustrative, not real market data.