@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,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "What AGI, MAGI, and taxable income mean" - a Taxes P0 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const agiMagiAndTaxableIncomeArticle: LearningArticle = {
|
|
8
|
+
slug: 'agi-magi-and-taxable-income',
|
|
9
|
+
title: 'What AGI, MAGI, and taxable income mean',
|
|
10
|
+
description: 'Three income numbers that drive different costs in a plan.',
|
|
11
|
+
category: 'taxes',
|
|
12
|
+
tags: ['agi', 'magi', 'taxable income', 'deductions', 'irmaa', 'aca', 'tax planning'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-19',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: [
|
|
18
|
+
'https://www.irs.gov/e-file-providers/definition-of-adjusted-gross-income',
|
|
19
|
+
'https://www.irs.gov/filing/federal-income-tax-rates-and-brackets',
|
|
20
|
+
'https://www.healthcare.gov/income-and-household-information/income/',
|
|
21
|
+
'https://www.medicare.gov/basics/costs/medicare-costs',
|
|
22
|
+
],
|
|
23
|
+
relatedArticles: [
|
|
24
|
+
'marginal-vs-effective-tax-rate',
|
|
25
|
+
'why-roth-conversions-raise-other-costs',
|
|
26
|
+
'irmaa-two-year-lookback',
|
|
27
|
+
'aca-premium-tax-credits-and-magi',
|
|
28
|
+
],
|
|
29
|
+
relatedPlannerRoutes: ['/plan/:planId/results', '/plan/:planId/strategy', '/plan/:planId/assumptions'],
|
|
30
|
+
currentYearSensitive: true,
|
|
31
|
+
priority: 'P0',
|
|
32
|
+
blocks: [
|
|
33
|
+
{
|
|
34
|
+
type: 'prose',
|
|
35
|
+
md: 'Retirement planning uses several income numbers. They sound similar, but they answer different questions. AGI, MAGI, and taxable income can move together, but they are not interchangeable.',
|
|
36
|
+
},
|
|
37
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
38
|
+
{
|
|
39
|
+
type: 'list',
|
|
40
|
+
items: [
|
|
41
|
+
'AGI is a tax-return building block before standard or itemized deductions.',
|
|
42
|
+
'MAGI means AGI with certain items added back, but the exact add-backs depend on the rule.',
|
|
43
|
+
'Taxable income is what federal tax brackets apply to after deductions.',
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
47
|
+
{
|
|
48
|
+
type: 'prose',
|
|
49
|
+
md: 'Start with income. Some adjustments can reduce it to adjusted gross income, or AGI. Some programs then add certain items back to create modified adjusted gross income, or MAGI. Finally, deductions reduce income to taxable income, which is the number used for federal tax brackets.\n\nA Roth conversion can raise all three measures in different ways. A deduction can lower taxable income but may not lower MAGI for every program. That is why a plan can show a modest tax bracket while still crossing a healthcare or Medicare threshold.',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
type: 'figure',
|
|
53
|
+
image: { src: '/learn/images/agi-magi-income-map.webp' },
|
|
54
|
+
caption:
|
|
55
|
+
'Income measures are related layers: deductions can reduce taxable income, while program-specific add-backs can still keep MAGI high.',
|
|
56
|
+
alt: 'A broad income stream enters stacked containers, deductions branch away, add-backs loop toward MAGI, and a smaller stream reaches a tax-bracket ladder.',
|
|
57
|
+
},
|
|
58
|
+
{ type: 'heading', text: 'A simple map' },
|
|
59
|
+
{
|
|
60
|
+
type: 'formula',
|
|
61
|
+
expression: 'taxable income = AGI - deductions',
|
|
62
|
+
where: [
|
|
63
|
+
{ symbol: 'AGI', meaning: 'adjusted gross income after certain adjustments' },
|
|
64
|
+
{ symbol: 'deductions', meaning: 'standard or itemized deductions and other applicable deductions' },
|
|
65
|
+
],
|
|
66
|
+
note: 'This is a planning simplification. Tax forms have details, ordering rules, credits, and special cases that RetireGolden does not try to reproduce line by line.',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
type: 'table',
|
|
70
|
+
caption: 'Which income number answers which question?',
|
|
71
|
+
columns: ['Income measure', 'Plain-language meaning', 'Common planning use'],
|
|
72
|
+
rows: [
|
|
73
|
+
['AGI', 'Income after selected adjustments', 'Starting point for many tax and benefit rules'],
|
|
74
|
+
['MAGI', 'AGI plus rule-specific add-backs', 'ACA credits, IRMAA, and other income tests'],
|
|
75
|
+
['Taxable income', 'Income after deductions', 'Federal ordinary-income brackets'],
|
|
76
|
+
['Gross income', 'Broad income before adjustments', 'A rough starting point, not usually the final planning measure'],
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
{ type: 'heading', text: 'A worked example' },
|
|
80
|
+
{
|
|
81
|
+
type: 'scenario',
|
|
82
|
+
name: 'The Morgan household',
|
|
83
|
+
assumptions: [
|
|
84
|
+
{ label: 'Income event', value: '$20,000 Roth conversion plus $8,000 realized long-term gain' },
|
|
85
|
+
{ label: 'Taxable-income effect', value: 'A $30,000 standard deduction lowers the income used for brackets' },
|
|
86
|
+
{ label: 'MAGI effect', value: 'The full $28,000 income event can still count for ACA or IRMAA-style tests' },
|
|
87
|
+
],
|
|
88
|
+
summary:
|
|
89
|
+
'The deduction can reduce the tax-bracket bill, but it does not make the income event disappear. A plan can show lower taxable income while MAGI-sensitive costs still react to the $28,000 increase.',
|
|
90
|
+
},
|
|
91
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
92
|
+
{
|
|
93
|
+
type: 'prose',
|
|
94
|
+
md: 'RetireGolden records MAGI in the annual ledger because it drives several planning interactions. In the current projection, MAGI is a planning approximation built from realized ordinary income, realized gains, and taxable Social Security. It is meant to capture the big levers, not replace tax-preparation software.',
|
|
95
|
+
},
|
|
96
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
97
|
+
{
|
|
98
|
+
type: 'list',
|
|
99
|
+
items: [
|
|
100
|
+
'Using taxable income as if it were always MAGI.',
|
|
101
|
+
'Assuming a deduction prevents IRMAA or ACA effects.',
|
|
102
|
+
'Forgetting that realized capital gains can raise MAGI.',
|
|
103
|
+
'Treating one program\'s MAGI definition as universal.',
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
107
|
+
{
|
|
108
|
+
type: 'prose',
|
|
109
|
+
md: 'Use **Results** to inspect MAGI, tax, conversions, withdrawals, and realized gains by year. Use **Strategy** and **Optimize** when you want to test how extra income changes both tax and income-sensitive costs.',
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Appealing IRMAA after a life change (Form SSA-44)" - a Healthcare P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const appealingIrmaaSsa44Article: LearningArticle = {
|
|
8
|
+
slug: 'appealing-irmaa-ssa-44',
|
|
9
|
+
title: 'Appealing IRMAA after a life change (Form SSA-44)',
|
|
10
|
+
description: 'How a retirement or the death of a spouse can qualify you to have Medicare premiums re-priced on current income.',
|
|
11
|
+
category: 'healthcare',
|
|
12
|
+
tags: ['medicare', 'irmaa', 'ssa-44', 'life-changing event', 'widow penalty', 'survivor', 'retirement', 'magi'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-07-09',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: [
|
|
18
|
+
'https://www.ssa.gov/medicare/lower-irmaa',
|
|
19
|
+
'https://www.ssa.gov/forms/ssa-44.pdf',
|
|
20
|
+
'https://www.medicare.gov/basics/costs/medicare-costs',
|
|
21
|
+
],
|
|
22
|
+
relatedArticles: [
|
|
23
|
+
'irmaa-two-year-lookback',
|
|
24
|
+
'medicare-part-b-vs-part-d-irmaa',
|
|
25
|
+
'widows-penalty-and-survivor-brackets',
|
|
26
|
+
'healthcare-after-65',
|
|
27
|
+
],
|
|
28
|
+
relatedPlannerRoutes: ['/plan/:planId/spending', '/plan/:planId/survivor', '/plan/:planId/results'],
|
|
29
|
+
currentYearSensitive: true,
|
|
30
|
+
priority: 'P1',
|
|
31
|
+
blocks: [
|
|
32
|
+
{
|
|
33
|
+
type: 'prose',
|
|
34
|
+
md: "Medicare's income surcharge (IRMAA) is normally based on your tax return from two years earlier. When your income has just dropped because of a major life change — you stopped working, or your spouse died — that lookback can charge you a premium your current income no longer justifies. Form SSA-44 is the one-page form that asks Social Security to use this year's estimated income instead.",
|
|
35
|
+
},
|
|
36
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
37
|
+
{
|
|
38
|
+
type: 'list',
|
|
39
|
+
items: [
|
|
40
|
+
'IRMAA usually looks at MAGI from two tax years ago, so an income drop takes two years to show up in premiums.',
|
|
41
|
+
'After a qualifying life-changing event, Form SSA-44 lets you request a redetermination based on the current year\'s estimated income.',
|
|
42
|
+
'Work stoppage (retirement) and the death of a spouse are two of the eight qualifying events — and the two most common in retirement planning.',
|
|
43
|
+
'The request only helps: if your estimate is not lower, Social Security keeps the normal determination.',
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
47
|
+
{
|
|
48
|
+
type: 'prose',
|
|
49
|
+
md: 'The two-year lookback exists because Social Security prices premiums from the most recent tax return the IRS has on file. That works fine when income is steady, and badly when it just fell.\n\nCongress anticipated this: when one of eight **life-changing events** reduces your income, you can report the event and your current-year income estimate on Form SSA-44 (or by calling or visiting Social Security). If granted, that year\'s premium is re-priced on the estimate instead of the two-year-old return. The events include marriage, divorce or annulment, death of a spouse, work stoppage, work reduction, loss of income-producing property, loss of pension income, and an employer settlement payment.\n\nTwo of these are routine retirement-planning moments. Someone who retires at 66 with a strong final salary would otherwise pay two years of IRMAA priced on paychecks that have stopped. A surviving spouse faces the same lag on top of the single-filer thresholds — part of the "widow\'s penalty."',
|
|
50
|
+
},
|
|
51
|
+
{ type: 'heading', text: 'What a redetermination is worth' },
|
|
52
|
+
{
|
|
53
|
+
type: 'table',
|
|
54
|
+
caption: 'The surcharge tiers are cliffs, so relief is worth the whole tier, not a sliver.',
|
|
55
|
+
columns: ['Situation', 'Without SSA-44', 'With a granted SSA-44'],
|
|
56
|
+
rows: [
|
|
57
|
+
['Retired last year, final-salary MAGI on record', 'Premiums priced on working income for up to two years', 'Premiums priced on this year\'s (retirement) income'],
|
|
58
|
+
['Widowed, joint income on record, single thresholds now', 'Lookback MAGI from joint years meets single-filer tiers', 'Premiums priced on the survivor\'s own income'],
|
|
59
|
+
['Income did not actually fall', 'Normal determination', 'No change — the request cannot raise your premium'],
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
{ type: 'heading', text: 'A worked example' },
|
|
63
|
+
{
|
|
64
|
+
type: 'scenario',
|
|
65
|
+
name: 'The Alvarez household',
|
|
66
|
+
assumptions: [
|
|
67
|
+
{ label: 'Event', value: 'One spouse dies in 2030; the survivor files as single from 2031' },
|
|
68
|
+
{ label: 'On record', value: 'Joint MAGI of roughly $150,000 from 2029, over the single-filer IRMAA threshold' },
|
|
69
|
+
{ label: 'Current income', value: 'The survivor\'s own 2031 income is about $60,000, under every tier' },
|
|
70
|
+
],
|
|
71
|
+
summary:
|
|
72
|
+
'Without a redetermination, the 2031 premium is priced on the couple\'s 2029 income against single-filer thresholds — a surcharge tier the survivor\'s actual income never touches. Reporting the death of spouse on Form SSA-44 with the 2031 estimate removes the surcharge for that year, and the same logic applies in 2032.',
|
|
73
|
+
},
|
|
74
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
75
|
+
{
|
|
76
|
+
type: 'prose',
|
|
77
|
+
md: 'On the **Spending** screen, the healthcare section has opt-in toggles to model SSA-44 relief in survivor years and in retirement years. When enabled, the projection prices IRMAA in the two years after the event on the *lower* of the normal lookback MAGI and the prior year\'s MAGI (the planning-grade stand-in for a current-year estimate). The Roth & Tax Optimizer sees the same treatment, so conversion advice accounts for it.\n\nThe stand-in makes the model deliberately conservative in the **first** year after the event: its estimate still references the event year itself (a death year is a full joint year), where a real filing could use the survivor\'s own current income. It also leaves the event year on the plain lookback. So the modeled relief is a floor, not a ceiling — an actual redetermination can do somewhat better.\n\nRetireGolden models the *effect* of a granted redetermination. Actually filing Form SSA-44 — with the event date and your income estimate — is your task, and Social Security decides each request.',
|
|
78
|
+
},
|
|
79
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
80
|
+
{
|
|
81
|
+
type: 'list',
|
|
82
|
+
items: [
|
|
83
|
+
'Assuming the premium relief is automatic. Social Security does not know your income dropped until you tell them.',
|
|
84
|
+
'Waiting out the lookback instead of filing. Each affected year can be worth a full surcharge tier per person.',
|
|
85
|
+
'Forgetting the second year. The lookback can reference pre-event income for two premium years, and each can be redetermined.',
|
|
86
|
+
"Treating a Roth conversion as a qualifying event. Only the eight listed life-changing events qualify — a conversion that raised MAGI doesn't.",
|
|
87
|
+
],
|
|
88
|
+
},
|
|
89
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
90
|
+
{
|
|
91
|
+
type: 'prose',
|
|
92
|
+
md: 'Turn the toggles on under **Spending → Healthcare**, then compare premiums by year in **Results**. For couples, the **Survivor transition** view shows the IRMAA difference with and without SSA-44 for each death timing.',
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
2
|
+
|
|
3
|
+
export const assumptionGeneralInflationArticle: LearningArticle = {
|
|
4
|
+
slug: 'assumption-general-inflation',
|
|
5
|
+
title: 'General inflation',
|
|
6
|
+
description: 'Why RetireGolden assumes a 2.5% general inflation rate, and how it impacts your retirement buying power.',
|
|
7
|
+
category: 'assumptions',
|
|
8
|
+
tags: ['inflation', 'cpi', 'buying power', 'purchasing power'],
|
|
9
|
+
audience: 'intermediate',
|
|
10
|
+
status: 'ready',
|
|
11
|
+
lastReviewed: '2026-06-30',
|
|
12
|
+
reviewCadence: 'annual',
|
|
13
|
+
sourceUrls: [
|
|
14
|
+
'https://www.ssa.gov/oact/TR/2025/2025_Long-Range_Economic_Assumptions.pdf',
|
|
15
|
+
'https://www.cbo.gov/publication/62105',
|
|
16
|
+
'https://www.philadelphiafed.org/surveys-and-data/real-time-data-research/spf-q2-2026',
|
|
17
|
+
],
|
|
18
|
+
relatedArticles: [
|
|
19
|
+
'todays-dollars-vs-future-dollars',
|
|
20
|
+
'understanding-your-plan-assumptions',
|
|
21
|
+
'inflation-risk',
|
|
22
|
+
],
|
|
23
|
+
relatedPlannerRoutes: ['/plan/:planId/assumptions'],
|
|
24
|
+
currentYearSensitive: true,
|
|
25
|
+
priority: 'P1',
|
|
26
|
+
blocks: [
|
|
27
|
+
{
|
|
28
|
+
type: 'prose',
|
|
29
|
+
md: "Inflation is the quiet force that erodes the purchasing power of your money over time. RetireGolden's projection engine runs in future nominal dollars, then the Results view can deflate those figures back into **today's dollars** so you can compare them to prices you recognize.",
|
|
30
|
+
},
|
|
31
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
32
|
+
{
|
|
33
|
+
type: 'list',
|
|
34
|
+
items: [
|
|
35
|
+
'RetireGolden defaults to a **2.5%** annual inflation rate, representing a long-term economic baseline.',
|
|
36
|
+
'This default is aligned with the Social Security Trustees long-range CPI-W estimate of 2.4% and professional forecaster surveys (~2.4%).',
|
|
37
|
+
"The engine grows future cash flows in nominal dollars, while today's-dollar displays discount those results back to true buying power.",
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
{ type: 'heading', text: 'Why 2.5%?' },
|
|
41
|
+
{
|
|
42
|
+
type: 'prose',
|
|
43
|
+
md: "No one can predict inflation over a 30-year horizon, but we can look to primary economic anchors for a sensible starting point. RetireGolden's default is built on three key benchmarks:",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
type: 'list',
|
|
47
|
+
items: [
|
|
48
|
+
'**Social Security Trustees:** In their 2025 report, the Trustees assume an ultimate long-range annual increase in the CPI-W of **2.4%** under their intermediate cost scenario.',
|
|
49
|
+
'**Congressional Budget Office (CBO):** The CBO\'s long-term economic outlook projects PCE inflation to settle at the Federal Reserve\'s **2.0%** target, with CPI-U averaging roughly **2.2%** to **2.3%** annually.',
|
|
50
|
+
'**Survey of Professional Forecasters:** The Philadelphia Fed\'s Q2 2026 survey indicates a 10-year median CPI expectation of **2.4%**.',
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'prose',
|
|
55
|
+
md: "RetireGolden adopts **2.5%** as a rounded, slightly conservative default. It sits just above the official long-term forecasts, providing a small safety margin.",
|
|
56
|
+
},
|
|
57
|
+
{ type: 'heading', text: 'How inflation affects your plan' },
|
|
58
|
+
{
|
|
59
|
+
type: 'prose',
|
|
60
|
+
md: "If you have fixed income sources that do not adjust for inflation (like many traditional pensions or fixed annuities), a 2.5% inflation rate will cut their purchasing power in half in approximately 29 years. Conversely, cost-of-living adjustments (like Social Security COLA) help protect your buying power by rising in tandem with inflation.",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
type: 'formula',
|
|
64
|
+
expression: 'Buying Power = Nominal Amount / (1 + Inflation Rate)^Years',
|
|
65
|
+
basis: 'today',
|
|
66
|
+
note: 'This formula calculates how much today\'s money is worth in the future under a constant inflation rate.',
|
|
67
|
+
},
|
|
68
|
+
{ type: 'heading', text: 'Watch-outs' },
|
|
69
|
+
{
|
|
70
|
+
type: 'list',
|
|
71
|
+
items: [
|
|
72
|
+
"Do not compare a nominal future balance directly against today's spending.",
|
|
73
|
+
'A single long-run average can hide short inflation bursts, which is why Scenarios and Monte Carlo still matter.',
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
{ type: 'heading', text: 'Where this shows up in the app' },
|
|
77
|
+
{
|
|
78
|
+
type: 'prose',
|
|
79
|
+
md: "You can adjust the inflation rate on the **Assumptions** screen. The default of 2.5% is applied plan-wide. When you run Monte Carlo simulations, RetireGolden varies the inflation rate around this average to model inflation volatility and the way inflation interacts with market returns.",
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
2
|
+
|
|
3
|
+
export const assumptionHealthcareInflationArticle: LearningArticle = {
|
|
4
|
+
slug: 'assumption-healthcare-inflation',
|
|
5
|
+
title: 'Healthcare cost inflation',
|
|
6
|
+
description: 'Why RetireGolden assumes healthcare costs rise faster than general inflation, and how it impacts your plan.',
|
|
7
|
+
category: 'assumptions',
|
|
8
|
+
tags: ['healthcare', 'inflation', 'medicare', 'medical costs'],
|
|
9
|
+
audience: 'intermediate',
|
|
10
|
+
status: 'ready',
|
|
11
|
+
lastReviewed: '2026-06-30',
|
|
12
|
+
reviewCadence: 'annual',
|
|
13
|
+
sourceUrls: [
|
|
14
|
+
'https://hvsfinancial.com/wp-content/uploads/2026/02/2026-Data-Report.pdf',
|
|
15
|
+
'https://www.cms.gov/newsroom/fact-sheets/2026-medicare-parts-b-premiums-deductibles',
|
|
16
|
+
],
|
|
17
|
+
relatedArticles: [
|
|
18
|
+
'medicare-part-b-vs-part-d-irmaa',
|
|
19
|
+
'healthcare-after-65',
|
|
20
|
+
'understanding-your-plan-assumptions',
|
|
21
|
+
],
|
|
22
|
+
relatedPlannerRoutes: ['/plan/:planId/assumptions', '/plan/:planId/spending'],
|
|
23
|
+
currentYearSensitive: true,
|
|
24
|
+
priority: 'P1',
|
|
25
|
+
blocks: [
|
|
26
|
+
{
|
|
27
|
+
type: 'prose',
|
|
28
|
+
md: "Healthcare is one of the largest expenses in retirement, and historically, medical costs have risen significantly faster than general consumer prices. To prevent planners from underestimating their future expenses, RetireGolden applies a separate, higher inflation rate to healthcare costs.",
|
|
29
|
+
},
|
|
30
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
31
|
+
{
|
|
32
|
+
type: 'list',
|
|
33
|
+
items: [
|
|
34
|
+
'RetireGolden defaults to a **+3.0%** healthcare extra inflation rate over the general CPI (totaling 5.5% annual growth at 2.5% inflation).',
|
|
35
|
+
'Studies indicate long-term retiree healthcare inflation will average **5.8%** per year, which is roughly twice the general inflation rate.',
|
|
36
|
+
'Medicare Part B premiums alone are projected to increase by about **7%** annually over the long term.',
|
|
37
|
+
],
|
|
38
|
+
},
|
|
39
|
+
{ type: 'heading', text: 'Sourcing the healthcare premium spread' },
|
|
40
|
+
{
|
|
41
|
+
type: 'prose',
|
|
42
|
+
md: "According to the **HealthView Services 2026 Retirement Healthcare Costs Data Report**, long-term retiree healthcare inflation is projected to average **5.8%** per year. HealthView describes this as 'approximately twice the rate of CPI.' The report highlights key drivers:",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
type: 'list',
|
|
46
|
+
items: [
|
|
47
|
+
'**Medicare Part B and D Premiums:** Driven by healthcare utilization and clinical advancements, Part B premiums are expected to increase at a long-term rate of ~7.0% per year.',
|
|
48
|
+
'**Age-Rating Surcharges:** Private supplemental policies (Medigap) typically include age-rating adjustments that add ~3.5% per year as you age.',
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
type: 'prose',
|
|
53
|
+
md: "RetireGolden uses a spread approach: `General Inflation + Healthcare Extra Inflation`. With a 2.5% general inflation default, adding a **+3.0%** extra inflation default yields a total healthcare growth rate of **5.5%** per year. This approximately doubles general CPI, matching the consensus long-term projections.",
|
|
54
|
+
},
|
|
55
|
+
{ type: 'heading', text: 'The compounding impact' },
|
|
56
|
+
{
|
|
57
|
+
type: 'prose',
|
|
58
|
+
md: "Because healthcare inflation compounds, a premium that seems manageable at age 65 can become a substantial cash-flow demand by age 85. For instance, a $5,000 annual healthcare premium growing at 5.5% will more than double to $14,500 (in future nominal dollars) in 20 years, representing a significant real-dollar increase.",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
type: 'scenario',
|
|
62
|
+
name: 'The healthcare spread comparison',
|
|
63
|
+
assumptions: [
|
|
64
|
+
{ label: 'General Inflation', value: '2.5%' },
|
|
65
|
+
{ label: 'Healthcare Premium at Age 65', value: '$6,000 / year' },
|
|
66
|
+
{ label: 'Option A: Grows at CPI (+0% extra)', value: 'Age 85 Premium: $6,000 (today\'s dollars)' },
|
|
67
|
+
{ label: 'Option B: Grows at CPI + 3% default', value: 'Age 85 Premium: $10,837 (today\'s dollars)' },
|
|
68
|
+
],
|
|
69
|
+
summary: 'Under the default +3.0% extra inflation assumption, your projected age-85 premium is 80% higher in real buying power than if you assumed it only matched general inflation.',
|
|
70
|
+
},
|
|
71
|
+
{ type: 'heading', text: 'Watch-outs' },
|
|
72
|
+
{
|
|
73
|
+
type: 'list',
|
|
74
|
+
items: [
|
|
75
|
+
'Healthcare extra inflation applies on top of general inflation, so 3% means 5.5% total when general inflation is 2.5%.',
|
|
76
|
+
'The default is a planning baseline, not a prediction of your own premiums, carrier, supplement, or care needs.',
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
{ type: 'heading', text: 'Where this shows up in the app' },
|
|
80
|
+
{
|
|
81
|
+
type: 'prose',
|
|
82
|
+
md: 'You can adjust the **Healthcare extra inflation** rate on the **Assumptions** screen. The default is +3.0%. This rate is automatically applied to all healthcare expenses entered under the **Spending** step, including base premiums and Medicare supplemental costs.',
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
2
|
+
|
|
3
|
+
export const assumptionHeirTaxRateArticle: LearningArticle = {
|
|
4
|
+
slug: 'assumption-heir-tax-rate',
|
|
5
|
+
title: 'The heir tax rate',
|
|
6
|
+
description: 'Why RetireGolden assumes a 25% tax rate on inherited traditional balances, and how the SECURE Act affects your estate.',
|
|
7
|
+
category: 'assumptions',
|
|
8
|
+
tags: ['estate', 'heir', 'taxes', 'traditional ira', 'secure act', '10-year rule'],
|
|
9
|
+
audience: 'intermediate',
|
|
10
|
+
status: 'ready',
|
|
11
|
+
lastReviewed: '2026-06-30',
|
|
12
|
+
reviewCadence: 'stable',
|
|
13
|
+
sourceUrls: [
|
|
14
|
+
'https://www.irs.gov/retirement-plans/retirement-plan-and-ira-required-minimum-distributions-faqs',
|
|
15
|
+
],
|
|
16
|
+
relatedArticles: [
|
|
17
|
+
'inherited-ira-10-year-rule',
|
|
18
|
+
'after-tax-estate',
|
|
19
|
+
'understanding-your-plan-assumptions',
|
|
20
|
+
],
|
|
21
|
+
relatedPlannerRoutes: ['/plan/:planId/assumptions'],
|
|
22
|
+
currentYearSensitive: false,
|
|
23
|
+
priority: 'P1',
|
|
24
|
+
blocks: [
|
|
25
|
+
{
|
|
26
|
+
type: 'prose',
|
|
27
|
+
md: "When planning your legacy, it is important to realize that not all accounts are inherited equally. While taxable accounts receive a step-up in basis and Roth accounts pass to heirs tax-free, traditional tax-deferred accounts (like traditional IRAs and 401ks) carry a built-in income tax liability for your beneficiaries.",
|
|
28
|
+
},
|
|
29
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
30
|
+
{
|
|
31
|
+
type: 'list',
|
|
32
|
+
items: [
|
|
33
|
+
'RetireGolden defaults the **heir tax rate** to **25%** for the after-tax estate metric.',
|
|
34
|
+
'This default reflects the typical tax bracket of adult beneficiaries who are forced to withdraw inherited tax-deferred funds under the SECURE Act.',
|
|
35
|
+
'Roth accounts and taxable accounts are modeled as passing to heirs with **0%** tax drag (taxable accounts receive a step-up in basis to eliminate capital gains).',
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
{ type: 'heading', text: 'The SECURE Act 10-year rule' },
|
|
39
|
+
{
|
|
40
|
+
type: 'prose',
|
|
41
|
+
md: "Prior to 2020, heirs could stretch withdrawals from inherited IRAs over their own lifetimes, keeping tax bills minimal. Under the **SECURE Act (and SECURE 2.0)**, most non-spouse beneficiaries (like adult children) must fully distribute and pay tax on the entire inherited traditional account within **10 years** of the owner's death.",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
type: 'prose',
|
|
45
|
+
md: "Because these distributions are treated as ordinary income and must occur within a tight 10-year window—often during the heirs' peak earning years—the tax rate can be substantial. A flat **25%** assumption represents a typical mid-range federal tax bracket (22% or 24%) plus a modest buffer for state income taxes.",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
type: 'formula',
|
|
49
|
+
expression: 'After-Tax Estate = Taxable + Roth + [Traditional * (1 - Heir Tax Rate)]',
|
|
50
|
+
basis: 'today',
|
|
51
|
+
note: 'RetireGolden applies the heir tax rate ONLY to traditional pre-tax balances when estimating the after-tax value of your estate.',
|
|
52
|
+
},
|
|
53
|
+
{ type: 'heading', text: 'Estate planning implications' },
|
|
54
|
+
{
|
|
55
|
+
type: 'prose',
|
|
56
|
+
md: "If you have a large pre-tax balance, your heirs may face a significant \"tax bomb.\" To optimize your legacy, you might consider:",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'list',
|
|
60
|
+
items: [
|
|
61
|
+
'**Roth Conversions:** Converting traditional balances to Roth during your lifetime, particularly if you are in a lower bracket than your heirs will be.',
|
|
62
|
+
'**Charitable Bequests:** Leaving traditional accounts to tax-exempt charities, which pay 0% tax, and leaving tax-free taxable or Roth accounts to heirs.',
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
{ type: 'heading', text: 'Watch-outs' },
|
|
66
|
+
{
|
|
67
|
+
type: 'list',
|
|
68
|
+
items: [
|
|
69
|
+
'The heir tax rate affects the after-tax estate metric; it does not change your lifetime income-tax bill.',
|
|
70
|
+
'A single flat rate is a simplification. Actual heirs may face different federal, state, and timing outcomes.',
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
{ type: 'heading', text: 'Where this shows up in the app' },
|
|
74
|
+
{
|
|
75
|
+
type: 'prose',
|
|
76
|
+
md: 'You can customize the **Heir tax rate** on the **Assumptions** screen. This percentage is used to compute the after-tax estate metric shown on the **Results** page, letting you compare the legacy impact of different withdrawal strategies.',
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
2
|
+
|
|
3
|
+
export const assumptionInvestmentReturnsArticle: LearningArticle = {
|
|
4
|
+
slug: 'assumption-investment-returns',
|
|
5
|
+
title: 'Investment returns and volatility',
|
|
6
|
+
description: 'How RetireGolden models investment growth, historical averages, and forward-looking returns.',
|
|
7
|
+
category: 'assumptions',
|
|
8
|
+
tags: ['returns', 'investing', 'volatility', 'stocks', 'bonds', 'monte carlo'],
|
|
9
|
+
audience: 'intermediate',
|
|
10
|
+
status: 'ready',
|
|
11
|
+
lastReviewed: '2026-06-30',
|
|
12
|
+
reviewCadence: 'annual',
|
|
13
|
+
sourceUrls: [
|
|
14
|
+
'https://corporate.vanguard.com/content/corporatesite/us/en/corp/vemo/2026-outlook-economic-upside-stock-market-downside.html',
|
|
15
|
+
'https://am.jpmorgan.com/us/en/asset-management/adv/insights/portfolio-insights/ltcma/',
|
|
16
|
+
],
|
|
17
|
+
relatedArticles: [
|
|
18
|
+
'sequence-of-returns-risk',
|
|
19
|
+
'historical-vs-random-return-models',
|
|
20
|
+
'inflation-risk',
|
|
21
|
+
'understanding-your-plan-assumptions',
|
|
22
|
+
],
|
|
23
|
+
relatedPlannerRoutes: ['/plan/:planId/assumptions', '/plan/:planId/accounts'],
|
|
24
|
+
currentYearSensitive: true,
|
|
25
|
+
priority: 'P1',
|
|
26
|
+
blocks: [
|
|
27
|
+
{
|
|
28
|
+
type: 'prose',
|
|
29
|
+
md: "Retirement assets grow through compounding investment returns, but the future rate of return is highly uncertain. To build a reliable plan, planners must balance the long-term historical records with forward-looking capital-market expectations.",
|
|
30
|
+
},
|
|
31
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
32
|
+
{
|
|
33
|
+
type: 'list',
|
|
34
|
+
items: [
|
|
35
|
+
'RetireGolden defaults to a **5.5%** blended plan-wide nominal return rate.',
|
|
36
|
+
'This represents a balanced, slightly conservative return that sits below long-run historical averages but aligns with forward-looking institutional outlooks.',
|
|
37
|
+
'For individual asset classes, RetireGolden\'s UI estimator uses illustrative nominal returns of **7% for stocks**, **4% for bonds**, and **2.5% for cash**.',
|
|
38
|
+
'Volatility (standard deviation) is modeled around **16%** for stocks and **6%** for bonds, which drives the Monte Carlo uncertainty analysis.',
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{ type: 'heading', text: 'Historical averages vs. forward outlooks' },
|
|
42
|
+
{
|
|
43
|
+
type: 'prose',
|
|
44
|
+
md: "Over the last century (1926–present), a classic US 60/40 balanced portfolio (60% large-cap stocks, 40% intermediate bonds) has averaged nominal returns of **8% to 9%** per year. However, institutional forecasters warn that forward-looking returns over the next 10–15 years may be lower due to higher equity valuations and moderate interest rates:",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'table',
|
|
48
|
+
caption: '2026 Capital Market Assumptions (Nominal 10-15 Yr Outlook)',
|
|
49
|
+
columns: ['Asset Class', 'Vanguard VEMO 2026', 'J.P. Morgan LTCMA 2026', 'Historical Average'],
|
|
50
|
+
rows: [
|
|
51
|
+
['**US Large-Cap Equity**', '4.0% – 5.0%', '6.7%', '~10.0%'],
|
|
52
|
+
['**US Aggregate Bonds**', '~4.0%', '4.6%', '~5.0%'],
|
|
53
|
+
['**60/40 Balanced Portfolio**', '4.0% – 4.6%', '6.4%', '~8.5%'],
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
type: 'prose',
|
|
58
|
+
md: "RetireGolden's **5.5%** blended default sits at a sensible midpoint. It accounts for potential fees, investment drags, and the possibility of lower-than-average returns over your specific retirement horizon.",
|
|
59
|
+
},
|
|
60
|
+
{ type: 'heading', text: 'The role of volatility and sequence risk' },
|
|
61
|
+
{
|
|
62
|
+
type: 'prose',
|
|
63
|
+
md: "Returns never arrive in a smooth, linear fashion. Volatility is the measure of how much returns deviate from the average in any given year. In RetireGolden, the Monte Carlo engine applies standard deviations (σ) representing typical historical swings:",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
type: 'list',
|
|
67
|
+
items: [
|
|
68
|
+
'**US Stocks:** Volatility is modeled at **σ ≈ 16%** (returns generally fall between −9% and +25% in 2 out of 3 years).',
|
|
69
|
+
'**US Bonds:** Volatility is modeled at **σ ≈ 6%** (safer, tighter range of fluctuations).',
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
type: 'prose',
|
|
74
|
+
md: "This volatility is critical because of **sequence-of-returns risk**: suffering a market downturn early in retirement, while you are actively withdrawing money, can deplete a portfolio much faster than experiencing the same downturn later in life.",
|
|
75
|
+
},
|
|
76
|
+
{ type: 'heading', text: 'Watch-outs' },
|
|
77
|
+
{
|
|
78
|
+
type: 'list',
|
|
79
|
+
items: [
|
|
80
|
+
'Do not read the 5.5% default as a forecast for your portfolio.',
|
|
81
|
+
'If account-level return assumptions differ from the plan default, those account-level values take precedence.',
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
{ type: 'heading', text: 'Where this shows up in the app' },
|
|
85
|
+
{
|
|
86
|
+
type: 'prose',
|
|
87
|
+
md: 'You can adjust the **Default return** on the **Assumptions** screen. This rate applies to any account that does not specify its own expected return. In the **Accounts** step, you can customize returns for individual accounts, or use the estimator to blend returns based on your allocation (using the Stocks/Bonds/Cash returns listed above).',
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
2
|
+
|
|
3
|
+
export const assumptionLongevityPlanningAgeArticle: LearningArticle = {
|
|
4
|
+
slug: 'assumption-longevity-planning-age',
|
|
5
|
+
title: 'How long to plan for (longevity)',
|
|
6
|
+
description: 'Why RetireGolden defaults to planning ages in the mid-to-late 90s, and the difference between life expectancy and planning horizon.',
|
|
7
|
+
category: 'assumptions',
|
|
8
|
+
tags: ['longevity', 'life expectancy', 'planning age', 'planning horizon'],
|
|
9
|
+
audience: 'beginner',
|
|
10
|
+
status: 'ready',
|
|
11
|
+
lastReviewed: '2026-06-30',
|
|
12
|
+
reviewCadence: 'stable',
|
|
13
|
+
sourceUrls: [
|
|
14
|
+
'https://www.longevityillustrator.org/',
|
|
15
|
+
'https://www.ssa.gov/oact/STATS/table4c6.html',
|
|
16
|
+
'https://www.soa.org/resources/announcements/press-releases/2024/actuaries-longevity-illustrator-new-look/',
|
|
17
|
+
],
|
|
18
|
+
relatedArticles: [
|
|
19
|
+
'longevity-risk',
|
|
20
|
+
'planning-for-couples-and-survivor-years',
|
|
21
|
+
'understanding-your-plan-assumptions',
|
|
22
|
+
],
|
|
23
|
+
relatedPlannerRoutes: ['/plan/:planId/assumptions', '/plan/:planId/household'],
|
|
24
|
+
currentYearSensitive: false,
|
|
25
|
+
priority: 'P1',
|
|
26
|
+
blocks: [
|
|
27
|
+
{
|
|
28
|
+
type: 'prose',
|
|
29
|
+
md: "One of the most difficult questions in retirement planning is: *How long will my money need to last?* Planning to your average \"life expectancy\" is a common trap—it is merely a median, meaning you have a 50% chance of outliving your assets. A secure retirement plan requires planning for a much longer horizon.",
|
|
30
|
+
},
|
|
31
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
32
|
+
{
|
|
33
|
+
type: 'list',
|
|
34
|
+
items: [
|
|
35
|
+
'RetireGolden defaults your planning age to a floor of **95** per person.',
|
|
36
|
+
'Life expectancy is a 50/50 midpoint. Actuarial guidance is to plan for the **75th to 90th percentile** of survival to protect against outliving your savings.',
|
|
37
|
+
'For couples, joint survival (the probability that at least one partner is still alive) is significantly higher than individual survival, commonly reaching age 95 or 98.',
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
{ type: 'heading', text: 'Life expectancy vs. planning horizon' },
|
|
41
|
+
{
|
|
42
|
+
type: 'prose',
|
|
43
|
+
md: "According to the **Actuaries Longevity Illustrator** (sponsored by the American Academy of Actuaries and the Society of Actuaries), a 65-year-old non-smoking male has a median life expectancy of about age 86. However, that means half of all 65-year-old men will live *past* 86. To build a safe plan, you must look at the tail end of the survival curve:",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
type: 'table',
|
|
47
|
+
caption: 'Survival probabilities for 65-year-olds (Non-smokers)',
|
|
48
|
+
columns: ['Percentile of Survival', '65yo Male', '65yo Female', 'Couple (At least one alive)'],
|
|
49
|
+
rows: [
|
|
50
|
+
['**50% (Median)**', 'Age 86', 'Age 89', 'Age 92'],
|
|
51
|
+
['**25% (75th percentile)**', 'Age 91', 'Age 93', 'Age 96'],
|
|
52
|
+
['**10% (90th percentile)**', 'Age 95', 'Age 97', 'Age 99'],
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
type: 'prose',
|
|
57
|
+
md: "As shown, there is a **10% chance** that a couple will have at least one partner live to **age 99**. Planning to age 90 or 95 leaves a significant risk of running out of money in your final years. That is why RetireGolden floors all planning age defaults at **95**.",
|
|
58
|
+
},
|
|
59
|
+
{ type: 'heading', text: 'Modeling couples and survivor years' },
|
|
60
|
+
{
|
|
61
|
+
type: 'prose',
|
|
62
|
+
md: "When planning for a couple, the plan must account for the **survivor period**—the years after one spouse passes. This period often sees a drop in household income (losing the smaller of the two Social Security checks) while fixed expenses (like housing and utilities) remain mostly flat. Tying the planning horizon to the longer joint life expectancy ensures the surviving partner is not left underfunded.",
|
|
63
|
+
},
|
|
64
|
+
{ type: 'heading', text: 'Watch-outs' },
|
|
65
|
+
{
|
|
66
|
+
type: 'list',
|
|
67
|
+
items: [
|
|
68
|
+
'Life expectancy is not the same as a planning horizon; half of similar people may live longer.',
|
|
69
|
+
'For couples, the relevant horizon is often the last survivor, not either person alone.',
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
{ type: 'heading', text: 'Where this shows up in the app' },
|
|
73
|
+
{
|
|
74
|
+
type: 'prose',
|
|
75
|
+
md: 'Your planning age is set per household member on the **Household** step (under the edit icon for each person). While the app defaults to age 95, you can override this manually if you have specific family history or health indications that suggest a different target.',
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
}
|