Tax gain harvesting is taking LTCG at the 0% (or 15%) rate (and re-setting the basis) in order to avoid being taxed at the 15% or 25% on gains later. It's similar in some ways to Roth Conversions, in that it trades lower tax rates now for higher rates later, but of course is also different.
A common situation where this might happen is when you have "headroom" under the 15% bracket, where you can either use the space to convert and/or gain harvest. (The brackets are similar.) I've seen it recommended in the literature, for instance to "first gain harvest up to the top of the 0% since that's a net 15% plus, and then use any remaining space for roth conversions."
Now that Pralana has detailed Scheduled Withdrawals, I'm wondering how tax gain harvesting could be modeled in the simplest way? Can it be done with existing features or does it requires new feature the community can vote on, such as a Gain Analysis (similar to Roth conversion)?
Could the new potential feature suggestion "Enhanced LTCG Withdrawal Strategy: Allow user to specify the % of LTCG to withdraw, by user defined time periods. [FB 1262]" be used for tax-gain modeling?
Thinking out loud:
a) You could use Scheduled Withdrawals, but you would need to carefully review the tax forms, etc and determine the LTCG headroom each year and individually enter the scheduled withdrawal amount from the taxable account. This would seem to be tedious and if you changed pretty much any input that affected the taxable account balance or growth or taxable income, the amount would be come invalid.
b) I thought about an automated Scheduled Withdrawal enhancement...but scheduled withdrawals are applied before the tax calculations because the withdrawals can of course trigger taxable events.
c) If we added a "LTCG Harvesting" feature that would allow you to specify a target LTCG bracket (like Roth conversion) and you had say $15K of LTCG bracket headroom in some year, you better make sure you have your LTCG withdrawal strategy as "Withdraw LTCG first"!!! Otherwise, you risk draining the entire taxable account to get to that $15K. (We would probably force 'Withdraw LTCG first' for this reason).
d) An LTCG Harvesting feature would likely need to be an iterative algorithm to find the withdrawal amount that would yield the target realized LTCG amount. That implies we would have to calc all the taxes, get the LTCG headroom, make the withdrawal. But making the withdrawal alters tax expense and net cash flow for the year, potentially decreasing an unscheduled IRA withdrawal (for example) or altering a Roth Conversion amount which will, in turn, alter the LTCG headroom. Certainly if there was an unscheduled withdrawal from the taxable account, the harvest withdrawal would reduce or eliminate the unscheduled withdrawal, altering the taxes and LTCG headroom.
FYI, the big hold up on same-year taxation of unscheduled withdrawals is that it requires iterative calc of taxes/net cash flow/unscheduled withdrawal/repeat. But so does the Roth Conversion algorithm. I have not yet been able to make these (currently nested) iterations cooperate and am pretty sure the solution will be a single iteration that solves for both. Adding a LTCG Harvesting feature on top of these other two algorithms would be quite the challenge. It may be that solving for an ordinary income bracket (R/C) and LTCG Harvest bracket would be incompatible.
@cstone Everything you say here makes sense. I had assumed there was already some degree of iteration for Pralana's Roth conversions, but reading your comments those do seem a lot simpler, and I get it, and I agree. From what I gather there is a sweet spot of harvesting+conversions in a given year for people in low brackets; but I don't think any existing program (including the fancy ones FAs use) find it. I do wonder how Maxifi that relies on iterative routines ("linear programming") for their entire machinery run so quickly. Consumptions smoothing uses iteration, but who wants to wait that long every time you change anything.
A stumbling block with option-a (using scheduled withdrawals) is the current pulldowns don't allow transfer from a Taxable account to another Taxable account (let alone one with stepped up basis). I wonder if it's worth adding the option for Scheduled Withdrawals "Taxable to Taxable" in the pulldown? I believe "Taxable to Cash" withdrawals just sends anything above the cash floor right back into taxable accounts without changing the unrealized taxable gain/basis?
If I already did a substantial amount of gain harvesting in 2025, resulting in a tax liability (but minimal change to the total balance), what is the best way to model this? My current approach is to enter the amount twice: on the income side, as "other income" taxable as gains, and on the expense side, as "miscellaneous expense" (to "cancel out" the income, leaving only the tax impact). Is this the right way to do it?
If I already did a substantial amount of gain harvesting in 2025, resulting in a tax liability (but minimal change to the total balance), what is the best way to model this? My current approach is to enter the amount twice: on the income side, as "other income" taxable as gains, and on the expense side, as "miscellaneous expense" (to "cancel out" the income, leaving only the tax impact). Is this the right way to do it?
If I already did a substantial amount of gain harvesting in 2025, resulting in a tax liability (but minimal change to the total balance), what is the best way to model this? My current approach is to enter the amount twice: on the income side, as "other income" taxable as gains, and on the expense side, as "miscellaneous expense" (to "cancel out" the income, leaving only the tax impact). Is this the right way to do it?
That captures the taxation and total asset correctly I think. But does that step up the basis (found on review>tabular>taxes>unrealized LTCG in taxable account)?