@retiregolden/planner-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +181 -0
- package/package.json +77 -0
- package/src/App.tsx +246 -0
- package/src/RouteErrorBoundary.tsx +45 -0
- package/src/assets/hero.png +0 -0
- package/src/assets/react.svg +1 -0
- package/src/assets/vite.svg +1 -0
- package/src/data/fedInvestClient.ts +113 -0
- package/src/data/localStore.ts +42 -0
- package/src/data/planOrigin.ts +24 -0
- package/src/data/planStore.ts +165 -0
- package/src/data/v2Backup.ts +101 -0
- package/src/import/ImportPage.tsx +347 -0
- package/src/import/ReviewChecklistView.tsx +38 -0
- package/src/import/brokerCsv.ts +395 -0
- package/src/import/csv.ts +133 -0
- package/src/import/genericCsv.ts +224 -0
- package/src/import/projectionLab.ts +350 -0
- package/src/import/reviewChecklist.ts +33 -0
- package/src/import/tenForty.ts +275 -0
- package/src/index.css +630 -0
- package/src/index.ts +16 -0
- package/src/learn/ArticleBody.tsx +78 -0
- package/src/learn/ArticlePage.tsx +57 -0
- package/src/learn/GlossaryPage.tsx +33 -0
- package/src/learn/LearnAboutScreen.tsx +41 -0
- package/src/learn/LearnCards.tsx +41 -0
- package/src/learn/LearnLink.tsx +91 -0
- package/src/learn/LearningCenterPage.tsx +114 -0
- package/src/learn/SourcesPage.tsx +98 -0
- package/src/learn/components/ArticleFigure.tsx +34 -0
- package/src/learn/components/ArticleShell.tsx +86 -0
- package/src/learn/components/ComparisonTable.tsx +42 -0
- package/src/learn/components/FormulaBlock.tsx +34 -0
- package/src/learn/components/PurchasingPowerChart.tsx +41 -0
- package/src/learn/components/RelatedArticles.tsx +27 -0
- package/src/learn/components/ScenarioCard.tsx +24 -0
- package/src/learn/components/SourceList.tsx +23 -0
- package/src/learn/components/charts.tsx +21 -0
- package/src/learn/content/about-retiregolden.ts +100 -0
- package/src/learn/content/aca-premium-tax-credits-and-magi.ts +103 -0
- package/src/learn/content/account-types-overview.ts +106 -0
- package/src/learn/content/after-tax-estate.ts +111 -0
- package/src/learn/content/agi-magi-and-taxable-income.ts +112 -0
- package/src/learn/content/appealing-irmaa-ssa-44.ts +95 -0
- package/src/learn/content/assumption-general-inflation.ts +82 -0
- package/src/learn/content/assumption-healthcare-inflation.ts +85 -0
- package/src/learn/content/assumption-heir-tax-rate.ts +79 -0
- package/src/learn/content/assumption-investment-returns.ts +90 -0
- package/src/learn/content/assumption-longevity-planning-age.ts +78 -0
- package/src/learn/content/assumption-recent-magi.ts +83 -0
- package/src/learn/content/assumption-social-security-cola.ts +89 -0
- package/src/learn/content/assumption-social-security-trust-fund.ts +83 -0
- package/src/learn/content/assumption-state-tax-override.ts +79 -0
- package/src/learn/content/beneficiaries-and-account-titling.ts +99 -0
- package/src/learn/content/break-even-useful-lens.ts +94 -0
- package/src/learn/content/building-a-retirement-spending-budget.ts +100 -0
- package/src/learn/content/cola-and-inflation-protection.ts +102 -0
- package/src/learn/content/divorced-spousal-and-survivor-records.ts +104 -0
- package/src/learn/content/dynamic-spending-guardrails.ts +90 -0
- package/src/learn/content/earnings-test-before-fra.ts +100 -0
- package/src/learn/content/employer-match-and-contribution-order.ts +104 -0
- package/src/learn/content/examplePlanArticles.ts +525 -0
- package/src/learn/content/fees-expense-ratios-and-compounding-drag.ts +98 -0
- package/src/learn/content/fi-number-and-four-percent-rule.ts +64 -0
- package/src/learn/content/filling-a-tax-bracket-with-roth-conversions.ts +98 -0
- package/src/learn/content/funded-ratio.ts +70 -0
- package/src/learn/content/healthcare-after-65.ts +103 -0
- package/src/learn/content/healthcare-before-65.ts +104 -0
- package/src/learn/content/historical-vs-random-return-models.ts +101 -0
- package/src/learn/content/how-assumptions-change-the-answer.ts +105 -0
- package/src/learn/content/how-much-can-i-spend.ts +105 -0
- package/src/learn/content/how-social-security-is-taxed.ts +95 -0
- package/src/learn/content/how-the-optimizer-thinks.ts +102 -0
- package/src/learn/content/how-the-optimizer-values-after-tax-estate.ts +97 -0
- package/src/learn/content/how-to-model-accumulation.ts +67 -0
- package/src/learn/content/how-to-read-a-retirement-projection.ts +115 -0
- package/src/learn/content/hsas-and-qualified-medical-expenses.ts +108 -0
- package/src/learn/content/hsas-as-retirement-accounts.ts +101 -0
- package/src/learn/content/inflation-risk.ts +98 -0
- package/src/learn/content/inherited-ira-10-year-rule.ts +105 -0
- package/src/learn/content/insurance-in-your-retirement-plan.ts +103 -0
- package/src/learn/content/irmaa-two-year-lookback.ts +99 -0
- package/src/learn/content/long-term-care-costs-and-insurance.ts +103 -0
- package/src/learn/content/long-term-care-insurance-as-risk-transfer.ts +98 -0
- package/src/learn/content/longevity-risk.ts +99 -0
- package/src/learn/content/marginal-vs-effective-tax-rate.ts +98 -0
- package/src/learn/content/medicare-part-b-vs-part-d-irmaa.ts +102 -0
- package/src/learn/content/mortality-weighted-social-security.ts +113 -0
- package/src/learn/content/moving-to-retiregolden.ts +86 -0
- package/src/learn/content/niit-high-income-investment-tax.ts +98 -0
- package/src/learn/content/ordinary-income-vs-capital-gains.ts +103 -0
- package/src/learn/content/paying-conversion-taxes-taxable-vs-ira.ts +102 -0
- package/src/learn/content/pensions-and-annuities.ts +101 -0
- package/src/learn/content/permanent-life-insurance-in-a-plan.ts +106 -0
- package/src/learn/content/pia-aime-and-bend-points.ts +103 -0
- package/src/learn/content/planner-overview.ts +106 -0
- package/src/learn/content/planning-for-couples-and-survivor-years.ts +108 -0
- package/src/learn/content/privacy-what-stays-in-your-browser.ts +99 -0
- package/src/learn/content/qcds-qualified-charitable-distributions.ts +101 -0
- package/src/learn/content/reading-the-results-page.ts +96 -0
- package/src/learn/content/reading-the-social-security-analysis-page.ts +106 -0
- package/src/learn/content/real-estate-home-equity-and-debt.ts +100 -0
- package/src/learn/content/reports-csv-exports-and-sharing.ts +101 -0
- package/src/learn/content/risk-based-guardrails.ts +100 -0
- package/src/learn/content/rmds-required-minimum-distributions.ts +100 -0
- package/src/learn/content/roth-conversion-basics.ts +104 -0
- package/src/learn/content/rsus-and-espp.ts +101 -0
- package/src/learn/content/rule-of-55-and-72t.ts +107 -0
- package/src/learn/content/savings-rate-biggest-lever.ts +66 -0
- package/src/learn/content/seed-your-plan-from-your-tax-return.ts +93 -0
- package/src/learn/content/sensitivity-testing-what-changes-the-answer.ts +104 -0
- package/src/learn/content/sequence-of-returns-risk.ts +98 -0
- package/src/learn/content/social-security-bridge.ts +67 -0
- package/src/learn/content/social-security-claiming-age-basics.ts +113 -0
- package/src/learn/content/social-security-taxes-vs-benefits.ts +76 -0
- package/src/learn/content/spending-profiles-and-the-retirement-smile.ts +92 -0
- package/src/learn/content/spousal-and-survivor-benefits.ts +120 -0
- package/src/learn/content/ssdi-and-retirement-planning.ts +72 -0
- package/src/learn/content/standard-deduction-senior-deduction-and-itemizing.ts +97 -0
- package/src/learn/content/state-income-taxes-in-retirement.ts +97 -0
- package/src/learn/content/step-up-in-basis.ts +102 -0
- package/src/learn/content/survivor-planning-for-couples.ts +110 -0
- package/src/learn/content/survivor-spending-in-couple-plans.ts +98 -0
- package/src/learn/content/tax-cliffs-and-bracket-edges.ts +105 -0
- package/src/learn/content/tax-loss-and-gain-harvesting.ts +99 -0
- package/src/learn/content/taxable-brokerage-basis-and-capital-gains.ts +99 -0
- package/src/learn/content/three-big-questions-spending-time-risk.ts +103 -0
- package/src/learn/content/tips-ladders.ts +92 -0
- package/src/learn/content/todays-dollars-vs-future-dollars.ts +107 -0
- package/src/learn/content/traditional-vs-roth-contributions.ts +113 -0
- package/src/learn/content/troubleshooting-surprising-results.ts +105 -0
- package/src/learn/content/trust-fund-haircut-scenarios.ts +101 -0
- package/src/learn/content/understanding-monte-carlo-success-rate.ts +118 -0
- package/src/learn/content/understanding-your-plan-assumptions.ts +134 -0
- package/src/learn/content/using-assumptions-and-provenance.ts +98 -0
- package/src/learn/content/using-scenarios-to-compare-choices.ts +99 -0
- package/src/learn/content/what-changes-when-you-move-states.ts +141 -0
- package/src/learn/content/what-is-fire.ts +65 -0
- package/src/learn/content/what-monte-carlo-proves.ts +98 -0
- package/src/learn/content/what-retiregolden-models.ts +103 -0
- package/src/learn/content/what-retirement-healthcare-really-costs.ts +117 -0
- package/src/learn/content/why-95-percent-is-not-a-guarantee.ts +98 -0
- package/src/learn/content/why-roth-conversions-raise-other-costs.ts +106 -0
- package/src/learn/content/why-small-tax-cliffs-can-matter.ts +109 -0
- package/src/learn/content/widows-penalty-and-survivor-brackets.ts +106 -0
- package/src/learn/content/withdrawal-order-basics.ts +105 -0
- package/src/learn/glossary.ts +191 -0
- package/src/learn/inlineMarkdown.tsx +54 -0
- package/src/learn/learn.css +537 -0
- package/src/learn/learningRegistry.ts +502 -0
- package/src/longevity/LongevityResults.tsx +85 -0
- package/src/longevity/LongevityWizard.tsx +305 -0
- package/src/longevity/constants.ts +15 -0
- package/src/longevity/factors.ts +125 -0
- package/src/longevity/model.ts +31 -0
- package/src/longevity/persistedGuard.ts +129 -0
- package/src/longevity/storage.ts +40 -0
- package/src/mc/messages.ts +118 -0
- package/src/mc/monteCarlo.worker.ts +44 -0
- package/src/mc/pool.ts +267 -0
- package/src/mc/runRequest.ts +125 -0
- package/src/optimize/messages.ts +84 -0
- package/src/optimize/optimize.worker.ts +29 -0
- package/src/optimize/runOptimize.ts +92 -0
- package/src/optimize/runSpendingSolve.ts +47 -0
- package/src/optimize/runner.ts +21 -0
- package/src/optimize/spendingMessages.ts +44 -0
- package/src/optimize/spendingRunner.ts +21 -0
- package/src/optimize/spendingSolve.worker.ts +18 -0
- package/src/planner/AssumptionsCardPage.tsx +136 -0
- package/src/planner/BucketLensCard.tsx +114 -0
- package/src/planner/ComparePlansPage.tsx +219 -0
- package/src/planner/DisclaimerPage.tsx +88 -0
- package/src/planner/HowTestedPage.tsx +159 -0
- package/src/planner/LiveStatus.tsx +15 -0
- package/src/planner/LongevityModal.tsx +55 -0
- package/src/planner/Modal.tsx +97 -0
- package/src/planner/MonteCarloPage.tsx +907 -0
- package/src/planner/OptimizePage.tsx +611 -0
- package/src/planner/PlanContext.tsx +198 -0
- package/src/planner/PlanPickerPage.tsx +124 -0
- package/src/planner/PlanWorkspace.tsx +290 -0
- package/src/planner/ProvenancePanel.tsx +45 -0
- package/src/planner/RelocationComparePage.tsx +485 -0
- package/src/planner/ReportPage.tsx +375 -0
- package/src/planner/ResultsPage.tsx +817 -0
- package/src/planner/ScenariosPage.tsx +285 -0
- package/src/planner/SocialSecuritySection.tsx +556 -0
- package/src/planner/SpendingSolverPage.tsx +512 -0
- package/src/planner/SsAnalysisPage.tsx +1134 -0
- package/src/planner/SurvivalPercentileModal.tsx +161 -0
- package/src/planner/SurvivorTransitionPage.tsx +286 -0
- package/src/planner/assumptionsExport.ts +371 -0
- package/src/planner/bucketLens.ts +89 -0
- package/src/planner/chartFrame.ts +8 -0
- package/src/planner/chartStyle.ts +11 -0
- package/src/planner/dialogViews.tsx +184 -0
- package/src/planner/dialogs.tsx +133 -0
- package/src/planner/examples/ExampleLibrary.tsx +189 -0
- package/src/planner/examples/ExamplePreviewBanner.tsx +55 -0
- package/src/planner/examples/ExamplesPage.tsx +25 -0
- package/src/planner/examples/OpenExampleButton.tsx +61 -0
- package/src/planner/examples/buildAggressiveSaver.ts +102 -0
- package/src/planner/examples/buildAnnuityEstate.ts +137 -0
- package/src/planner/examples/buildBaristaFire.ts +115 -0
- package/src/planner/examples/buildBracketFillRoth.ts +65 -0
- package/src/planner/examples/buildBridgeEarlyRetirement.ts +94 -0
- package/src/planner/examples/buildBrokerageNoHsa.ts +109 -0
- package/src/planner/examples/buildCoastFire.ts +88 -0
- package/src/planner/examples/buildContext.ts +20 -0
- package/src/planner/examples/buildEarlyCareerMatch.ts +93 -0
- package/src/planner/examples/buildEarlyRetireeAca.ts +61 -0
- package/src/planner/examples/buildExampleCouple.ts +103 -0
- package/src/planner/examples/buildFixedTargetSpending.ts +74 -0
- package/src/planner/examples/buildGlidepathAllocation.ts +131 -0
- package/src/planner/examples/buildGuardrailsFlex.ts +120 -0
- package/src/planner/examples/buildHsaPropertyDepth.ts +109 -0
- package/src/planner/examples/buildHsaStealthRetirement.ts +97 -0
- package/src/planner/examples/buildLeanFatFire.ts +109 -0
- package/src/planner/examples/buildLtcShock.ts +62 -0
- package/src/planner/examples/buildMovingStateTax.ts +53 -0
- package/src/planner/examples/buildNoAnnuityBrokerage.ts +92 -0
- package/src/planner/examples/buildRmdIrmaa.ts +55 -0
- package/src/planner/examples/buildSalaryGrowthEscalation.ts +96 -0
- package/src/planner/examples/buildStaticAllocationControl.ts +96 -0
- package/src/planner/examples/buildSurvivorYears.ts +62 -0
- package/src/planner/examples/buildUnderSavedSingle.ts +51 -0
- package/src/planner/examples/exampleCopy.ts +23 -0
- package/src/planner/examples/loadExample.ts +90 -0
- package/src/planner/examples/registry.ts +313 -0
- package/src/planner/explainPanels.tsx +233 -0
- package/src/planner/fields.tsx +381 -0
- package/src/planner/format.ts +33 -0
- package/src/planner/home/DataAndPrivacyCard.tsx +56 -0
- package/src/planner/home/GettingStartedPaths.tsx +46 -0
- package/src/planner/home/GettingStartedReopener.tsx +32 -0
- package/src/planner/home/StartHereLinks.tsx +22 -0
- package/src/planner/home/WelcomeHero.tsx +39 -0
- package/src/planner/home/YourPlans.tsx +72 -0
- package/src/planner/home/importErrorMessage.ts +22 -0
- package/src/planner/home/startHereSlugs.ts +7 -0
- package/src/planner/home/useHomeData.ts +190 -0
- package/src/planner/home/useHomeMode.ts +47 -0
- package/src/planner/householdActions.ts +22 -0
- package/src/planner/insights/InsightCardView.tsx +340 -0
- package/src/planner/insights/InsightsPage.tsx +204 -0
- package/src/planner/insights/categoryLabels.ts +11 -0
- package/src/planner/learnLinks.ts +85 -0
- package/src/planner/marketModelPicker.ts +172 -0
- package/src/planner/optimizePageChart.ts +40 -0
- package/src/planner/optimizePageClaim.ts +64 -0
- package/src/planner/planCompleteness.ts +27 -0
- package/src/planner/planContextCore.ts +26 -0
- package/src/planner/planner.css +2304 -0
- package/src/planner/provenanceLinks.ts +25 -0
- package/src/planner/sections/AccountFields.tsx +872 -0
- package/src/planner/sections/AccountsSection.tsx +89 -0
- package/src/planner/sections/AllocationPanel.tsx +261 -0
- package/src/planner/sections/AssumptionsSection.tsx +256 -0
- package/src/planner/sections/HouseholdSection.tsx +243 -0
- package/src/planner/sections/IncomeFloorSection.tsx +418 -0
- package/src/planner/sections/IncomeSection.tsx +170 -0
- package/src/planner/sections/InsuranceSection.tsx +362 -0
- package/src/planner/sections/SpendingSection.tsx +904 -0
- package/src/planner/sections/StrategySection.tsx +349 -0
- package/src/planner/sections/UpdateBalancesPanel.tsx +182 -0
- package/src/planner/sections/sectionHelpers.ts +48 -0
- package/src/planner/sections/shared.tsx +15 -0
- package/src/planner/sections.tsx +15 -0
- package/src/planner/ssAnalysis.ts +325 -0
- package/src/planner/successBand.ts +20 -0
- package/src/planner/survivorAnalysis.ts +277 -0
- package/src/planner/usStates.ts +19 -0
- package/src/planner/useMcSuccessRate.ts +77 -0
- package/src/planner/useProjection.ts +63 -0
- package/src/relocation/messages.ts +21 -0
- package/src/relocation/relocation.worker.ts +18 -0
- package/src/relocation/runRelocation.ts +17 -0
- package/src/relocation/runner.ts +22 -0
- package/src/report/brandingContext.ts +15 -0
- package/src/report/downloadReport.ts +34 -0
- package/src/report/reportHtml.ts +547 -0
- package/src/routes/LearnRoutes.tsx +46 -0
- package/src/routes/PlanRoutes.tsx +55 -0
- package/src/routes/RouteFallback.tsx +9 -0
- package/src/socialSecurity/breakEven.ts +107 -0
- package/src/socialSecurity/expectedPv.ts +164 -0
- package/src/socialSecurity/explain.ts +92 -0
- package/src/socialSecurity/ficaReturn.ts +81 -0
- package/src/socialSecurity/persistedSsGuard.ts +138 -0
- package/src/socialSecurity/ssFormUtils.ts +48 -0
- package/src/socialSecurity/ssaStatementXml.ts +156 -0
- package/src/socialSecurity/storage.ts +69 -0
- package/src/socialSecurity/survivorSwitching.ts +153 -0
- package/src/testSupport/samplePlan.ts +2 -0
- package/src/workers/run.ts +45 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "State income taxes in retirement" - a Taxes P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const stateIncomeTaxesRetirementArticle: LearningArticle = {
|
|
8
|
+
slug: 'state-income-taxes-in-retirement',
|
|
9
|
+
title: 'State income taxes in retirement',
|
|
10
|
+
description: 'How state rules on retirement income vary and why they matter.',
|
|
11
|
+
category: 'taxes',
|
|
12
|
+
tags: ['state tax', 'retirement income', 'capital gains', 'social security', 'state residence'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: ['https://www.irs.gov/filing/state-government-websites'],
|
|
18
|
+
relatedArticles: [
|
|
19
|
+
'ordinary-income-vs-capital-gains',
|
|
20
|
+
'how-social-security-is-taxed',
|
|
21
|
+
'tax-cliffs-and-bracket-edges',
|
|
22
|
+
'real-estate-home-equity-and-debt',
|
|
23
|
+
],
|
|
24
|
+
relatedPlannerRoutes: ['/plan/:planId/household', '/plan/:planId/assumptions', '/plan/:planId/results'],
|
|
25
|
+
currentYearSensitive: true,
|
|
26
|
+
priority: 'P1',
|
|
27
|
+
blocks: [
|
|
28
|
+
{
|
|
29
|
+
type: 'prose',
|
|
30
|
+
md: 'Federal tax gets most of the attention, but state income tax can change the after-tax value of withdrawals, pensions, Social Security, capital gains, and a possible move. Two households with the same federal plan can see different results because they live in different states.',
|
|
31
|
+
},
|
|
32
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
33
|
+
{
|
|
34
|
+
type: 'list',
|
|
35
|
+
items: [
|
|
36
|
+
'Some states have no broad income tax, while others tax retirement income in different ways.',
|
|
37
|
+
'State rules can treat Social Security, pensions, IRA withdrawals, and capital gains differently from federal rules.',
|
|
38
|
+
'RetireGolden uses state parameter packs when available and lets you enter a flat override when your situation needs a manual correction.',
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
42
|
+
{
|
|
43
|
+
type: 'prose',
|
|
44
|
+
md: 'State income tax is not just a smaller version of federal tax. A state may exempt Social Security, offer a retirement-income exclusion, tax capital gains as ordinary income, use different deductions, or have no income tax at all. Moving in retirement can also change which rules apply in later years.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'figure',
|
|
48
|
+
image: { src: '/learn/images/state-income-taxes-retirement.webp' },
|
|
49
|
+
caption:
|
|
50
|
+
'The same retirement income stream can pass through different state tax filters depending on where the household lives.',
|
|
51
|
+
alt: 'A retirement income ribbon splits through several state-shaped tax filters, with some paths narrowing and others passing through mostly unchanged.',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'table',
|
|
55
|
+
caption: 'State tax questions to check before relying on a result.',
|
|
56
|
+
columns: ['Question', 'Why it matters', 'RetireGolden lens'],
|
|
57
|
+
rows: [
|
|
58
|
+
['Does the state tax retirement income?', 'Pensions and IRA withdrawals may not all be treated the same', 'Modeled retirement-income exclusions where available'],
|
|
59
|
+
['Does the state tax Social Security?', 'Federal taxable benefits may not match state treatment', 'State pack determines whether taxable benefits are included'],
|
|
60
|
+
['How are gains treated?', 'Many states tax capital gains like ordinary income', 'State pack setting for capital gains as ordinary income'],
|
|
61
|
+
['Will you move?', 'Later years may use different rules', 'Household residence by year and plan assumptions'],
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
{ type: 'heading', text: 'A worked example' },
|
|
65
|
+
{
|
|
66
|
+
type: 'scenario',
|
|
67
|
+
name: 'The Garcia household',
|
|
68
|
+
assumptions: [
|
|
69
|
+
{ label: 'Current state', value: 'About $4,800 of state tax on IRA withdrawals and gains' },
|
|
70
|
+
{ label: 'Possible move', value: 'Move near family at age 68, reducing state tax by about $3,200 a year' },
|
|
71
|
+
{ label: 'Other cost change', value: 'Housing and insurance rise by about $2,400 a year in the new location' },
|
|
72
|
+
],
|
|
73
|
+
summary:
|
|
74
|
+
'The move is not a pure $3,200 tax win. After the $2,400 cost increase, the plan improves by only about **$800** a year before considering lifestyle and family reasons.',
|
|
75
|
+
},
|
|
76
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
77
|
+
{
|
|
78
|
+
type: 'prose',
|
|
79
|
+
md: 'RetireGolden combines the federal tax calculator with a state tax calculator. The state model starts from ordinary income, capital gains when the state taxes gains as ordinary, and federally taxable Social Security when the state taxes Social Security. It then applies major retirement-income exclusions, state standard deductions, and brackets from the state pack. A flat effective-rate override in **Assumptions** takes precedence when you need a manual approximation.',
|
|
80
|
+
},
|
|
81
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
82
|
+
{
|
|
83
|
+
type: 'list',
|
|
84
|
+
items: [
|
|
85
|
+
'Assuming state tax follows federal taxable income exactly.',
|
|
86
|
+
'Forgetting that a no-income-tax state may still have property tax, sales tax, insurance, or housing tradeoffs.',
|
|
87
|
+
'Modeling a move only as a tax change without changing spending and property assumptions.',
|
|
88
|
+
'Treating a planning pack as a state tax return. Always verify unusual facts with state guidance or a tax professional.',
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
92
|
+
{
|
|
93
|
+
type: 'prose',
|
|
94
|
+
md: 'Use **Household** and **Assumptions** to set residence and any state-tax override. Use **Scenarios** to compare a move, then inspect **Results** for state tax, total tax, spending, and ending assets.',
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Step-up in basis" - an Insurance and Estate P2 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const stepUpInBasisArticle: LearningArticle = {
|
|
8
|
+
slug: 'step-up-in-basis',
|
|
9
|
+
title: 'Step-up in basis',
|
|
10
|
+
description: 'How inherited investments can reset their taxable cost basis.',
|
|
11
|
+
category: 'insurance-estate',
|
|
12
|
+
tags: ['step-up in basis', 'cost basis', 'taxable brokerage', 'inheritance', 'capital gains'],
|
|
13
|
+
audience: 'intermediate',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'rule-change',
|
|
17
|
+
sourceUrls: ['https://www.irs.gov/publications/p551', 'https://www.irs.gov/publications/p559'],
|
|
18
|
+
relatedArticles: [
|
|
19
|
+
'taxable-brokerage-basis-and-capital-gains',
|
|
20
|
+
'after-tax-estate',
|
|
21
|
+
'beneficiaries-and-account-titling',
|
|
22
|
+
'ordinary-income-vs-capital-gains',
|
|
23
|
+
],
|
|
24
|
+
relatedPlannerRoutes: ['/plan/:planId/accounts', '/plan/:planId/results', '/plan/:planId/report'],
|
|
25
|
+
currentYearSensitive: true,
|
|
26
|
+
priority: 'P2',
|
|
27
|
+
blocks: [
|
|
28
|
+
{
|
|
29
|
+
type: 'prose',
|
|
30
|
+
md: 'Cost basis is the tax starting point for measuring capital gain or loss. A step-up in basis means an inherited asset may get a new basis tied to its value around the owner\'s death, reducing the gain an heir would report if they sell soon after inheriting.',
|
|
31
|
+
},
|
|
32
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
33
|
+
{
|
|
34
|
+
type: 'list',
|
|
35
|
+
items: [
|
|
36
|
+
'A step-up can make taxable brokerage assets more estate-friendly than their embedded gain suggests.',
|
|
37
|
+
'Step-up rules are different from traditional IRA inheritance rules.',
|
|
38
|
+
'RetireGolden uses a simplified step-up assumption in its after-tax estate comparison.',
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
42
|
+
{
|
|
43
|
+
type: 'prose',
|
|
44
|
+
md: 'If you bought an investment for less than it is worth today, selling it during life can create capital gain. If heirs inherit that investment and receive a stepped-up basis, the old unrealized gain may not follow them in the same way.\n\nThat distinction matters when comparing lifetime tax moves. Selling appreciated taxable assets during life is not the same as leaving them to heirs. Converting a traditional IRA is not the same as leaving taxable stock. Each bucket has a different tax shape.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'figure',
|
|
48
|
+
image: { src: '/learn/images/step-up-in-basis.webp' },
|
|
49
|
+
caption:
|
|
50
|
+
'A basis step-up can reset the tax starting line for inherited taxable assets, while pre-tax retirement accounts keep a different tax character.',
|
|
51
|
+
alt: 'An appreciated taxable asset path reaches an inheritance checkpoint where the basis line resets upward, while a traditional account path continues through an income-tax gate.',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'table',
|
|
55
|
+
caption: 'Step-up is one reason account type matters for heirs.',
|
|
56
|
+
columns: ['Asset type', 'Common heir tax lens', 'RetireGolden simplification'],
|
|
57
|
+
rows: [
|
|
58
|
+
['Taxable brokerage', 'Basis may reset at inheritance under step-up rules', 'Kept whole in the after-tax estate metric'],
|
|
59
|
+
['Traditional IRA or 401(k)', 'Heirs may owe income tax on distributions', 'Reduced by the heir tax rate'],
|
|
60
|
+
['Roth', 'Often more tax-flexible for heirs when qualified', 'Kept whole in the estate comparison'],
|
|
61
|
+
['Property', 'May involve basis, sale costs, and local law', 'Modeled at projected net value, not detailed estate tax basis'],
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
{ type: 'heading', text: 'A worked example' },
|
|
65
|
+
{
|
|
66
|
+
type: 'scenario',
|
|
67
|
+
name: 'The Allen household',
|
|
68
|
+
assumptions: [
|
|
69
|
+
{ label: 'Taxable account', value: '$250,000 brokerage account with $140,000 of cost basis' },
|
|
70
|
+
{ label: 'During life sale', value: 'A full sale would realize about $110,000 of capital gain' },
|
|
71
|
+
{ label: 'Inherited asset', value: 'A step-up could reset basis near the date-of-death value' },
|
|
72
|
+
],
|
|
73
|
+
summary:
|
|
74
|
+
'During life, the embedded gain is about **$110,000**. As an inheritance, the taxable account may avoid that same gain layer, unlike a same-size traditional IRA that remains taxable to heirs.',
|
|
75
|
+
},
|
|
76
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
77
|
+
{
|
|
78
|
+
type: 'prose',
|
|
79
|
+
md: 'RetireGolden tracks cost basis for taxable brokerage accounts during the projection, so lifetime sales can realize gains. For the after-tax estate metric, it uses a simplified assumption that taxable assets pass through without the same heir income-tax haircut applied to traditional balances.',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
type: 'callout',
|
|
83
|
+
tone: 'warn',
|
|
84
|
+
md: 'Step-up rules can depend on ownership, state law, community property rules, estate structure, and law changes. RetireGolden does not replace estate or tax advice.',
|
|
85
|
+
},
|
|
86
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
87
|
+
{
|
|
88
|
+
type: 'list',
|
|
89
|
+
items: [
|
|
90
|
+
'Treating taxable brokerage and traditional IRA dollars as equally taxable to heirs.',
|
|
91
|
+
'Assuming step-up applies to every asset or every transfer.',
|
|
92
|
+
'Selling highly appreciated assets during life without comparing the estate tradeoff.',
|
|
93
|
+
'Using RetireGolden\'s simplified estate metric as a legal estate plan.',
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
97
|
+
{
|
|
98
|
+
type: 'prose',
|
|
99
|
+
md: 'Use **Accounts** to enter taxable cost basis. Use **Results** to inspect realized gains during life, and use **Report** or **Optimize** to compare ending net worth with after-tax estate value.',
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Survivor planning for couples" - an Insurance and Estate P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const survivorPlanningForCouplesArticle: LearningArticle = {
|
|
8
|
+
slug: 'survivor-planning-for-couples',
|
|
9
|
+
title: 'Survivor planning for couples',
|
|
10
|
+
description: 'Making sure the surviving spouse is financially secure.',
|
|
11
|
+
category: 'insurance-estate',
|
|
12
|
+
tags: ['survivor planning', 'couples', 'life insurance', 'social security', 'widow penalty', 'beneficiaries'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: [
|
|
18
|
+
'https://www.ssa.gov/benefits/survivors/',
|
|
19
|
+
'https://www.irs.gov/forms-pubs/about-publication-501',
|
|
20
|
+
'https://www.irs.gov/filing/federal-income-tax-rates-and-brackets',
|
|
21
|
+
],
|
|
22
|
+
relatedArticles: [
|
|
23
|
+
'planning-for-couples-and-survivor-years',
|
|
24
|
+
'widows-penalty-and-survivor-brackets',
|
|
25
|
+
'spousal-and-survivor-benefits',
|
|
26
|
+
'permanent-life-insurance-in-a-plan',
|
|
27
|
+
'beneficiaries-and-account-titling',
|
|
28
|
+
],
|
|
29
|
+
relatedPlannerRoutes: [
|
|
30
|
+
'/plan/:planId/household',
|
|
31
|
+
'/plan/:planId/social-security',
|
|
32
|
+
'/plan/:planId/insurance',
|
|
33
|
+
'/plan/:planId/survivor',
|
|
34
|
+
'/plan/:planId/results',
|
|
35
|
+
'/plan/:planId/report',
|
|
36
|
+
],
|
|
37
|
+
currentYearSensitive: true,
|
|
38
|
+
priority: 'P1',
|
|
39
|
+
blocks: [
|
|
40
|
+
{
|
|
41
|
+
type: 'prose',
|
|
42
|
+
md: 'Survivor planning asks whether the plan still works after the first spouse dies. It is not only about life insurance. It includes Social Security, pensions, account ownership, beneficiaries, taxes, spending, healthcare, and how easy the plan is for one person to manage.',
|
|
43
|
+
},
|
|
44
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
45
|
+
{
|
|
46
|
+
type: 'list',
|
|
47
|
+
items: [
|
|
48
|
+
'The surviving spouse may keep less income but still carry many fixed expenses.',
|
|
49
|
+
'Social Security claiming can affect the survivor income floor.',
|
|
50
|
+
'Insurance and beneficiary choices should be tested against the survivor years, not only the couple years.',
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
54
|
+
{
|
|
55
|
+
type: 'prose',
|
|
56
|
+
md: 'A couple plan can look strong while both people are alive because two Social Security checks, two pensions, or two work histories support one household. After the first death, income may fall and tax brackets may narrow. The survivor may also have less capacity or desire to manage a complex withdrawal strategy.\n\nGood survivor planning turns that vague worry into a checklist: income floor, tax shape, liquidity, insurance, beneficiaries, and simplicity.',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'figure',
|
|
60
|
+
image: { src: '/learn/images/survivor-planning-couples.webp' },
|
|
61
|
+
caption:
|
|
62
|
+
'Survivor planning follows the plan after one spouse dies, checking income, tax, liquidity, and protection for the remaining spouse.',
|
|
63
|
+
alt: 'A couple retirement path splits after one spouse dies, with the survivor path supported by Social Security, insurance, liquidity, and beneficiary markers.',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
type: 'table',
|
|
67
|
+
caption: 'A practical survivor-planning checklist.',
|
|
68
|
+
columns: ['Area', 'Question', 'RetireGolden lens'],
|
|
69
|
+
rows: [
|
|
70
|
+
['Income floor', 'What income continues after the first death?', 'Social Security, pensions, annuities, wages'],
|
|
71
|
+
['Taxes', 'Does the survivor face narrower brackets?', 'Filing status, RMDs, MAGI, after-tax estate'],
|
|
72
|
+
['Liquidity', 'Can the survivor pay near-term bills without forced sales?', 'Cash, taxable accounts, withdrawal order'],
|
|
73
|
+
['Insurance', 'Does a death benefit or LTC policy protect the weak point?', 'Permanent life, LTC stress test'],
|
|
74
|
+
['Beneficiaries', 'Will assets reach the intended person efficiently?', 'Account ownership and policy beneficiary fields'],
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
{ type: 'heading', text: 'A worked example' },
|
|
78
|
+
{
|
|
79
|
+
type: 'scenario',
|
|
80
|
+
name: 'The Nguyen household',
|
|
81
|
+
assumptions: [
|
|
82
|
+
{ label: 'Higher earner', value: '$3,100 monthly Social Security benefit and a $250,000 life policy' },
|
|
83
|
+
{ label: 'Survivor risk', value: 'The surviving spouse keeps the house and about 75% of spending' },
|
|
84
|
+
{ label: 'Policy cost', value: '$4,000 annual premium lowers couple-year cash flow' },
|
|
85
|
+
],
|
|
86
|
+
summary:
|
|
87
|
+
'The policy costs $4,000 a year while both are alive, but the $250,000 death benefit can protect survivor years when one Social Security check stops and tax brackets narrow.',
|
|
88
|
+
},
|
|
89
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
90
|
+
{
|
|
91
|
+
type: 'prose',
|
|
92
|
+
md: 'RetireGolden continues the projection through each person\'s planning age. It models the Social Security survivor step-up, survivor filing status, insurance premiums and death benefits, account ownership, and spending through the later years. That makes survivor years visible in **Results** and **Report**.',
|
|
93
|
+
},
|
|
94
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
95
|
+
{
|
|
96
|
+
type: 'list',
|
|
97
|
+
items: [
|
|
98
|
+
'Stopping the analysis when the first spouse dies.',
|
|
99
|
+
'Assuming one spouse\'s death cuts spending by half.',
|
|
100
|
+
'Ignoring the survivor effect when deciding Social Security claiming ages.',
|
|
101
|
+
'Treating beneficiary forms as paperwork instead of part of the plan.',
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
105
|
+
{
|
|
106
|
+
type: 'prose',
|
|
107
|
+
md: 'Use **Household** for planning ages, **Social Security** for benefits and claiming, **Insurance** for life and LTC protection, and **Results** to read the survivor years after the first death.',
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Survivor spending in couple plans" - a Using RetireGolden P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const survivorSpendingInCouplePlansArticle: LearningArticle = {
|
|
8
|
+
slug: 'survivor-spending-in-couple-plans',
|
|
9
|
+
title: 'Survivor spending in couple plans',
|
|
10
|
+
description: 'How the survivor spending percentage changes recurring lifestyle costs after the first death.',
|
|
11
|
+
category: 'using-retiregolden',
|
|
12
|
+
tags: ['survivor', 'couples', 'spending', 'widow penalty', 'budget'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-07-06',
|
|
16
|
+
reviewCadence: 'rule-change',
|
|
17
|
+
sourceUrls: [
|
|
18
|
+
'https://www.ssa.gov/benefits/survivors/',
|
|
19
|
+
'https://www.irs.gov/filing/federal-income-tax-rates-and-brackets',
|
|
20
|
+
'https://www.bls.gov/cex/',
|
|
21
|
+
],
|
|
22
|
+
relatedArticles: [
|
|
23
|
+
'planning-for-couples-and-survivor-years',
|
|
24
|
+
'survivor-planning-for-couples',
|
|
25
|
+
'widows-penalty-and-survivor-brackets',
|
|
26
|
+
'spousal-and-survivor-benefits',
|
|
27
|
+
'building-a-retirement-spending-budget',
|
|
28
|
+
],
|
|
29
|
+
relatedPlannerRoutes: [
|
|
30
|
+
'/plan/:planId/spending',
|
|
31
|
+
'/plan/:planId/household',
|
|
32
|
+
'/plan/:planId/insurance',
|
|
33
|
+
'/plan/:planId/survivor',
|
|
34
|
+
'/plan/:planId/results',
|
|
35
|
+
'/plan/:planId/scenarios',
|
|
36
|
+
],
|
|
37
|
+
currentYearSensitive: false,
|
|
38
|
+
priority: 'P1',
|
|
39
|
+
blocks: [
|
|
40
|
+
{
|
|
41
|
+
type: 'prose',
|
|
42
|
+
md: 'A couple plan can look strong while both spouses are alive and still deserve a separate survivor-year check. Income often falls, filing status may change, and household costs usually do not fall in half.',
|
|
43
|
+
},
|
|
44
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
45
|
+
{
|
|
46
|
+
type: 'list',
|
|
47
|
+
items: [
|
|
48
|
+
'Survivor spending applies only in years when exactly one spouse is alive.',
|
|
49
|
+
'It scales baseline spending and phase-adjusted lifestyle spending, not every cost in the ledger.',
|
|
50
|
+
'One-time goals, healthcare premiums, debt payments, property costs, and insurance premiums keep their own schedules.',
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
54
|
+
{
|
|
55
|
+
type: 'prose',
|
|
56
|
+
md: 'The survivor spending field answers a practical question: what share of the couple lifestyle budget would one spouse still need? A value of 100% means no change. A value of 75% means the recurring lifestyle portion falls by one quarter in survivor years.\n\nThis is separate from Social Security survivor benefits, tax filing status, pensions, insurance, and healthcare. RetireGolden models those items through their own inputs so the survivor percentage does not double-count them.',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'table',
|
|
60
|
+
caption: 'What survivor spending changes.',
|
|
61
|
+
columns: ['Cost type', 'Scaled by survivor spending?', 'Why'],
|
|
62
|
+
rows: [
|
|
63
|
+
['Baseline lifestyle spending', 'Yes', 'It is the recurring household lifestyle budget'],
|
|
64
|
+
['Spending phases', 'Yes', 'The phase multiplier applies first, then the survivor percentage scales the result'],
|
|
65
|
+
['One-time goals', 'No', 'A named goal happens on its own schedule unless you edit or remove it'],
|
|
66
|
+
['Healthcare premiums', 'No', 'Healthcare is per-person or rule-driven elsewhere in the model'],
|
|
67
|
+
['Debt, property, and insurance costs', 'No', 'Those costs follow the account or policy inputs you entered'],
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
{ type: 'heading', text: 'A worked example' },
|
|
71
|
+
{
|
|
72
|
+
type: 'scenario',
|
|
73
|
+
name: 'The Moreno household',
|
|
74
|
+
assumptions: [
|
|
75
|
+
{ label: 'Couple baseline spending', value: '$88,000 per year in today\'s dollars' },
|
|
76
|
+
{ label: 'Survivor spending setting', value: '75%' },
|
|
77
|
+
{ label: 'Survivor-year lifestyle spending', value: '$66,000 before inflation and before separate costs' },
|
|
78
|
+
{ label: 'Still separate', value: 'Medicare, property tax, debt service, and a planned car replacement' },
|
|
79
|
+
],
|
|
80
|
+
summary:
|
|
81
|
+
'The survivor setting lowers the recurring lifestyle budget, but the ledger still includes separate costs that may not fall just because one person has died.',
|
|
82
|
+
},
|
|
83
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
84
|
+
{
|
|
85
|
+
type: 'list',
|
|
86
|
+
items: [
|
|
87
|
+
'Assuming one-person spending should be exactly 50% of couple spending.',
|
|
88
|
+
'Lowering survivor spending and also manually removing costs that RetireGolden already stops or changes elsewhere.',
|
|
89
|
+
'Forgetting that a surviving spouse may face smaller Social Security income and different tax brackets at the same time.',
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
93
|
+
{
|
|
94
|
+
type: 'prose',
|
|
95
|
+
md: 'Use **Spending** to set the survivor percentage. Use **Results** to inspect survivor years in the ledger, and use **Scenarios** if you want to compare 100%, 80%, and 70% survivor-spending assumptions before deciding what belongs in the base plan.',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Tax cliffs and bracket edges" - a Taxes P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const taxCliffsBracketEdgesArticle: LearningArticle = {
|
|
8
|
+
slug: 'tax-cliffs-and-bracket-edges',
|
|
9
|
+
title: 'Tax cliffs and bracket edges',
|
|
10
|
+
description: 'Where one more dollar of income triggers an outsized cost.',
|
|
11
|
+
category: 'taxes',
|
|
12
|
+
tags: ['tax cliffs', 'tax brackets', 'magi', 'irmaa', 'aca', 'social security taxation'],
|
|
13
|
+
audience: 'intermediate',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: [
|
|
18
|
+
'https://www.irs.gov/filing/federal-income-tax-rates-and-brackets',
|
|
19
|
+
'https://www.irs.gov/affordable-care-act/individuals-and-families/the-premium-tax-credit-the-basics',
|
|
20
|
+
'https://www.medicare.gov/basics/costs/medicare-costs',
|
|
21
|
+
'https://www.healthcare.gov/income-and-household-information/income/',
|
|
22
|
+
],
|
|
23
|
+
relatedArticles: [
|
|
24
|
+
'why-small-tax-cliffs-can-matter',
|
|
25
|
+
'marginal-vs-effective-tax-rate',
|
|
26
|
+
'why-roth-conversions-raise-other-costs',
|
|
27
|
+
'irmaa-two-year-lookback',
|
|
28
|
+
'aca-premium-tax-credits-and-magi',
|
|
29
|
+
],
|
|
30
|
+
relatedPlannerRoutes: ['/plan/:planId/strategy', '/plan/:planId/optimize', '/plan/:planId/results'],
|
|
31
|
+
currentYearSensitive: true,
|
|
32
|
+
priority: 'P1',
|
|
33
|
+
blocks: [
|
|
34
|
+
{
|
|
35
|
+
type: 'prose',
|
|
36
|
+
md: 'A bracket edge is where the next dollars of taxable income enter a higher marginal bracket. A cliff is harsher: crossing a threshold can change a premium, credit, surcharge, or taxable-benefit calculation. Retirement planning has both.',
|
|
37
|
+
},
|
|
38
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
39
|
+
{
|
|
40
|
+
type: 'list',
|
|
41
|
+
items: [
|
|
42
|
+
'Higher tax brackets usually apply only to the next slice of taxable income.',
|
|
43
|
+
'Some rules behave more like steps, where a little extra MAGI can change a larger cost.',
|
|
44
|
+
'Good planning tests the years near an edge instead of assuming the optimizer target is the whole answer.',
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
48
|
+
{
|
|
49
|
+
type: 'prose',
|
|
50
|
+
md: 'Edges are not automatically bad. Filling a low bracket with Roth conversions can be wise if it avoids larger RMDs later. Harvesting gains in a low-income year can also make sense. The goal is to know what else moves when income rises: Social Security taxation, ACA credits, Medicare IRMAA, NIIT, state tax, and capital-gain layers.',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: 'figure',
|
|
54
|
+
image: { src: '/learn/images/tax-cliffs-bracket-edges.webp' },
|
|
55
|
+
caption:
|
|
56
|
+
'Bracket edges are slopes; cliff-like thresholds can add ledges that deserve extra testing.',
|
|
57
|
+
alt: 'A retirement income path climbs a stepped tax landscape with smooth bracket slopes, sudden ledges, and small warning markers near thresholds.',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
type: 'table',
|
|
61
|
+
caption: 'Common edges to inspect in a retirement projection.',
|
|
62
|
+
columns: ['Edge or cliff', 'Income measure', 'What to inspect'],
|
|
63
|
+
rows: [
|
|
64
|
+
['Ordinary bracket edge', 'Taxable income', 'Ordinary tax on withdrawals, pensions, and conversions'],
|
|
65
|
+
['Capital-gain layer', 'Taxable income after ordinary income stacks first', '0%, 15%, and 20% gain-room interactions'],
|
|
66
|
+
['Social Security taxation', 'Provisional-income style formula', 'Taxable benefit share as other income rises'],
|
|
67
|
+
['ACA credit change', 'Marketplace income measure', 'Net pre-65 healthcare premium'],
|
|
68
|
+
['IRMAA tier', 'MAGI with a two-year lookback', 'Later Medicare Part B and Part D premiums'],
|
|
69
|
+
['NIIT threshold', 'MAGI and investment income', 'Extra 3.8% investment-income layer'],
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
{ type: 'heading', text: 'A worked example' },
|
|
73
|
+
{
|
|
74
|
+
type: 'scenario',
|
|
75
|
+
name: 'The Ellis household',
|
|
76
|
+
assumptions: [
|
|
77
|
+
{ label: 'Plan', value: 'Convert $45,000 of traditional IRA dollars up to a federal bracket edge' },
|
|
78
|
+
{ label: 'Second edge', value: 'A $50,000 conversion may cross an IRMAA-style premium tier two years later' },
|
|
79
|
+
{ label: 'Comparison', value: '$45,000 conversion saves future RMD tax; $50,000 conversion adds about $900 of later premium' },
|
|
80
|
+
],
|
|
81
|
+
summary:
|
|
82
|
+
'The extra $5,000 conversion is not automatically bad, but its price is not just federal tax. The comparison needs the bracket result plus the roughly **$900** delayed premium effect.',
|
|
83
|
+
},
|
|
84
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
85
|
+
{
|
|
86
|
+
type: 'prose',
|
|
87
|
+
md: 'RetireGolden shows annual MAGI, taxable income, ordinary tax, capital-gain tax, NIIT, healthcare costs, and Social Security taxation in the projection. The Roth optimizer can find useful conversion targets, but the Results ledger is where you inspect whether an income-sensitive edge was crossed.',
|
|
88
|
+
},
|
|
89
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
90
|
+
{
|
|
91
|
+
type: 'list',
|
|
92
|
+
items: [
|
|
93
|
+
'Calling every bracket edge a cliff.',
|
|
94
|
+
'Avoiding every threshold without measuring the lifetime benefit of crossing it.',
|
|
95
|
+
'Checking federal tax but not healthcare, state tax, or taxable Social Security.',
|
|
96
|
+
'Forgetting the IRMAA lookback when testing conversions before or during Medicare years.',
|
|
97
|
+
],
|
|
98
|
+
},
|
|
99
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
100
|
+
{
|
|
101
|
+
type: 'prose',
|
|
102
|
+
md: 'Use **Strategy**, **Optimize**, and **Scenarios** to test nearby income levels. Use **Results** to compare the year of the income event and the following years when delayed effects can appear.',
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Tax-loss harvesting and gain harvesting" - a Taxes P2 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const taxLossGainHarvestingArticle: LearningArticle = {
|
|
8
|
+
slug: 'tax-loss-and-gain-harvesting',
|
|
9
|
+
title: 'Tax-loss harvesting and gain harvesting',
|
|
10
|
+
description: 'Deliberately realizing losses or gains to manage lifetime tax.',
|
|
11
|
+
category: 'taxes',
|
|
12
|
+
tags: ['tax-loss harvesting', 'gain harvesting', 'capital gains', 'cost basis', 'wash sale', 'taxable brokerage'],
|
|
13
|
+
audience: 'intermediate',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: [
|
|
18
|
+
'https://www.irs.gov/taxtopics/tc409',
|
|
19
|
+
'https://www.irs.gov/forms-pubs/about-publication-550',
|
|
20
|
+
],
|
|
21
|
+
relatedArticles: [
|
|
22
|
+
'taxable-brokerage-basis-and-capital-gains',
|
|
23
|
+
'ordinary-income-vs-capital-gains',
|
|
24
|
+
'niit-high-income-investment-tax',
|
|
25
|
+
'tax-cliffs-and-bracket-edges',
|
|
26
|
+
],
|
|
27
|
+
relatedPlannerRoutes: ['/plan/:planId/accounts', '/plan/:planId/strategy', '/plan/:planId/results'],
|
|
28
|
+
currentYearSensitive: true,
|
|
29
|
+
priority: 'P2',
|
|
30
|
+
blocks: [
|
|
31
|
+
{
|
|
32
|
+
type: 'prose',
|
|
33
|
+
md: 'Harvesting means deliberately realizing a tax result instead of waiting for a sale to happen by accident. Tax-loss harvesting realizes losses that may offset gains or other income under the rules. Gain harvesting realizes gains in a year when the tax cost may be low enough to be worth locking in.',
|
|
34
|
+
},
|
|
35
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
36
|
+
{
|
|
37
|
+
type: 'list',
|
|
38
|
+
items: [
|
|
39
|
+
'Tax-loss harvesting can create useful losses, but wash-sale and replacement-investment rules matter.',
|
|
40
|
+
'Gain harvesting can use low-income years or 0% capital-gain room to reset basis.',
|
|
41
|
+
'RetireGolden estimates realized gains from taxable withdrawals and reports zero-rate gain headroom; it does not choose tax lots or execute harvesting trades.',
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
45
|
+
{
|
|
46
|
+
type: 'prose',
|
|
47
|
+
md: 'A taxable account contains basis and unrealized gain or loss. Harvesting changes the tax record by selling something. If you sell at a loss, the loss may offset gains and potentially a limited amount of other income. If you sell at a gain in a low-tax year, you may increase basis and reduce future gain. Both strategies depend on current law, holding period, tax lots, state tax, and what you buy next.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'figure',
|
|
51
|
+
image: { src: '/learn/images/tax-loss-gain-harvesting.webp' },
|
|
52
|
+
caption:
|
|
53
|
+
'Harvesting chooses when gains or losses leave the taxable account instead of letting tax timing happen by accident.',
|
|
54
|
+
alt: 'A taxable account splits into two planned harvest paths, one collecting a loss leaf and one collecting a gain tile, before both rejoin a future basis path.',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
type: 'table',
|
|
58
|
+
caption: 'Two different harvesting goals.',
|
|
59
|
+
columns: ['Strategy', 'Typical goal', 'Planning caution'],
|
|
60
|
+
rows: [
|
|
61
|
+
['Tax-loss harvesting', 'Use losses to offset gains or create a deduction under limits', 'Wash-sale and replacement rules can undo the intended tax result'],
|
|
62
|
+
['Gain harvesting', 'Realize gains in a low-tax year and increase basis', 'The gain can still raise MAGI, taxable Social Security, ACA costs, IRMAA, NIIT, or state tax'],
|
|
63
|
+
['Do nothing', 'Keep tax deferral and avoid transaction complexity', 'Future sales may happen in a higher-tax year'],
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
{ type: 'heading', text: 'A worked example' },
|
|
67
|
+
{
|
|
68
|
+
type: 'scenario',
|
|
69
|
+
name: 'The Kim household',
|
|
70
|
+
assumptions: [
|
|
71
|
+
{ label: 'Harvested loss', value: '$12,000 loss from selling one taxable fund lot' },
|
|
72
|
+
{ label: 'Realized gain', value: '$8,000 long-term gain from rebalancing another holding' },
|
|
73
|
+
{ label: 'Leftover loss', value: '$4,000 remains after offsetting the gain; about $3,000 can offset ordinary income' },
|
|
74
|
+
],
|
|
75
|
+
summary:
|
|
76
|
+
'The loss does not create $12,000 of immediate tax savings. It first wipes out the $8,000 gain, then about **$3,000** can reduce ordinary income this year, leaving roughly **$1,000** to carry forward.',
|
|
77
|
+
},
|
|
78
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
79
|
+
{
|
|
80
|
+
type: 'prose',
|
|
81
|
+
md: 'RetireGolden models taxable and equity-comp withdrawals using aggregate cost basis, so realized gains appear when those accounts are sold for spending. The federal tax detail also calculates advisory 0% long-term capital-gain headroom. RetireGolden does not model individual tax lots, wash sales, short-term gain timing, or broker-level harvesting transactions.',
|
|
82
|
+
},
|
|
83
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
84
|
+
{
|
|
85
|
+
type: 'list',
|
|
86
|
+
items: [
|
|
87
|
+
'Harvesting a loss and accidentally creating a wash sale.',
|
|
88
|
+
'Harvesting gains because the federal rate is low while ignoring ACA, IRMAA, NIIT, state tax, or Social Security taxation.',
|
|
89
|
+
'Assuming a modeled average cost basis can replace tax-lot records.',
|
|
90
|
+
'Letting tax savings drive an investment change that no longer fits the portfolio plan.',
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
94
|
+
{
|
|
95
|
+
type: 'prose',
|
|
96
|
+
md: 'Use **Accounts** to keep taxable basis realistic. Use **Results** to inspect realized gains and zero-rate gain headroom. Use **Scenarios** or one-time capital-gain inputs to approximate a planned harvest year, then verify the real transaction details outside the planner.',
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
}
|