DM
Decentralized Masters
Module 2 — Dividend Tier & Location →
Stock Program
Phase A Advanced · Module 1 · Videos 1.1–1.3

Harvest & Rotation Planner

Log every position you review. The planner flags harvest candidates automatically, then builds a rotation pair for each one so you can clear the wash-sale window cleanly.

Tax loss harvesting
61-day wash-sale window
3-question clean-pair test
How to use this planner Open / close
Step 1 — Harvest Planner
  • Log every position you review: ticker, account type, purchase date, cost basis and current value.
  • Set your loss threshold up top. Default is 5%.
  • The Flag column tells you: HARVEST CANDIDATE, Approaching 365-day line, Loss (not a taxable account), or Gain — hold / watch.
Step 2 — Rotation Pair Map
  • One rotation card appears per harvest candidate, automatically. Position, account and loss are pulled from the planner — you can't type in them.
  • Add what you'll buy, answer the three clean-pair questions, and record the date you sold.
  • Day 31 (earliest rebuy) calculates itself. Log your Day-31 decision.
Reminders
  • Tax loss harvesting works in TAXABLE accounts only — never IRAs, Roths or 401(k)s.
  • The wash-sale window is 61 days (30 before, day of, 30 after) and spans every household account.
  • Pause any DRIP on a security before you harvest it.
  • All three answers "Yes" = CLEAN. Any "No" = RECHECK — wash-sale risk or an unwanted tactical bet.
Total harvestable loss
{{ sumHarvestable }}
Taxable, past threshold
Harvest candidates
{{ countCandidates }}
Rows flagged for action
Short-term gains logged
{{ sumShortGains }}
Unrealized, held ≤ 365 days
Clean pairs
{{ cleanSummary }}
Next Day-31: {{ nextDay31 }}
Section 1

Harvest Planner

%
Today: {{ todayLabel }} · Cream fields are yours to fill. Everything else calculates.
Position / Ticker
Account Type
Purchase Date
Cost Basis ($)
Current Value ($)
Days Held
Holding Type
Days to LT
Unrealized ($)
Unrealized (%)
Status
Flag / Action
{{ row.daysHeld }}
{{ row.holdingType }}
{{ row.daysToLT }}
{{ row.unrealDollar }}
{{ row.unrealPct }}
{{ row.status }}
{{ row.flag }}
Days held{{ row.daysHeld }}
Holding type{{ row.holdingType }}
Days to LT{{ row.daysToLT }}
Status{{ row.status }}
Unrealized ${{ row.unrealDollar }}
Unrealized %{{ row.unrealPct }}
{{ row.flag }}
Section 2

Rotation Pair Map

One card per harvest candidate, live. Position, account and loss are pulled from the planner above and are read-only. If a price bounce pulls a position off the candidate list, your typed rotation data is kept against that ticker and returns with it.

Position A — Selling
{{ card.ticker }}
Loss harvested
{{ card.lossLabel }}
Account (pulled)
{{ card.account }}
The 3-question clean-pair test
Different index?
Different fund family / issuer?
Willing to hold B for 31 days?
{{ card.cleanText }}
Day 31 — earliest rebuy
{{ card.day31 }}
No harvest candidates yet

A rotation card appears here the moment a taxable position shows a loss at or past your {{ thresholdLabel }} threshold.

Compliance

This tool is for educational purposes only and does not constitute tax, financial, or legal advice. Tax loss harvesting applies to taxable brokerage accounts only. Tax rules referenced reflect US federal law and are subject to change; state treatment varies. Figures and flags are illustrative — always consult a qualified tax professional before executing any transaction.

"Substantially identical" is a legal determination under IRC §1091. All entries stay in your browser and are never transmitted to or stored by Decentralized Masters. Use "Clear all data" to remove them.