How deep should a loss be before a single lot is harvested, once the wash-sale blackout is priced as a cost?
Read the paper on SSRN ↗ CiteKey results
- Under arithmetic Brownian motion the threshold splits into a break-even depth of 0.007 and a wait premium of 0.632 at zero drift and 0.20 volatility.
- Under mean reversion the once-and-done harvest depth runs from 13 to 33 percent of drawdown and rises with volatility.
- Two independent numerical methods put the base-case depth at 0.218 and 0.216 at reversion speed 0.70 and volatility 0.20.
- Harvest-on-any-loss yields 0.00174 per $1 of basis in the well specified world, while the best static threshold yields 0.02201.
- The signature policy beats harvest-on-any-loss by over 1,100 percent in every process without estimating the price model.
Summary
Why the timing question was left open
Most research on tax-loss harvesting measures how much loss a portfolio can bank and what that loss is worth. The rule for pulling the trigger is usually assumed: sell whenever a lot is under water, or under water by some fixed amount. This working paper turns that assumption into the question. A taxable investor holding a losing lot owns an option to convert a paper loss into a realized deduction, and an option has a best time to exercise.
The trade-off is easy to state. Sell a lot down 3% and you lock in a 3% loss for certain. Hold it and the loss may deepen to 10%, which shelters more than three times as much gain, or the price may recover and the option expires worthless. Selling also has a consequence. Under Section 1091 the loss is disallowed if a substantially identical security is bought within 30 days on either side of the sale, so an investor who wants to stay invested holds an imperfect substitute through the blackout, and that substitute costs something to trade into and out of.
The harvest as a stopping problem
We model a single lot's log-price relative to its cost basis as a diffusion. Harvesting stops the process. It pays the durable tax value of the loss and charges the substitution cost of the blackout. Holding the lot carries a value that solves a variational inequality, and the free boundary of that inequality is the harvest rule.
If the loss depth follows arithmetic Brownian motion, the boundary has a closed form, and it comes apart into two pieces. The first is a break-even depth, the cost-to-benefit ratio c/g: the loss needed just to pay for the round trip. The second, a wait premium, is what the investor holds out for beyond that. Table 1 shows the split at a base tax value of g=0.15 and a cost of c=0.00105. Break-even is 0.007 in every row. Tiny. With zero drift and volatility of 0.20 the wait premium is 0.632, which puts the threshold at 0.639, while a drift of -0.20 cuts the premium to 0.098 and the threshold to 0.105. Figure 1 plots the threshold against volatility, and the break-even depth shows up as a dashed line hugging the floor.
We found that table uncomfortable. Without mean reversion, a patient investor in the model would sit through losses far deeper than anyone would tolerate. Reversion keeps the threshold finite and moderate; trading cost and impatience have little to do with it.
What mean reversion does to the boundary
Let the price revert toward a long-run level, as in an Ornstein-Uhlenbeck process, and the closed form disappears. We had to solve for the boundary numerically. Because a single numerical answer is easy to get wrong, we solved it twice, once with a projected finite-difference sweep and once with a binomial dynamic program, and compared.
Figure 2 lays the two value functions over the harvest payoff; they sit almost on top of each other. Table 2 gives the harvest depth for each pairing of reversion speed and volatility. At a speed of 0.70 and volatility of 0.20, the finite-difference answer is 0.218 and the binomial one 0.216. Where do they part company? At high volatility with slow reversion, where the boundary lies far from basis and the binomial grid is coarse: 0.353 against 0.434. Both still show the depth rising with volatility.
So how deep is deep? Across the parameters we study, a lot sold once and never again should wait for a drawdown of 13 to 33 percent, about a quarter at plausible values. Production direct-indexing programs pull the trigger far earlier. We think re-harvesting explains most of that gap. Our lot is sold once. A program that can harvest the substitute, then harvest the original again later, turns one deep option into many shallow ones and has good reason to act on small dips.
A rule that does not need the model
The exact boundary requires a price model with estimated parameters. We also test a model-light policy that reads the recent path through low-order lead-lag signature features, which summarize how deep the loss is and how it has been moving, and harvests at a fitted threshold. Figure 3 shows three simulated lots over three years, with markers for where each of the paper's rules would sell.
Table 3 reports expected discounted tax value per $1 of basis across 5,000 paths and a 6-year horizon under three data-generating processes. Harvest-on-any-loss yields 0.00174 in the well specified world. The best static threshold yields 0.02201 and the exact boundary 0.02016. Under stochastic volatility the static rule yields 0.02331 and the exact boundary 0.02314. With jumps the exact boundary comes in at 0.03657. Figure 4 draws the four policies side by side. The signature policy beats naive harvest-on-any-loss by over 1,100 percent in every process. It ties the tuned static rule when the world is stationary and pulls a little ahead under persistent stochastic volatility.
What we take from it
Most of the achievable value in the model comes from discipline. A lot's harvest is spent once, and spending it on the first trivial dip forfeits nearly all of the value a deep threshold would have captured. The model's contribution is to say how deep that threshold is and how it moves when volatility moves. One question remains open. Once a lot can be harvested more than once, the deep single-lot boundary here would connect to the shallow, high-frequency rules that direct-indexing runs in practice. All results reproduce from simulation under a fixed seed, 20260804.
Who this is for: Investors, CPAs and tax professionals, researchers and quants, journalists, and policy staff who want to know why a harvest trigger belongs deep and what the wash-sale blackout has to do with it.
Tables
| s | μ | r | break-even c/g | wait premium 1/α | threshold y* |
|---|---|---|---|---|---|
| 0.20 | 0.00 | 0.05 | 0.007 | 0.632 | 0.639 |
| 0.20 | -0.10 | 0.05 | 0.007 | 0.183 | 0.190 |
| 0.20 | -0.20 | 0.05 | 0.007 | 0.098 | 0.105 |
| 0.30 | 0.00 | 0.05 | 0.007 | 0.949 | 0.956 |
| 0.30 | -0.10 | 0.05 | 0.007 | 0.378 | 0.385 |
| 0.30 | -0.20 | 0.05 | 0.007 | 0.214 | 0.221 |
| 0.40 | -0.10 | 0.03 | 0.007 | 0.667 | 0.674 |
| 0.40 | -0.10 | 0.05 | 0.007 | 0.613 | 0.620 |
| 0.40 | -0.20 | 0.05 | 0.007 | 0.366 | 0.373 |
| κ | σ | depth (finite diff) | depth (binomial DP) |
|---|---|---|---|
| 0.70 | 0.20 | 0.218 | 0.216 |
| 0.70 | 0.30 | 0.287 | 0.314 |
| 0.70 | 0.45 | 0.353 | 0.434 |
| 1.386 | 0.20 | 0.176 | 0.171 |
| 1.386 | 0.30 | 0.254 | 0.258 |
| 1.386 | 0.45 | 0.312 | 0.367 |
| 3.00 | 0.20 | 0.129 | 0.125 |
| 3.00 | 0.30 | 0.204 | 0.197 |
| 3.00 | 0.45 | 0.279 | 0.290 |
| policy | well specified | stochastic vol | jumps |
|---|---|---|---|
| harvest-on-any-loss | 0.00174 (0.00002) | 0.00174 (0.00002) | 0.00235 (0.00004) |
| best static threshold | 0.02201 (0.00017) | 0.02331 (0.00016) | 0.03115 (0.00004) |
| exact OU boundary | 0.02016 (0.00023) | 0.02314 (0.00022) | 0.03657 (0.00005) |
| signature policy | 0.02172 (0.00015) | 0.02350 (0.00018) | 0.03061 (0.00008) |
Abstract
Most treatments of tax-loss harvesting ask how much loss a portfolio can bank and what it is worth, and say little about when a given lot should be sold. The timing is itself an optimization: harvest a shallow loss today for a small, certain benefit, or wait for a deeper loss that pays more but may never arrive, knowing that selling starts a 30-day wash-sale blackout during which the identical security cannot be repurchased without a substitution cost.
We formulate the per-lot harvest decision as an optimal-stopping problem. The lot's log-price relative to basis follows a diffusion; stopping pays the durable tax value of the realized loss and charges the blackout's substitution cost; the value function solves a variational inequality with a free harvest boundary. For an arithmetic-Brownian loss we derive a closed-form threshold by smooth pasting, y* = c/g + 1/alpha, splitting into a break-even depth (the cost-to-benefit ratio) and a wait premium. Without mean reversion a patient investor should wait for implausibly deep losses, so reversion, not impatience, sets a finite threshold.
Under a mean-reverting Ornstein-Uhlenbeck price the free boundary is solved two independent ways, a projected finite-difference sweep and a binomial dynamic program, agreeing to a third of a percentage point of depth. The optimal once-and-done threshold is deep (13 to 33 percent of drawdown), rises with volatility, and exceeds production direct-indexing triggers, a gap we trace to the absence of re-harvesting.
A model-light policy then reads the recent path through low-order lead-lag signature features (depth, momentum, realized variance) and harvests at a fitted threshold. It beats naive harvest-on-any-loss by over 1,100 percent everywhere, ties a well-tuned static rule when the world is stationary, and edges ahead under persistent stochastic volatility, without needing the model. All results reproduce from simulation under a fixed seed.
Keywords: tax-loss harvesting, optimal stopping, wash sale, free boundary, smooth pasting, path signatures, lead-lag transform, after-tax investing, direct indexing, tax-timing option
How to cite
Majumdar, A. (2026). When to Harvest: Tax-Loss Harvesting as Optimal Stopping under Wash-Sale Blackouts. SSRN Working Paper No. 7444599. https://ssrn.com/abstract=7444599
@techreport{majumdar_harvest_optimal_stopping_wash_sale,
author={Majumdar, Anirban},
title={When to Harvest: Tax-Loss Harvesting as Optimal Stopping under Wash-Sale Blackouts},
institution={SSRN},
number={7444599},
year={2026},
url={https://ssrn.com/abstract=7444599}}