Skip to content
GetProfitable
Search

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:

  1. Wait 31 days. Sell, sit flat, re-enter on day 31. Simple; costs you any move during the gap.
  2. 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.
  3. 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.
  4. 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.

Contango and backwardationTwo futures curves against contract expiry: one rising above spot, one falling below it.The same commodity, priced for delivery at different dates.78.0076.0074.0072.0070.00Futures pricespot+1m+2m+3m+4m+5m+6mMonths until the contract expiresspot price74.00CONTANGOlater contracts cost more than spotBACKWARDATIONlater contracts cost less than spot
Contango and backwardation. A futures curve shows what buyers will pay for delivery in one month, two months and so on. When later contracts cost more than the spot price the curve is in contango; when they cost less it is in backwardation.
Payoff of a long call at expiryA flat loss equal to the premium below the strike, turning upward at 45 degrees above it.Profit / loss per share08595115125Strike 105Max loss 3 — the premium paidBreakeven 108Profit keeps growingUnderlying price at expiry
Buying a call: payoff at expiry. A 105-strike call bought for 3 loses that whole 3 if the price finishes at or below 105, breaks even at 108, then gains a dollar for every dollar higher. The loss is capped at the premium; the upside is not capped.