Help · Knowledge base · Market structure
Wash-sale rule
Wash-sale rule
Definition
The wash-sale rule (IRC §1091; IRS Pub 550) DEFERS a realized loss for tax purposes when the same or a “substantially identical” security is acquired within 30 days BEFORE or AFTER the loss sale — a 61-day window. The disallowed loss is added to the replacement position’s cost basis (deferred, not destroyed — except in one notorious IRA case). Facts, never advice: active strategies that re-enter positions routinely trigger it, so the engine tracks the window mechanically.
How it works / structure
- The trigger mechanics (engine-executable): loss sale
- acquisition of substantially identical securities within ±30 days = disallowed loss; the replacement’s basis absorbs the loss and its holding period tacks — the tax benefit moves to the future sale. Partial repurchases disallow proportionally; the rule matches lot-by-lot.
- “Substantially identical” (the judgment boundary): the same stock or options ON the same stock qualify (buying a call within the window of a stock loss triggers it — Pub 550 is explicit); different companies do not; similar-but-different ETFs (two S&P 500 funds from different issuers) sit in undefined territory the IRS has not ruled on precisely — the platform flags, tracks both interpretations, and never asserts the aggressive one.
- The traps with teeth: replacement INSIDE an IRA
permanently destroys the loss (Rev. Rul. 2008-5 — no
basis anywhere to absorb it); cross-account matching
applies (spouse accounts included); year-boundary washes
(December loss, January repurchase) defer losses across
tax years; short-sale and options-assignment interactions
compound the matching (
acct-assignment-tax). - The exemption: §1256 contracts (futures, broad-based
index options) are mark-to-market and outside the rule
(
acct-section-1256) — one documented structural reason active strategies live in futures.
When it applies
Every taxable account running re-entry strategies (stop-outs
with re-entries — mgmt-stop-loss cadences collide with the
window; rebalancing sells — port-rebalancing); December
loss-harvesting mechanics (the disposition effect’s annual
inversion — bias-disposition-effect); options books on
names with stock losses (the cross-instrument trigger). The
engine computes windows; humans and agents receive flags,
not advice.
Risk profile & failure modes
- Silent basis migration: unnoticed washes reshape after-tax results away from reported P&L — replay-vs-tax divergence the accounting layer must reconcile.
- The IRA destruction case: the one configuration where the loss is gone forever — flagged at maximum severity.
- Aggressive-substitution audits: “identical exposure, different ticker” harvesting strategies carry undefined- boundary risk — the platform labels the uncertainty rather than resolving it.
- Strategy-cadence collisions: any system that re-enters within 30 days converts every losing exit into a wash — after-tax replay differs from pre-tax replay by construction; both are computed.
Evidence & limits
The statute and Pub 550 are primary sources (cited); Rev. Rul. 2008-5 covers the IRA case. The substantially- identical boundary for similar ETFs is genuinely unsettled — stated as such. Nothing here is tax advice; the platform computes mechanical flags and defers judgment calls to the user’s tax professional by design.
Falsifiable-thesis examples
Illustrations only, not signals:
- “This strategy’s replay generates wash-sale flags on more than 20% of its losing exits (cadence-collision audit)” — falsified by the flag count.
- “After-tax replay (wash-adjusted) trails pre-tax replay by more than 1% annualized for this account (divergence measurement)” — falsified by the paired accounting.
Cross-references
- The options/assignment interactions:
acct-assignment-tax - The exemption zone:
acct-section-1256 - The account-boundary facts:
acct-account-types(IRA case) - The colliding behaviors:
mgmt-stop-loss(re-entries),port-rebalancing,bias-disposition-effect(December harvesting)
The agent cites this page.
Inside the platform, this entry is live context. A signed-in citation opens the in-app view of the same id.