Methodology
Tax-Loss Harvesting Guardrails
Midas Edge surfaces taxable positions with unrealized losses only after applying account-type and wash-sale guardrails. The output is an informational screen, not tax advice or tax-lot optimization.
Eligibility Pipeline
The scan starts with linked investment positions, keeps only taxable account subtypes, requires a ticker and cost basis, then keeps only positions with unrealized losses.
candidate = taxable_account && ticker_present && cost_basis_present && unrealized_gain < 0 && no_wash_sale_risk
Wash-Sale Rule We Enforce
Before a loss is shown as harvestable, Midas Edge checks for buys of the same ticker within the 61-day wash-sale window: 30 days before the reference sale date, the sale date, and 30 days after. If a linked account has a matching buy in that window, the suggestion is suppressed from the tax-loss harvesting surface.
This is intentionally cross-account aware. IRA purchases are not themselves tax-loss harvest candidates, but replacement buys in IRA or other linked accounts can still matter for wash-sale warnings.
Guardrails
Known Limitations
- Midas Edge does not optimize tax lots, allocate disallowed losses, or prepare tax filings.
- Plaid transaction feeds may not expose standing buy orders, spouse accounts, or accounts outside the user's linked institutions.
- The app uses conservative suppression when current linked-account data shows wash-sale risk; users should confirm details with their brokerage and tax professional.
Source Code References
src/services/tax-loss-harvest.ts- Opportunity scan, wash-sale suppression, and substitute filterssrc/lib/account-types.ts- Account tax treatment and IRA wash-sale relevancesrc/app/api/v1/portfolio/tax-loss-harvest/route.ts- Tier-gated API response