A tax-managed equity business can tell you, accurately, with reconciled books behind it, how many dollars of losses it realized across its accounts last year. The number is large, it is auditable, and it appears in marketing material because it is true.
Ask that same business what the program was worth to one particular client, the one whose adviser is sitting across the table, and the answer changes character. It becomes a range, or a composite, or an average benefit stated in basis points, estimated on a sample of representative accounts and applied to everyone.
That gap is not evasion. I want to be careful here, because it is easy to read it as a governance failure, and it usually is not. Gross harvested losses is the only quantity in this whole business that is cheap to produce. It is a sum of realized amounts. It requires no counterfactual, no per-account modeling, no view on the client's other income. Everything downstream of it, everything that would turn it into a statement about value delivered, requires computing something about each account individually, many times, and that has genuinely been too expensive to do for everyone. It is an infrastructure problem wearing an accounting problem's clothes.
It is worth naming clearly, because the gap between the two numbers is where the after-tax alpha argument is actually being fought, and because the gap has become closable.
Wash sales, which are harder than the rule sounds
The wash-sale rule disallows a loss if you buy the same or a substantially identical security within 30 days before or 30 days after the sale. Sixty-one days, counting the trade date. The disallowed loss is not destroyed, it is added to the basis of the replacement shares, so it comes back later, which already tells you that some fraction of any harvested-loss total is a timing entry rather than a benefit.
Three things make this much harder than the sentence suggests.
The window is two-sided, so today's harvest is constrained by purchases you already made in the previous 30 days and constrains purchases for the next 30. A daily rebalance program is therefore never making an isolated decision. Every sale sits inside a rolling 61-day corridor of its own prior and future trades.
The rule follows the taxpayer, not the account. A loss harvested in a taxable brokerage account is disallowed if the client's IRA bought the same security inside the window, and in that case the loss is permanently lost rather than deferred, because there is no taxable basis to add it back to. A spouse's purchase counts. A held-away account at another custodian counts, and you probably cannot see it. Any per-account value figure that does not carry a household view is stating an upper bound and calling it a result.
Then there is the replacement problem. Harvesting only works if you can sell the loser and stay close to the benchmark, which means buying something correlated with what you just sold. The more correlated the replacement, the better the tracking, and the closer you get to "substantially identical," a phrase the statute never defines for equities beyond same-issuer cases. So every harvest carries a small position on an ambiguous legal boundary, and the safe version of that position costs tracking error. That tradeoff is per name, per day, per account. I wrote about the lot-level mechanics of this in more detail, because it is where most simplified models quietly break.
The turnover it took to get there
Harvesting is trading, and trading costs money that does not show up in the harvested-loss total.
Commissions are mostly gone. Spreads and market impact are not. A large-cap name costs a basis point or two to round-trip. The small-cap tail of a broad index, which is exactly where the dispersion lives and therefore where most harvest opportunities appear, can cost ten to fifty basis points, and a personalized account holding several hundred names transacts in that tail constantly. A program that turns over 30% of an account annually is spending real money to create a tax entry, and the honest number nets one against the other.
There is a second cost that is slower and larger. Every harvest replaces a low-value lot with a lower-basis one. Over a few years the account fills up with appreciated positions and the supply of harvestable losses runs down. The program's benefit is front-loaded and decays, which means a value figure computed in year two and applied to a client in year seven is describing a different portfolio. Any per-account number worth having is dated.
The basis you gave up
This is the one that gets skipped, and it is the largest single adjustment.
When you harvest a loss and buy a replacement, the replacement carries the lower purchase price as its cost basis. The gain you eventually recognize on that position is correspondingly larger. Most of what looks like a tax saving today is a tax you have moved to later. Harvesting is primarily a deferral engine, not a forgiveness engine, and a client who reads "we harvested $180,000 of losses for you" as "we saved you $180,000" has been allowed to misunderstand something material.
Deferral is genuinely worth something, and I do not want to talk anyone out of that. Four sources, in rough order of size.
Time value: a tax paid in twelve years is cheaper in present-value terms than the same tax paid now, and the money left invested in the meantime compounds. Rate conversion: short-term losses offset short-term gains and up to $3,000 of ordinary income per year, both taxed at ordinary rates that can exceed 40% once the net investment income tax is included, while the deferred gain is usually recognized as long-term at a materially lower rate. That spread is real money and it is not a timing effect. Terminal events: under current law, appreciated positions held until death receive a step-up in basis and the deferred gain is never taxed, and appreciated positions donated to charity avoid the gain entirely. For a client whose plan genuinely ends in one of those, deferral converts to permanent benefit. Rate risk: it can also cut the other way, since a client whose bracket rises before liquidation gives back part of the conversion.
What none of that supports is treating the gross loss as the benefit. The benefit is the present value of the deferral plus the rate conversion, minus the turnover cost, for this client's actual horizon. That is a smaller number and a much more defensible one.
The client's own rate and horizon
Two accounts with identical holdings and identical harvested losses can be worth wildly different amounts.
A client with a large existing capital loss carryforward, meaning unused losses already banked from prior years, and no realized gains this year gets close to nothing from another $50,000 of losses beyond the $3,000 ordinary offset. The losses just join the queue. A client with a private company sale closing in November, generating a gain that needs absorbing, gets full value for the same losses this year. A California resident at the top federal bracket faces a combined rate near 37% on long-term gains once state and the net investment income tax are added. A retiree in the 0% capital gains bracket faces something close to zero, and harvesting for that client may be actively destructive once turnover is counted.
Horizon does the rest. A client liquidating in three years to buy property recaptures most of the deferral almost immediately. A 45-year-old building a position they intend to hold and eventually gift keeps essentially all of it.
None of these are exotic cases. They are the ordinary spread of a book, which is precisely why an average benefit in basis points, applied uniformly, is not an answer to the question an adviser is asking.
Why nobody has produced this per account
Now the interesting part, because the reason is computational and it is specific.
Consider one account. A personalized equity portfolio held for six years holds several hundred names across a few thousand tax lots, each with its own acquisition date, basis, and holding-period status. The harvest decision is not one choice per name, it is a choice over subsets of lots. And those choices are not independent of each other, because the account has to stay within a tracking-error budget relative to its benchmark. Selling two lots with the same underlying exposure is a very different risk outcome than selling either alone, so the value of harvesting lot A depends on whether you also harvest lot B. The decisions interact, which means they cannot be made correctly one name at a time.
Layer on the couplings. Time coupling from the 61-day wash-sale corridor, which means today's decision is constrained by 30 days of history and constrains 30 days of future. Household coupling across the client's other accounts and their spouse's. Account-specific restrictions: an executive's restricted list, a values screen, a legacy concentrated position being worked down on a schedule, a charitable gifting plan that changes which lots you want to keep.
Then the part that doubles everything. Stating what harvesting was worth requires a counterfactual. You need the path the account actually took and the path it would have taken under a comparable un-harvested policy, both carried forward through the same market, with the same constraints, to the same horizon, and then valued at this client's rates. One number for one client is two full portfolio paths, not one.
Multiply that by every account, every day. The industry's response was rational: run a competent per-account heuristic for the trades, then measure value on a sample of representative accounts and extrapolate the result to everyone. That is why the reported figure is gross harvested losses. It is the one quantity that survives having no per-account compute budget, and once you understand what the latency budget actually looks like on a daily harvest cycle, the choice stops looking like laziness.
What changes when the per-account number is cheap
The constraint has moved. On a $5M direct-indexing book built on real US equity data, we captured the full $238K harvestable tax budget the account could support. I cite that as an existence proof and nothing more: computation at this granularity, per account, is now practical rather than aspirational. In a separate deadline-bounded run, 500 accounts over a 10,000-instrument universe completed in 109.5 seconds inside a declared 25-minute window with zero missed deadlines and an audit record per solve. The methodology and the result tables are in the paper, the harness is in the public evaluation repository, and the direct-indexing case is in its own evaluation repo so it can be checked without me in the room.
Three things become available when that computation runs for every account rather than a sample.
Harvest opportunities get ranked by after-tax dollars to this client instead of by size of loss. Those orderings disagree constantly. A $9,000 short-term loss in an account with a matching short-term gain this year is worth more than a $40,000 long-term loss in an account already sitting on an unusable carryforward, and a program that ranks by gross loss will do the second one first, every time.
An adviser's question about a named client becomes answerable in the meeting, from that client's own record, rather than from a composite.
And a consultant can be shown the accounts where the strategy did not add value. That last one is the single most credible thing a provider can do, and I would rank it above any headline figure. Publishing your losing cases converts a future discovery into a demonstration of self-knowledge.
The honest number is smaller, and you should publish it anyway
It will be. Net of disallowance, turnover, and basis reduction, a program reporting large gross harvested losses will report a considerably more modest client-retained figure, and for a real subset of accounts that figure will be negative.
Publish it. Buyers and consultants have spent a decade being shown tax-alpha claims they could not reproduce, and they have responded the way any rational counterparty does, by discounting all of them toward zero regardless of merit. In that environment an unverifiable large number is worth almost nothing and a verifiable smaller one is worth a great deal, because it is the only kind that survives diligence. It also unlocks a commercial conversation that a gross figure cannot support, since you can only charge on value delivered if you can compute value delivered per client.
Three questions to ask on Monday
For an allocator, a consultant, or an adviser sitting across from a provider:
- For this specific account, what was the client-retained after-tax value last year, net of wash-sale disallowance, turnover cost, and basis reduction, at this client's marginal rates and stated horizon? If the answer is a composite or an average in basis points, ask what fraction of accounts the sample covered.
- How many accounts in the book had negative client-retained value last year, and what did they have in common? A provider who has never computed this will say none, which is the wrong answer to a question about a real distribution.
- Does your wash-sale check cover the household, including held-away and retirement accounts, and what happens operationally when it finds a conflict? Ask to see the log of blocked harvests. Its absence is informative.
The reason these questions are now fair to ask, rather than unfair, is that the compute that made them unanswerable has stopped being scarce. The personalization wave in direct indexing has pushed account counts into the millions, and at that scale the provider who can state per-client value, including the cases where it was small, will be very hard to compete with on the ones where it was large. Provenance for the figures above is on our research page.
I write about optimization at production scale at Asymmetry Computing, where we build PRISM, an optimization engine for personalized portfolios, regulatory capital, and grid dispatch. This post first appeared on the Asymmetry Computing blog.