@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,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "COLA and inflation protection" - a Social Security P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const colaInflationProtectionArticle: LearningArticle = {
|
|
8
|
+
slug: 'cola-and-inflation-protection',
|
|
9
|
+
title: 'COLA and inflation protection',
|
|
10
|
+
description: 'How annual cost-of-living adjustments protect benefit buying power.',
|
|
11
|
+
category: 'social-security',
|
|
12
|
+
tags: ['social security', 'cola', 'inflation', 'purchasing power', 'benefits'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: [
|
|
18
|
+
'https://www.ssa.gov/cola/',
|
|
19
|
+
'https://www.ssa.gov/benefits/retirement/planner/agereduction.html',
|
|
20
|
+
'https://www.ssa.gov/benefits/retirement/planner/delayret.html',
|
|
21
|
+
],
|
|
22
|
+
relatedArticles: [
|
|
23
|
+
'social-security-claiming-age-basics',
|
|
24
|
+
'pia-aime-and-bend-points',
|
|
25
|
+
'inflation-risk',
|
|
26
|
+
'break-even-useful-lens',
|
|
27
|
+
'trust-fund-haircut-scenarios',
|
|
28
|
+
],
|
|
29
|
+
relatedPlannerRoutes: ['/plan/:planId/social-security', '/plan/:planId/assumptions', '/plan/:planId/results'],
|
|
30
|
+
currentYearSensitive: true,
|
|
31
|
+
priority: 'P1',
|
|
32
|
+
blocks: [
|
|
33
|
+
{
|
|
34
|
+
type: 'prose',
|
|
35
|
+
md: 'COLA stands for cost-of-living adjustment. It is the annual Social Security increase meant to help benefits keep up with inflation. Without that adjustment, a benefit that looks comfortable at the start of retirement could lose buying power over a long life.',
|
|
36
|
+
},
|
|
37
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
38
|
+
{
|
|
39
|
+
type: 'list',
|
|
40
|
+
items: [
|
|
41
|
+
'A Social Security COLA raises the benefit amount after claiming; it is not a separate account balance.',
|
|
42
|
+
'COLA protection can make a later, larger benefit especially valuable in very long lives.',
|
|
43
|
+
'RetireGolden can model Social Security COLA as matching inflation or as a fixed annual rate.',
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
47
|
+
{
|
|
48
|
+
type: 'prose',
|
|
49
|
+
md: 'Inflation raises the cost of the same lifestyle. A grocery basket, insurance premium, or utility bill may cost more in later years than it costs today. A benefit with a cost-of-living adjustment grows over time, so the income stream has some built-in inflation protection.\n\nThat does not mean Social Security perfectly matches every retiree\'s real expenses. Your personal spending may rise faster or slower than the index used for the COLA. Healthcare can also behave differently from general inflation. But the feature still matters: a COLA-adjusted check is different from a fixed pension check that never rises.',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
type: 'figure',
|
|
53
|
+
image: { src: '/learn/images/cola-inflation-protection.webp' },
|
|
54
|
+
caption:
|
|
55
|
+
'A COLA-adjusted benefit can rise with the price path, helping a Social Security check keep more of its buying power over time.',
|
|
56
|
+
alt: 'A benefit stream follows an upward inflation path while a fixed check falls behind, with a retirement timeline and a protected income bucket.',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'table',
|
|
60
|
+
caption: 'Why COLA changes the claiming-age conversation.',
|
|
61
|
+
columns: ['Planning lens', 'What COLA changes', 'What it does not solve'],
|
|
62
|
+
rows: [
|
|
63
|
+
['Monthly check', 'The starting benefit can grow after claiming', 'It does not remove the early-claim reduction'],
|
|
64
|
+
['Long life', 'Later years receive inflation-adjusted dollars', 'It does not guarantee your full lifestyle is covered'],
|
|
65
|
+
['Couples', 'The larger survivor check can keep growing', 'It does not replace survivor tax planning'],
|
|
66
|
+
['Stress tests', 'You can compare fixed COLA and inflation-matched assumptions', 'It is still an assumption, not a promise about future law'],
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
{ type: 'heading', text: 'A worked example' },
|
|
70
|
+
{
|
|
71
|
+
type: 'scenario',
|
|
72
|
+
name: 'The Nolan household',
|
|
73
|
+
assumptions: [
|
|
74
|
+
{ label: 'Claim-now base', value: '$2,000 monthly benefit' },
|
|
75
|
+
{ label: 'Delayed base', value: '$2,640 monthly benefit before future COLAs' },
|
|
76
|
+
{ label: 'Illustrative COLA', value: 'At 3% for 20 years, those bases grow to about $3,600 vs $4,800 a month' },
|
|
77
|
+
],
|
|
78
|
+
summary:
|
|
79
|
+
'Both checks receive the same percentage COLA, but the larger base compounds into about **$1,200** more monthly income 20 years later in this simplified example.',
|
|
80
|
+
},
|
|
81
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
82
|
+
{
|
|
83
|
+
type: 'prose',
|
|
84
|
+
md: 'RetireGolden applies Social Security COLA inside the projection. In **Assumptions**, the Social Security COLA setting can match the general inflation assumption or use a fixed annual rate. That choice affects Results, Social Security analysis, and any scenario that relies heavily on benefits in later years.',
|
|
85
|
+
},
|
|
86
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
87
|
+
{
|
|
88
|
+
type: 'list',
|
|
89
|
+
items: [
|
|
90
|
+
'Comparing claim ages only by the first monthly check.',
|
|
91
|
+
'Treating a fixed pension and a COLA-adjusted Social Security benefit as if they carry the same inflation risk.',
|
|
92
|
+
'Assuming the official COLA will match your household\'s exact spending inflation.',
|
|
93
|
+
'For couples, ignoring that the surviving spouse may keep the larger benefit.',
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
97
|
+
{
|
|
98
|
+
type: 'prose',
|
|
99
|
+
md: 'Use **Social Security** to enter each person\'s benefit and claim age. Use **Assumptions** to set the Social Security COLA behavior, then check **Results** and **Social Security analysis** for the long-run effect.',
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Divorced-spousal and survivor records" - a Social Security P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const divorcedSpousalSurvivorRecordsArticle: LearningArticle = {
|
|
8
|
+
slug: 'divorced-spousal-and-survivor-records',
|
|
9
|
+
title: 'Divorced-spousal and survivor records',
|
|
10
|
+
description: "When benefits can be based on an ex-spouse's record.",
|
|
11
|
+
category: 'social-security',
|
|
12
|
+
tags: ['social security', 'divorced spouse', 'survivor benefit', 'former spouse', 'claiming'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: [
|
|
18
|
+
'https://www.ssa.gov/benefits/retirement/planner/applying7.html',
|
|
19
|
+
'https://www.ssa.gov/benefits/survivors/',
|
|
20
|
+
],
|
|
21
|
+
relatedArticles: [
|
|
22
|
+
'spousal-and-survivor-benefits',
|
|
23
|
+
'social-security-claiming-age-basics',
|
|
24
|
+
'planning-for-couples-and-survivor-years',
|
|
25
|
+
'reading-the-social-security-analysis-page',
|
|
26
|
+
],
|
|
27
|
+
relatedPlannerRoutes: ['/plan/:planId/social-security', '/plan/:planId/social-security-analysis'],
|
|
28
|
+
currentYearSensitive: true,
|
|
29
|
+
priority: 'P1',
|
|
30
|
+
blocks: [
|
|
31
|
+
{
|
|
32
|
+
type: 'prose',
|
|
33
|
+
md: 'A former spouse can matter in Social Security planning even when that person is not part of your household today. In some cases, a divorced-spousal benefit or survivor benefit can be based on a former spouse\'s record.',
|
|
34
|
+
},
|
|
35
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
36
|
+
{
|
|
37
|
+
type: 'list',
|
|
38
|
+
items: [
|
|
39
|
+
'A long marriage to a living ex-spouse may support a divorced-spousal benefit if the claimant is currently unmarried.',
|
|
40
|
+
'A deceased former spouse may support a survivor benefit, subject to survivor and remarriage rules.',
|
|
41
|
+
'RetireGolden lets a single-person plan enter former-spouse records, then compares the eligible former-spouse benefit against the person\'s own benefit.',
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
45
|
+
{
|
|
46
|
+
type: 'prose',
|
|
47
|
+
md: 'Social Security is based on work records, but not every benefit has to be based only on your own record. A current spouse, former spouse, or deceased spouse can sometimes create a higher benefit.\n\nThis is easiest to misunderstand after divorce or widowhood. A person may have their own retirement benefit and also a possible benefit tied to a former spouse. The planning question is usually not "Can I add both together?" It is "Which eligible benefit is larger, and when can it begin?"',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'figure',
|
|
51
|
+
image: { src: '/learn/images/divorced-spousal-survivor-records.webp' },
|
|
52
|
+
caption:
|
|
53
|
+
'Former-spouse records act like additional benefit paths; the modeled household uses the largest eligible path instead of stacking all paths together.',
|
|
54
|
+
alt: 'A person has three possible Social Security paths from their own record, a living former spouse record, and a deceased former spouse record, with the largest eligible path flowing into one benefit bucket.',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
type: 'table',
|
|
58
|
+
caption: 'How RetireGolden separates former-spouse records.',
|
|
59
|
+
columns: ['Record type', 'Main eligibility idea', 'Modeled benefit idea'],
|
|
60
|
+
rows: [
|
|
61
|
+
['Living ex-spouse', 'A marriage of at least ten years and a currently unmarried claimant', 'Up to half of the former spouse PIA, reduced for early claiming'],
|
|
62
|
+
['Deceased former spouse', 'Survivor eligibility and remarriage rules', 'A survivor-style benefit compared with the claimant\'s own benefit'],
|
|
63
|
+
['Current spouse', 'A current two-person household', 'Handled separately through the current-spouse top-up and survivor step-up'],
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
{ type: 'heading', text: 'A worked example' },
|
|
67
|
+
{
|
|
68
|
+
type: 'scenario',
|
|
69
|
+
name: 'The Morgan plan',
|
|
70
|
+
assumptions: [
|
|
71
|
+
{ label: 'Household', value: 'Single retiree with one former-spouse record' },
|
|
72
|
+
{ label: 'Own benefit estimate', value: '$1,100 a month at full retirement age' },
|
|
73
|
+
{ label: 'Former-spouse estimate', value: '$1,450 a month if eligibility is confirmed' },
|
|
74
|
+
],
|
|
75
|
+
summary:
|
|
76
|
+
'The former-spouse record matters only after eligibility is confirmed. If the $1,450 estimate applies, it adds about **$350** a month compared with Morgan\'s own modeled benefit.',
|
|
77
|
+
},
|
|
78
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
79
|
+
{
|
|
80
|
+
type: 'prose',
|
|
81
|
+
md: 'On the **Social Security** screen, a Social Security income stream can include former spouses. RetireGolden asks for the relationship type, former spouse date of birth, their estimated primary insurance amount, years married, and remarriage age when relevant. The projection then uses the larger eligible benefit rather than adding all benefits together.',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
type: 'callout',
|
|
85
|
+
tone: 'note',
|
|
86
|
+
md: 'Model note: RetireGolden uses planning-level simplifications. Divorced-spousal benefits require the claimant to be single in the modeled household. Survivor benefits on a former spouse use simplified reductions and should be checked against SSA before making a filing decision.',
|
|
87
|
+
},
|
|
88
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
89
|
+
{
|
|
90
|
+
type: 'list',
|
|
91
|
+
items: [
|
|
92
|
+
'Assuming a divorce always erases Social Security spousal rights.',
|
|
93
|
+
'Adding your own benefit and a spousal benefit together instead of comparing the larger eligible benefit.',
|
|
94
|
+
'Forgetting remarriage rules for survivor benefits.',
|
|
95
|
+
'Entering a former spouse record in RetireGolden without verifying the real SSA eligibility facts.',
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
99
|
+
{
|
|
100
|
+
type: 'prose',
|
|
101
|
+
md: 'Open **Social Security**, expand the person\'s Social Security entry, and add former-spouse records only when they may apply. Then use **Social Security analysis** to compare claiming ages with the former-spouse record included.',
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
2
|
+
|
|
3
|
+
export const dynamicSpendingGuardrailsArticle: LearningArticle = {
|
|
4
|
+
slug: 'dynamic-spending-guardrails',
|
|
5
|
+
title: 'Dynamic spending guardrails',
|
|
6
|
+
description: 'How flexible spending rules can reduce sequence risk without pretending risk disappears.',
|
|
7
|
+
category: 'risk-uncertainty',
|
|
8
|
+
tags: ['guardrails', 'spending', 'sequence risk', 'monte carlo', 'flexibility'],
|
|
9
|
+
audience: 'intermediate',
|
|
10
|
+
status: 'ready',
|
|
11
|
+
lastReviewed: '2026-07-06',
|
|
12
|
+
reviewCadence: 'stable',
|
|
13
|
+
sourceUrls: [
|
|
14
|
+
'https://www.onefpa.org/journal/Pages/Decision-Rules-and-Portfolio-Management-for-Retirees.aspx',
|
|
15
|
+
'https://www.onefpa.org/journal/Pages/COLA-Rules-and-Portfolio-Management-for-Retirees.aspx',
|
|
16
|
+
],
|
|
17
|
+
relatedArticles: [
|
|
18
|
+
'risk-based-guardrails',
|
|
19
|
+
'sequence-of-returns-risk',
|
|
20
|
+
'understanding-monte-carlo-success-rate',
|
|
21
|
+
'three-big-questions-spending-time-risk',
|
|
22
|
+
],
|
|
23
|
+
relatedPlannerRoutes: ['/plan/:planId/insights', '/plan/:planId/spending', '/plan/:planId/monte-carlo'],
|
|
24
|
+
currentYearSensitive: false,
|
|
25
|
+
priority: 'P1',
|
|
26
|
+
featured: false,
|
|
27
|
+
blocks: [
|
|
28
|
+
{
|
|
29
|
+
type: 'prose',
|
|
30
|
+
md: 'Dynamic spending guardrails are rules for temporarily adjusting retirement spending when a portfolio is under stress or running ahead. Rather than taking the same inflation-adjusted withdrawal every year, you define ahead of time when you would trim flexible spending and when you would allow raises.',
|
|
31
|
+
},
|
|
32
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
33
|
+
{
|
|
34
|
+
type: 'list',
|
|
35
|
+
items: [
|
|
36
|
+
'**Can reduce sequence risk**: Spending less during weak markets can reduce the need to sell investments after losses.',
|
|
37
|
+
'**Makes flexibility explicit**: Guardrails turn "we could cut back if needed" into a rule you can test and discuss before stress arrives.',
|
|
38
|
+
'**Does not remove risk**: A flexible plan can still fail if spending is too high, markets are unusually poor, or large care costs arrive.',
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
42
|
+
{
|
|
43
|
+
type: 'prose',
|
|
44
|
+
md: 'In a fixed-spending retirement plan, you choose a starting budget and increase it by inflation every year. If markets fall early in retirement, the plan may need to sell more shares from a smaller portfolio to fund that same budget.\n\nGuardrail methods set rules before that happens. A capital-preservation rule might trim spending when the current withdrawal rate climbs too far above the starting rate. A prosperity rule might allow a raise when the portfolio grows enough that the withdrawal rate falls.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'table',
|
|
48
|
+
columns: ['Strategy', 'During a market drop', 'Monte Carlo success rate', 'Lifetime spending'],
|
|
49
|
+
rows: [
|
|
50
|
+
['Fixed spending', 'Withdraw the same amount from a smaller portfolio', 'Often lower', 'Steadier lifestyle, higher depletion risk'],
|
|
51
|
+
['Dynamic guardrails', 'Temporarily trim flexible spending', 'Often higher', 'More variable, but with more built-in response'],
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
55
|
+
{
|
|
56
|
+
type: 'prose',
|
|
57
|
+
md: "RetireGolden models guardrails directly inside the same annual ledger used by Results and Monte Carlo. In Spending, you can enter a required floor, target spending, optional ideal/excess annual upside, and flexible goals with earliest/latest windows, priority, and partial-funding rules. When withdrawal-rate guardrails are active, the engine cuts flexible layers before the required floor and can restore target spending or fund upside layers in strong paths.",
|
|
58
|
+
},
|
|
59
|
+
{ type: 'heading', text: 'A worked example' },
|
|
60
|
+
{
|
|
61
|
+
type: 'scenario',
|
|
62
|
+
name: 'The Ortiz household',
|
|
63
|
+
assumptions: [
|
|
64
|
+
{ label: 'Starting portfolio', value: '$1,000,000' },
|
|
65
|
+
{ label: 'Baseline spending', value: '$50,000 / year' },
|
|
66
|
+
{ label: 'Market drop', value: 'Portfolio drops to $750,000 in year 2' },
|
|
67
|
+
{ label: 'Current withdrawal rate', value: '$50,000 / $750,000 = 6.67% (originally 5.0%)' },
|
|
68
|
+
{
|
|
69
|
+
label: 'Guardrail trigger',
|
|
70
|
+
value: 'Because 6.67% is more than 20% above the starting 5% rate, they trim spending by 10% to $45,000 until the portfolio recovers.',
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
summary: 'The rule does not predict markets. It defines a response the household is willing to take if weak markets arrive early.',
|
|
74
|
+
},
|
|
75
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
76
|
+
{
|
|
77
|
+
type: 'list',
|
|
78
|
+
items: [
|
|
79
|
+
'**Waiting too long to cut**: Cuts are most effective when made soon after the guardrail is crossed, not years later.',
|
|
80
|
+
'**Pretending all spending is flexible**: A temporary 10% cut is easier when it comes from travel, gifts, dining, or upgrades than from housing, insurance, or medical needs.',
|
|
81
|
+
'**Treating a research rule as a promise**: Guardrails can improve modeled resilience, but they still depend on market returns, taxes, inflation, health costs, and whether the household can follow the rule.',
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
85
|
+
{
|
|
86
|
+
type: 'prose',
|
|
87
|
+
md: 'Use **Spending** to set the required floor, upside layers, flexible goals, and guardrail policy. Use **Results** to audit annual guardrail actions and layer shortfalls. Use **Monte Carlo** to compare required-floor success, target-lifestyle success, target attainment, and flexible-goal outcomes across many market paths.',
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Earnings test before full retirement age" - a Social Security P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const earningsTestBeforeFraArticle: LearningArticle = {
|
|
8
|
+
slug: 'earnings-test-before-fra',
|
|
9
|
+
title: 'Earnings test before full retirement age',
|
|
10
|
+
description: 'How working while claiming early can temporarily reduce benefits.',
|
|
11
|
+
category: 'social-security',
|
|
12
|
+
tags: ['social security', 'earnings test', 'full retirement age', 'working while claiming', 'wages'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-19',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: [
|
|
18
|
+
'https://www.ssa.gov/benefits/retirement/planner/whileworking.html',
|
|
19
|
+
'https://www.ssa.gov/oact/COLA/rtea.html',
|
|
20
|
+
],
|
|
21
|
+
relatedArticles: [
|
|
22
|
+
'social-security-claiming-age-basics',
|
|
23
|
+
'pia-aime-and-bend-points',
|
|
24
|
+
'break-even-useful-lens',
|
|
25
|
+
'how-social-security-is-taxed',
|
|
26
|
+
],
|
|
27
|
+
relatedPlannerRoutes: ['/plan/:planId/social-security', '/plan/:planId/social-security-analysis'],
|
|
28
|
+
currentYearSensitive: true,
|
|
29
|
+
priority: 'P1',
|
|
30
|
+
blocks: [
|
|
31
|
+
{
|
|
32
|
+
type: 'prose',
|
|
33
|
+
md: 'If you claim Social Security before full retirement age and keep working, the retirement earnings test can temporarily withhold part of your benefit. This is about earned wages, not investment income or withdrawals.',
|
|
34
|
+
},
|
|
35
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
36
|
+
{
|
|
37
|
+
type: 'list',
|
|
38
|
+
items: [
|
|
39
|
+
'The earnings test applies before full retirement age when wages are above the annual exempt amount.',
|
|
40
|
+
'Different withholding rates apply before the year you reach full retirement age and during that year.',
|
|
41
|
+
'After full retirement age, the earnings test no longer withholds benefits, and withheld months can raise the later benefit calculation.',
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
45
|
+
{
|
|
46
|
+
type: 'prose',
|
|
47
|
+
md: 'The earnings test is easy to misread as a permanent tax. It is better to think of it as temporary withholding. If early benefits are withheld because you worked, Social Security later adjusts the benefit as if some of those early months had not been claimed.\n\nThat does not mean the timing is painless. You still have less cash in the years when benefits are withheld, and that can change portfolio withdrawals, taxes, and Roth conversion room.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'figure',
|
|
51
|
+
image: { src: '/learn/images/earnings-test-before-fra.webp' },
|
|
52
|
+
caption:
|
|
53
|
+
'Before full retirement age, wages can cause temporary benefit withholding; later, withheld months can be credited back.',
|
|
54
|
+
alt: 'A work-income ribbon crosses a checkpoint, part of the benefit stream is held in a reserve bucket, and a later stream continues after full retirement age.',
|
|
55
|
+
},
|
|
56
|
+
{ type: 'heading', text: 'What changes when you work and claim early' },
|
|
57
|
+
{
|
|
58
|
+
type: 'table',
|
|
59
|
+
caption: 'Earnings-test treatment by timing.',
|
|
60
|
+
columns: ['Timing', 'What SSA looks at', 'What can happen'],
|
|
61
|
+
rows: [
|
|
62
|
+
['Before the year you reach full retirement age', 'Wages above the annual exempt amount', 'Part of the benefit can be withheld'],
|
|
63
|
+
['During the year you reach full retirement age', 'A higher exempt amount before the FRA month', 'Withholding can still happen, but under a different rule'],
|
|
64
|
+
['After full retirement age', 'The earnings test no longer applies', 'Working does not withhold retirement benefits under this test'],
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
{ type: 'heading', text: 'A worked example' },
|
|
68
|
+
{
|
|
69
|
+
type: 'scenario',
|
|
70
|
+
name: 'The Rivera household',
|
|
71
|
+
assumptions: [
|
|
72
|
+
{ label: 'Claim choice', value: 'Starts a $22,000 annual benefit before full retirement age' },
|
|
73
|
+
{ label: 'Work choice', value: '$35,000 of part-time wages for several years' },
|
|
74
|
+
{ label: 'Cash-flow effect', value: 'Illustrative earnings-test withholding reduces the first-year benefit by about $5,000' },
|
|
75
|
+
],
|
|
76
|
+
summary:
|
|
77
|
+
'Even if withheld months are later credited, the Rivera plan still needs about **$5,000** more from wages, cash, or the portfolio in that early year.',
|
|
78
|
+
},
|
|
79
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
80
|
+
{
|
|
81
|
+
type: 'prose',
|
|
82
|
+
md: 'RetireGolden runs wages before Social Security in each projection year, applies the annual earnings-test limits from the parameter pack, withholds benefits when needed, and credits whole withheld months back at full retirement age. This is an annual planning approximation, not a month-by-month SSA filing model.',
|
|
83
|
+
},
|
|
84
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
85
|
+
{
|
|
86
|
+
type: 'list',
|
|
87
|
+
items: [
|
|
88
|
+
'Thinking the earnings test applies after full retirement age.',
|
|
89
|
+
'Applying it to investment income, IRA withdrawals, pensions, or Roth conversions instead of wages.',
|
|
90
|
+
'Ignoring the cash-flow strain in the years when benefits are withheld.',
|
|
91
|
+
'Assuming the RetireGolden annual approximation will match SSA month-by-month administration exactly.',
|
|
92
|
+
],
|
|
93
|
+
},
|
|
94
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
95
|
+
{
|
|
96
|
+
type: 'prose',
|
|
97
|
+
md: 'Use **Social Security** to set claim age and **Income** to enter wages. Then inspect **Results** and **Social Security analysis** to see whether early claiming while working helps or hurts the whole plan.',
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Employer match and contribution order" - an Accounts and Saving P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const employerMatchAndContributionOrderArticle: LearningArticle = {
|
|
8
|
+
slug: 'employer-match-and-contribution-order',
|
|
9
|
+
title: 'Employer match and contribution order',
|
|
10
|
+
description: 'A common priority order for where each saved dollar should go.',
|
|
11
|
+
category: 'accounts-saving',
|
|
12
|
+
tags: ['employer match', 'contribution order', '401k', 'hsa', 'ira', 'saving priority'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: [
|
|
18
|
+
'https://www.irs.gov/retirement-plans/plan-participant-employee/retirement-topics-contributions',
|
|
19
|
+
'https://www.irs.gov/retirement-plans/401k-plans',
|
|
20
|
+
'https://www.irs.gov/forms-pubs/about-publication-969',
|
|
21
|
+
],
|
|
22
|
+
relatedArticles: [
|
|
23
|
+
'traditional-vs-roth-contributions',
|
|
24
|
+
'hsas-as-retirement-accounts',
|
|
25
|
+
'account-types-overview',
|
|
26
|
+
'fees-expense-ratios-and-compounding-drag',
|
|
27
|
+
'taxable-brokerage-basis-and-capital-gains',
|
|
28
|
+
],
|
|
29
|
+
relatedPlannerRoutes: ['/plan/:planId/accounts', '/plan/:planId/scenarios', '/plan/:planId/results'],
|
|
30
|
+
currentYearSensitive: true,
|
|
31
|
+
priority: 'P1',
|
|
32
|
+
blocks: [
|
|
33
|
+
{
|
|
34
|
+
type: 'prose',
|
|
35
|
+
md: 'Contribution order is the order in which a household directs new savings. It is not only about return. It is also about employer match, tax treatment, fees, liquidity, contribution limits, and whether the money may be needed before retirement.',
|
|
36
|
+
},
|
|
37
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
38
|
+
{
|
|
39
|
+
type: 'list',
|
|
40
|
+
items: [
|
|
41
|
+
'An employer match is often the first retirement-savings target because it can add money you would otherwise leave behind.',
|
|
42
|
+
'Tax-advantaged accounts have rules, limits, and access constraints, so the best order depends on the household.',
|
|
43
|
+
'After the match, compare HSA, IRA, employer plan, debt payoff, cash reserves, and taxable brokerage by purpose and flexibility.',
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
47
|
+
{
|
|
48
|
+
type: 'prose',
|
|
49
|
+
md: 'A common savings order starts with enough cash to avoid forced bad decisions, then captures the full employer match, then weighs high-interest debt, HSA eligibility, IRA or 401(k) contributions, and taxable brokerage. That order is a framework. A household with unstable income, large medical expenses, or unusually good employer-plan options may reasonably choose a different path.',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
type: 'figure',
|
|
53
|
+
image: { src: '/learn/images/employer-match-contribution-order.webp' },
|
|
54
|
+
caption:
|
|
55
|
+
'A contribution order helps each saved dollar climb from urgent needs toward long-term investment buckets.',
|
|
56
|
+
alt: 'A savings dollar climbs a staircase from cash reserve to employer match, HSA, retirement accounts, and taxable brokerage, with a small employer match marker near the bottom.',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'table',
|
|
60
|
+
caption: 'One practical order to test, not a universal rule.',
|
|
61
|
+
columns: ['Priority', 'Why it often comes early', 'Why it might move'],
|
|
62
|
+
rows: [
|
|
63
|
+
['Cash buffer', 'Prevents emergencies from becoming expensive withdrawals or debt', 'A household with secure income may need a smaller buffer'],
|
|
64
|
+
['Employer match', 'Can add employer dollars on top of your own contribution', 'Vesting, plan quality, and cash-flow limits still matter'],
|
|
65
|
+
['High-interest debt', 'A guaranteed avoided cost can beat risky investment return', 'Low-rate debt may be less urgent'],
|
|
66
|
+
['HSA if eligible', 'Can combine tax benefits with healthcare flexibility', 'Only available with qualifying coverage and rules'],
|
|
67
|
+
['IRA or 401(k)', 'Tax-advantaged compounding and payroll simplicity', 'Fees, investment menu, tax rate, and access rules vary'],
|
|
68
|
+
['Taxable brokerage', 'Flexible and not tied to retirement-account withdrawal rules', 'Less tax-sheltered than retirement accounts'],
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
{ type: 'heading', text: 'A worked example' },
|
|
72
|
+
{
|
|
73
|
+
type: 'scenario',
|
|
74
|
+
name: 'The Wilson household',
|
|
75
|
+
assumptions: [
|
|
76
|
+
{ label: 'Employer plan', value: 'Matches 100% of the first 4% of pay' },
|
|
77
|
+
{ label: 'Pay', value: '$100,000 salary, so the first $4,000 contribution earns a $4,000 match' },
|
|
78
|
+
{ label: 'Next dollars', value: 'After the match, compare HSA contributions and taxable bridge savings' },
|
|
79
|
+
],
|
|
80
|
+
summary:
|
|
81
|
+
'The first $4,000 contribution effectively adds **$8,000** to retirement savings before investment returns. After that, unmatched 401(k), HSA, and taxable bridge dollars need a normal plan comparison.',
|
|
82
|
+
},
|
|
83
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
84
|
+
{
|
|
85
|
+
type: 'prose',
|
|
86
|
+
md: 'RetireGolden does not currently calculate an employer match from a payroll formula. Enter only the employee contribution you expect to make in the account\'s annual contribution field. Do not add future employer match there: the engine treats that field as an employee contribution subject to contribution limits and, for pre-tax accounts, as a deduction from taxable income. Include already-vested match dollars in the current balance instead.',
|
|
87
|
+
},
|
|
88
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
89
|
+
{
|
|
90
|
+
type: 'list',
|
|
91
|
+
items: [
|
|
92
|
+
'Missing the match while contributing elsewhere first.',
|
|
93
|
+
'Maxing an account with poor investment options while ignoring an HSA or IRA that better fits the plan.',
|
|
94
|
+
'Putting every dollar into retirement accounts and leaving no flexible bridge money.',
|
|
95
|
+
'Forgetting that contribution limits apply across account groups, not always one account at a time.',
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
99
|
+
{
|
|
100
|
+
type: 'prose',
|
|
101
|
+
md: 'Use **Accounts** for annual contribution inputs. Create one scenario with the current savings order and another with the next dollar redirected to HSA, Roth, traditional, or taxable savings. Then compare taxes, depletion year, and Monte Carlo results.',
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
}
|