I hunt for gains, but I also focus on the messy, underappreciated side of investing: taxes. Over the years I’ve used tax-loss harvesting (TLH) as a pragmatic tool to reduce tax drag in taxable accounts. Doing it well across multiple taxable accounts — and when you’re rotating into similar ETFs rather than identical ones — requires clear rules, careful record-keeping, and a dose of common sense. Below I walk through how I harvest losses like a pro, what replacements I choose, where the wash-sale danger actually lives, and the practical steps and trade-offs I consider.
What tax-loss harvesting actually does
At its core, TLH is simple: you sell a losing position in a taxable account, realize a capital loss, and then either (a) buy a replacement investment that maintains your market exposure or (b) wait 31+ days to re-establish the same position to avoid the wash-sale rule. The realized loss can offset capital gains and up to $3,000 of ordinary income per year, with any excess carried forward indefinitely.
The wash-sale rule — what I always keep front of mind
The wash-sale rule disallows a loss if you (or your spouse or a company you control) buy “substantially identical” securities within 30 days before or after the sale. The IRS doesn’t define “substantially identical” precisely, which creates ambiguity — and my approach is conservative but practical.
- Same security: Selling SPY and repurchasing SPY within 30 days is a clear wash-sale.
- Same fund family but different share classes: Selling VOO and buying IVV is risky because they track the same index and are functionally identical; many advisors treat that as a potential wash-sale.
- Different ETFs tracking the same index (different providers): This is gray. Institutions often avoid replacements that track the exact same index. I prefer replacements that provide similar exposure but are not substantially identical by strategy or index.
- Across accounts: Wash-sale applies across all taxable accounts and also between taxable accounts and IRAs/ROTH IRAs. If you sell a loss in a taxable account and a traditional IRA buys the same or substantially identical security within 30 days, the loss is disallowed — a common gotcha.
How I choose similar ETF replacements
My goal when replacing a sold ETF is to maintain market exposure and risk characteristics while avoiding the wash-sale rule. I use three pragmatic approaches depending on the asset class:
- Different index, same exposure theme: If I sell an S&P 500 fund to capture a loss, I’ll often buy a total-market ETF that doesn’t track the S&P 500 exactly (e.g., VTI vs VOO). They’re highly correlated but not technically identical.
- Different provider, different index or construction: Instead of switching from VOO to IVV (same index), I might buy a large-cap ETF that tracks a slightly different large-cap blend (e.g., SCHX for Schwab US Large-Cap vs VOO). This keeps exposure similar without mirroring the exact index.
- Factor-tilt or broadening: For sector or factor ETFs, replace with a broad version plus a small sector sleeve. For example, sell a small-cap value ETF and buy a broader small-cap ETF or a small-cap index with a different weighting scheme.
These substitutions create a small tracking error, which is acceptable to me in exchange for capturing the tax benefit. I avoid replacements that would meaningfully alter my intended long-term exposures.
Practical replacement examples
| Sold | Replacement I might use | Why |
|---|---|---|
| VOO (S&P 500) | VTI (Total US Market) or SCHX (Schwab US Large-Cap) | Maintains large-cap US exposure with different index construction |
| IEFA (Developed ex-US) | EFA (MSCI EAFE) or VEA | Similar international exposure; choose different index provider or regional weighting |
| IWM (Russell 2000) | VB (Vanguard Small-Cap) or IJR | Small-cap exposure with different index methodology |
| Sector ETF (e.g., XLF financials) | Broad financial index or equal-weight financial ETF | Keeps the sector tilt but with distinct construction |
Timing: opportunistic vs systematic harvesting
I use a mixed cadence:
- Systematic (year-round): I monitor tax lots continuously and harvest material losses when they reasonably align with my asset allocation. Modern broker tools or portfolio managers can surface tax-loss candidates, and I’ll act when the expected tax benefit outweighs transaction costs and tracking error.
- Year-end sweep: In November/December I do a comprehensive review to capture remaining unrealized losses and lock in tax benefits before year-end trades and index rebalances. This is where many retail investors capture the largest marginal benefits.
- Event-driven: If a tax-loss trade also improves my portfolio (e.g., trimming a position that’s become oversized), I prioritize harvesting.
Record-keeping and reporting
Precise records are non-negotiable. I track lot-level cost basis, trade dates, wash-sale flags, and any adjustments that result from disallowed losses. Software and broker tools help, but I also keep a local spreadsheet with:
- Ticker, broker, lot acquisition date and cost basis
- Sale date, proceeds, realized loss
- Replacement security and any 30-day activity affecting the loss
When a wash-sale is triggered, brokers typically report it on Form 1099-B by adjusting the disallowed loss to the replacement’s basis. Ultimately the numbers flow to Form 8949 and Schedule D — but you’re responsible for ensuring the broker’s reporting matches your records.
Common pitfalls and how I avoid them
- Triggering a wash-sale with an IRA: Don’t buy the same or substantially identical security in any IRA within 30 days. I avoid buying replacements in IRAs during that period.
- Overtrading for small benefits: If the expected tax savings are small relative to commissions/spread/short-term tracking error, I skip the trade.
- Dividend timing: Buying a replacement right before a distribution can create short-term drag. I consider ex-dividend dates when executing replacements.
- Ignoring turnover and costs: TLH works best when trading costs are low. I favor low-cost brokers with tight spreads (e.g., Vanguard, Schwab, Fidelity) for frequent TLH.
How I handle married-filing-jointly and multiple brokers
Wash-sale rules apply across both spouses and across all brokers. If my spouse or I transact in similar securities, we coordinate. With multiple brokers, I maintain a central ledger and run cross-account checks before executing harvests. When in doubt, I err toward a replacement that’s intentionally different to avoid disallowance.
When to involve a tax pro
If you’re harvesting large losses, have substantial activity across multiple brokers and IRAs, or are unsure about “substantially identical” definitions for complex ETFs, I recommend consulting a CPA or tax attorney. The IRS has limited guidance, and a professional can help you apply conservative interpretations that won’t get you into trouble later.
Tax-loss harvesting is a high-value, low-glamour tool. Done thoughtfully — with careful replacement choices, cross-account awareness, and clean record-keeping — it meaningfully reduces tax drag without altering your long-term investment plan. My approach has always been pragmatic: prioritize economic benefit, avoid unnecessary risk of disallowed losses, and keep the process repeatable and auditable.