@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,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Trust fund haircut scenarios" - a Social Security P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const trustFundHaircutScenariosArticle: LearningArticle = {
|
|
8
|
+
slug: 'trust-fund-haircut-scenarios',
|
|
9
|
+
title: 'Trust fund haircut scenarios',
|
|
10
|
+
description: 'How to model a possible future reduction in scheduled benefits.',
|
|
11
|
+
category: 'social-security',
|
|
12
|
+
tags: ['social security', 'trust fund', 'haircut', 'scenario', 'stress test'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: ['https://www.ssa.gov/OACT/TR/'],
|
|
18
|
+
relatedArticles: [
|
|
19
|
+
'cola-and-inflation-protection',
|
|
20
|
+
'social-security-claiming-age-basics',
|
|
21
|
+
'using-scenarios-to-compare-choices',
|
|
22
|
+
'how-assumptions-change-the-answer',
|
|
23
|
+
],
|
|
24
|
+
relatedPlannerRoutes: [
|
|
25
|
+
'/plan/:planId/assumptions',
|
|
26
|
+
'/plan/:planId/scenarios',
|
|
27
|
+
'/plan/:planId/social-security',
|
|
28
|
+
'/plan/:planId/results',
|
|
29
|
+
],
|
|
30
|
+
currentYearSensitive: true,
|
|
31
|
+
priority: 'P1',
|
|
32
|
+
blocks: [
|
|
33
|
+
{
|
|
34
|
+
type: 'prose',
|
|
35
|
+
md: 'A Social Security trust fund haircut scenario asks a practical question: what if scheduled benefits were reduced in a future year? It is a stress test, not a prediction of what Congress or SSA will do.',
|
|
36
|
+
},
|
|
37
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
38
|
+
{
|
|
39
|
+
type: 'list',
|
|
40
|
+
items: [
|
|
41
|
+
'Scheduled benefits and payable benefits can be different policy questions.',
|
|
42
|
+
'A haircut scenario reduces modeled Social Security benefits starting in a chosen year.',
|
|
43
|
+
'The point is to test dependency on Social Security, not to forecast the exact law.',
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
47
|
+
{
|
|
48
|
+
type: 'prose',
|
|
49
|
+
md: 'Social Security is not a personal account with your name on a trust-fund balance. It is a national program funded by taxes, trust funds, and law. Trustees reports discuss program finances and projected shortfalls, but the final outcome depends on future policy choices.\n\nFor planning, the useful move is to separate opinion from resilience. You can run the plan once using scheduled benefits, then run a second version with a future benefit reduction. If both plans work, the household is less exposed to Social Security policy risk. If the haircut plan fails, the result tells you where the plan depends on benefits most.',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
type: 'figure',
|
|
53
|
+
image: { src: '/learn/images/trust-fund-haircut-scenarios.webp' },
|
|
54
|
+
caption:
|
|
55
|
+
'A trust fund haircut scenario draws a future boundary, then tests whether the plan can absorb a reduced Social Security stream after that point.',
|
|
56
|
+
alt: 'A Social Security income ribbon crosses a timeline and becomes narrower after a warning boundary, while portfolio and spending buckets show the plan absorbing the change.',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'table',
|
|
60
|
+
caption: 'How to use a haircut scenario without overclaiming precision.',
|
|
61
|
+
columns: ['Question', 'Good use', 'Weak use'],
|
|
62
|
+
rows: [
|
|
63
|
+
['How dependent is the plan?', 'Compare scheduled benefits with a reduced-benefit scenario', 'Assume the exact cut and year are known'],
|
|
64
|
+
['Which years are fragile?', 'Look for depletion or tax changes after the cut year', 'Focus only on the first year of retirement'],
|
|
65
|
+
['What can I change?', 'Test spending, retirement age, saving, or claiming alternatives', 'Treat the scenario as a personal recommendation'],
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
{ type: 'heading', text: 'A worked example' },
|
|
69
|
+
{
|
|
70
|
+
type: 'scenario',
|
|
71
|
+
name: 'The Patel household',
|
|
72
|
+
assumptions: [
|
|
73
|
+
{ label: 'Base case', value: '$50,000 a year of scheduled Social Security benefits' },
|
|
74
|
+
{ label: 'Stress case', value: '23% reduction starting in a future year' },
|
|
75
|
+
{ label: 'Income gap', value: 'Benefits fall by about $11,500 a year after the haircut starts' },
|
|
76
|
+
],
|
|
77
|
+
summary:
|
|
78
|
+
'The haircut scenario does not predict a cut. It asks whether the Patels could absorb an **$11,500** annual income gap with spending flexibility, later work, or portfolio withdrawals.',
|
|
79
|
+
},
|
|
80
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
81
|
+
{
|
|
82
|
+
type: 'prose',
|
|
83
|
+
md: 'RetireGolden has an optional Social Security haircut assumption. You choose a start year and a cut percentage. The projection applies that reduction to modeled Social Security benefits from that year forward, including benefits used in Results and scenario comparisons.',
|
|
84
|
+
},
|
|
85
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
86
|
+
{
|
|
87
|
+
type: 'list',
|
|
88
|
+
items: [
|
|
89
|
+
'Reading one scenario as a forecast instead of a stress test.',
|
|
90
|
+
'Only testing the headline cut and ignoring the year it starts.',
|
|
91
|
+
'Forgetting that a benefit cut can change taxes, withdrawals, and estate value.',
|
|
92
|
+
'Assuming the correct response is always to claim early. The full plan still matters.',
|
|
93
|
+
],
|
|
94
|
+
},
|
|
95
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
96
|
+
{
|
|
97
|
+
type: 'prose',
|
|
98
|
+
md: 'Use **Assumptions** to turn on a Social Security haircut, or use **Scenarios** to create a side-by-side case. Then inspect **Results** for spending coverage, taxes, withdrawals, and ending estate.',
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Understanding Monte Carlo success rate" - a Using RetireGolden P0 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const understandingMonteCarloArticle: LearningArticle = {
|
|
8
|
+
slug: 'understanding-monte-carlo-success-rate',
|
|
9
|
+
title: 'Understanding Monte Carlo success rate',
|
|
10
|
+
description: 'How to read the success-rate number without over-trusting it.',
|
|
11
|
+
category: 'using-retiregolden',
|
|
12
|
+
tags: ['monte carlo', 'success rate', 'simulation', 'risk', 'sequence risk'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-19',
|
|
16
|
+
reviewCadence: 'stable',
|
|
17
|
+
sourceUrls: ['https://www.investor.gov/introduction-investing/investing-basics/glossary/monte-carlo-simulation'],
|
|
18
|
+
relatedArticles: [
|
|
19
|
+
'how-to-read-a-retirement-projection',
|
|
20
|
+
'reading-the-results-page',
|
|
21
|
+
'what-monte-carlo-proves',
|
|
22
|
+
'sequence-of-returns-risk',
|
|
23
|
+
'why-95-percent-is-not-a-guarantee',
|
|
24
|
+
],
|
|
25
|
+
relatedPlannerRoutes: [
|
|
26
|
+
'/plan/:planId/monte-carlo',
|
|
27
|
+
'/plan/:planId/results',
|
|
28
|
+
'/plan/:planId/scenarios',
|
|
29
|
+
'/plan/:planId/optimize',
|
|
30
|
+
],
|
|
31
|
+
currentYearSensitive: false,
|
|
32
|
+
priority: 'P0',
|
|
33
|
+
featured: true,
|
|
34
|
+
blocks: [
|
|
35
|
+
{
|
|
36
|
+
type: 'prose',
|
|
37
|
+
md: 'A Monte Carlo success rate is a model statistic. It tells you how often the plan survived across many simulated market paths. It does not tell you the exact probability that your real life will work out.',
|
|
38
|
+
},
|
|
39
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
40
|
+
{
|
|
41
|
+
type: 'list',
|
|
42
|
+
items: [
|
|
43
|
+
'Success means investable assets did not run out before the end of the modeled plan.',
|
|
44
|
+
'A higher success rate usually means more cushion, but the inputs and model choice matter.',
|
|
45
|
+
'Use Monte Carlo to compare risk between choices, not to declare that a plan is guaranteed.',
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
49
|
+
{
|
|
50
|
+
type: 'prose',
|
|
51
|
+
md: 'The deterministic Results page uses one return and inflation path. Monte Carlo runs the same plan many times with different market paths. Some paths are friendly. Some are rough. The success rate is the share of paths where the plan makes it through.',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'figure',
|
|
55
|
+
image: { src: '/learn/images/monte-carlo-paths.webp' },
|
|
56
|
+
caption:
|
|
57
|
+
'Monte Carlo starts from one plan and explores many possible paths; some reach the end comfortably and some fall short.',
|
|
58
|
+
alt: 'Many teal and green paths flow from one plan bucket toward a finish area, while a few amber and coral paths fade or dip before the end of the timeline.',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
type: 'formula',
|
|
62
|
+
expression: 'success rate = successful paths / total paths',
|
|
63
|
+
where: [
|
|
64
|
+
{ symbol: 'successful paths', meaning: 'simulated futures where investable assets never deplete before the plan ends' },
|
|
65
|
+
{ symbol: 'total paths', meaning: 'the number of simulated market paths RetireGolden ran' },
|
|
66
|
+
],
|
|
67
|
+
note: 'RetireGolden runs 1,000 paths automatically and can run 10,000 paths on demand for a tighter estimate.',
|
|
68
|
+
},
|
|
69
|
+
{ type: 'heading', text: 'What the number means' },
|
|
70
|
+
{
|
|
71
|
+
type: 'table',
|
|
72
|
+
caption: 'A plain-language way to read success rates.',
|
|
73
|
+
columns: ['Result', 'What it says', 'What to do next'],
|
|
74
|
+
rows: [
|
|
75
|
+
['90%+', 'The plan survived in nearly all modeled paths.', 'Check whether the assumptions are realistic and whether the remaining risk is acceptable.'],
|
|
76
|
+
['75%-89%', 'The plan often works, but bad markets can matter.', 'Look at depletion years, spending flexibility, and timing choices.'],
|
|
77
|
+
['Below 75%', 'Many modeled paths run out of investable assets.', 'Use Scenarios to test spending, retirement date, income timing, or risk changes.'],
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
{ type: 'heading', text: 'A worked example' },
|
|
81
|
+
{
|
|
82
|
+
type: 'scenario',
|
|
83
|
+
name: 'The Garcia household',
|
|
84
|
+
assumptions: [
|
|
85
|
+
{ label: 'Baseline deterministic result', value: 'Money lasts through the full plan' },
|
|
86
|
+
{ label: 'Monte Carlo result', value: '78% success over 1,000 paths' },
|
|
87
|
+
{ label: 'Key clue', value: 'About 220 paths deplete, usually in the first decade after retirement' },
|
|
88
|
+
],
|
|
89
|
+
summary:
|
|
90
|
+
'A 78% success rate means roughly **220 out of 1,000** tested paths fail. Because failures cluster early, the Garcias should test spending flexibility, later retirement, or a different claim/investment mix.',
|
|
91
|
+
},
|
|
92
|
+
{ type: 'heading', text: 'Model controls change the question' },
|
|
93
|
+
{
|
|
94
|
+
type: 'list',
|
|
95
|
+
items: [
|
|
96
|
+
'**Lognormal** paths vary around your expected return and inflation assumptions.',
|
|
97
|
+
'**Historical** paths resample market history in different ways, which can preserve more real-world clustering.',
|
|
98
|
+
'**Seed** changes the random draw. If one seed changes the conclusion a lot, run more paths or test scenarios.',
|
|
99
|
+
'**Model longevity** and **LTC shock** add life-span and long-term-care uncertainty when you want a wider stress test.',
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
103
|
+
{
|
|
104
|
+
type: 'list',
|
|
105
|
+
items: [
|
|
106
|
+
'Reading 95% as "I am safe." It means 95% of modeled paths worked under the assumptions used.',
|
|
107
|
+
'Treating a one-point difference as meaningful when only 1,000 paths were run.',
|
|
108
|
+
'Ignoring the depletion-year chart. A 78% success rate with failures at age 93 feels different from failures at age 72.',
|
|
109
|
+
'Comparing two strategies with different assumptions and calling the success-rate change a strategy effect.',
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
113
|
+
{
|
|
114
|
+
type: 'prose',
|
|
115
|
+
md: 'Use **Monte Carlo** after the Results page makes sense. Use **Scenarios** or **Optimize** when you want to compare choices, then come back to Monte Carlo to see whether the better-looking choice also holds up under market variation.',
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
2
|
+
|
|
3
|
+
export const understandingYourPlanAssumptionsArticle: LearningArticle = {
|
|
4
|
+
slug: 'understanding-your-plan-assumptions',
|
|
5
|
+
title: "Understanding your plan's assumptions",
|
|
6
|
+
description: 'How RetireGolden uses assumptions to project your retirement success, and where they come from.',
|
|
7
|
+
category: 'using-retiregolden',
|
|
8
|
+
tags: ['assumptions', 'inflation', 'returns', 'longevity', 'rules'],
|
|
9
|
+
audience: 'beginner',
|
|
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://hvsfinancial.com/wp-content/uploads/2026/02/2026-Data-Report.pdf',
|
|
16
|
+
'https://corporate.vanguard.com/content/corporatesite/us/en/corp/vemo/2026-outlook-economic-upside-stock-market-downside.html',
|
|
17
|
+
'https://www.longevityillustrator.org/',
|
|
18
|
+
],
|
|
19
|
+
relatedArticles: [
|
|
20
|
+
'using-assumptions-and-provenance',
|
|
21
|
+
'assumption-general-inflation',
|
|
22
|
+
'assumption-healthcare-inflation',
|
|
23
|
+
'assumption-investment-returns',
|
|
24
|
+
'assumption-social-security-cola',
|
|
25
|
+
'assumption-social-security-trust-fund',
|
|
26
|
+
'assumption-longevity-planning-age',
|
|
27
|
+
'assumption-state-tax-override',
|
|
28
|
+
'assumption-recent-magi',
|
|
29
|
+
'assumption-heir-tax-rate',
|
|
30
|
+
],
|
|
31
|
+
relatedPlannerRoutes: ['/plan/:planId/assumptions'],
|
|
32
|
+
currentYearSensitive: true,
|
|
33
|
+
priority: 'P0',
|
|
34
|
+
blocks: [
|
|
35
|
+
{
|
|
36
|
+
type: 'prose',
|
|
37
|
+
md: "A retirement plan is a model of the future. While some numbers in your plan are **facts** (like your current age or account balances) and others are **rules** (like the 2026 tax brackets), the engine also needs **forward-looking assumptions** to project how your money will grow and what it will buy decades from now.",
|
|
38
|
+
},
|
|
39
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
40
|
+
{
|
|
41
|
+
type: 'list',
|
|
42
|
+
items: [
|
|
43
|
+
'Assumptions are the levers that drive your projection: inflation, healthcare costs, returns, Social Security behavior, taxes, MAGI seeds, longevity, and estate-tax treatment.',
|
|
44
|
+
'RetireGolden starts you with research-backed defaults, but every retirement plan is unique—you can override any default to fit your views.',
|
|
45
|
+
"No single number is a guarantee. RetireGolden's Monte Carlo simulation varies returns and inflation around these assumptions to stress-test your plan.",
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
{ type: 'heading', text: 'The assumption library' },
|
|
49
|
+
{
|
|
50
|
+
type: 'prose',
|
|
51
|
+
md: 'Each planner-facing assumption has a focused deep dive. Use this table as the index:',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'table',
|
|
55
|
+
caption: 'Assumption defaults in RetireGolden',
|
|
56
|
+
columns: ['Assumption', 'Default Value', 'Sourced Basis', 'Deep Dive'],
|
|
57
|
+
rows: [
|
|
58
|
+
[
|
|
59
|
+
'**General Inflation**',
|
|
60
|
+
'2.5%',
|
|
61
|
+
'SSA long-range estimate (2.4%), Philly Fed SPF (2.4%), Fed long-run goal (2.0%).',
|
|
62
|
+
'[Read more](/learn/assumption-general-inflation)',
|
|
63
|
+
],
|
|
64
|
+
[
|
|
65
|
+
'**Healthcare Inflation**',
|
|
66
|
+
'+3.0% over CPI',
|
|
67
|
+
'HealthView Services 2026 projections of 5.8% total long-term retiree healthcare inflation.',
|
|
68
|
+
'[Read more](/learn/assumption-healthcare-inflation)',
|
|
69
|
+
],
|
|
70
|
+
[
|
|
71
|
+
'**Investment Returns**',
|
|
72
|
+
'5.5% blended',
|
|
73
|
+
"Vanguard's 2026 outlook (4–5% equity) and J.P. Morgan's 2026 LTCMA (6.4% balanced 60/40).",
|
|
74
|
+
'[Read more](/learn/assumption-investment-returns)',
|
|
75
|
+
],
|
|
76
|
+
[
|
|
77
|
+
'**Longevity (Planning Age)**',
|
|
78
|
+
'95 (floor)',
|
|
79
|
+
'Society of Actuaries guidance to plan for the 75th to 90th percentile of joint survival.',
|
|
80
|
+
'[Read more](/learn/assumption-longevity-planning-age)',
|
|
81
|
+
],
|
|
82
|
+
[
|
|
83
|
+
'**Social Security COLA**',
|
|
84
|
+
'Match inflation',
|
|
85
|
+
'Social Security COLA is tied to CPI-W; matching general inflation keeps real benefits flat.',
|
|
86
|
+
'[Read more](/learn/assumption-social-security-cola)',
|
|
87
|
+
],
|
|
88
|
+
[
|
|
89
|
+
'**Social Security Trust Fund**',
|
|
90
|
+
'Off; 2034 / 17% when on',
|
|
91
|
+
'2026 Trustees report: combined OASDI depletion in 2034 with 83% payable.',
|
|
92
|
+
'[Read more](/learn/assumption-social-security-trust-fund)',
|
|
93
|
+
],
|
|
94
|
+
[
|
|
95
|
+
'**State Tax Override**',
|
|
96
|
+
'0%',
|
|
97
|
+
'0% means use modeled state tax rules; a positive value replaces them with a flat effective rate.',
|
|
98
|
+
'[Read more](/learn/assumption-state-tax-override)',
|
|
99
|
+
],
|
|
100
|
+
[
|
|
101
|
+
'**Recent MAGI**',
|
|
102
|
+
'$0',
|
|
103
|
+
'Input seed for Medicare IRMAA two-year lookback; 0 means no initial surcharge from recent income.',
|
|
104
|
+
'[Read more](/learn/assumption-recent-magi)',
|
|
105
|
+
],
|
|
106
|
+
[
|
|
107
|
+
'**Heir Tax Rate**',
|
|
108
|
+
'25%',
|
|
109
|
+
'A mid-bracket estimate for inherited pre-tax retirement balances under the 10-year rule.',
|
|
110
|
+
'[Read more](/learn/assumption-heir-tax-rate)',
|
|
111
|
+
],
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
{ type: 'heading', text: 'Why defaults matter' },
|
|
115
|
+
{
|
|
116
|
+
type: 'prose',
|
|
117
|
+
md: "A minor change in an assumption can compound into a massive difference over 30 or 40 years. For example, assuming healthcare costs grow at CPI + 3% instead of CPI + 2% can add tens of thousands of dollars in projected lifetime expenses, potentially shifting your plan's success rate. RetireGolden defaults to slightly conservative, source-backed values so you don't build a plan on overly optimistic foundations.",
|
|
118
|
+
},
|
|
119
|
+
{ type: 'heading', text: 'Watch-outs' },
|
|
120
|
+
{
|
|
121
|
+
type: 'list',
|
|
122
|
+
items: [
|
|
123
|
+
'Do not treat a default as personal advice; it is a starting point you can override.',
|
|
124
|
+
'Change one major assumption at a time when testing sensitivity, or it becomes hard to know what moved the result.',
|
|
125
|
+
'Dated rule packs, such as tax brackets and Medicare thresholds, are different from user-overridable assumptions.',
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
{ type: 'heading', text: 'Where to manage these in the app' },
|
|
129
|
+
{
|
|
130
|
+
type: 'prose',
|
|
131
|
+
md: 'You can view and override all forward-looking assumptions on the **Assumptions** screen. For planning ages, you can adjust these per household member under the **Household** step, which feeds into the longevity module. The dated rule packs (like tax brackets and Medicare thresholds) are non-overridable and can be reviewed via the **Disclaimer** page.',
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "How to use assumptions and provenance" - a Using RetireGolden P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const usingAssumptionsAndProvenanceArticle: LearningArticle = {
|
|
8
|
+
slug: 'using-assumptions-and-provenance',
|
|
9
|
+
title: 'How to use assumptions and provenance',
|
|
10
|
+
description: 'Where each default comes from and how to override it responsibly.',
|
|
11
|
+
category: 'using-retiregolden',
|
|
12
|
+
tags: ['retiregolden', 'assumptions', 'provenance', 'defaults', 'parameter pack'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'stable',
|
|
17
|
+
sourceUrls: ['https://www.irs.gov/', 'https://www.ssa.gov/', 'https://www.medicare.gov/', 'https://www.healthcare.gov/'],
|
|
18
|
+
relatedArticles: [
|
|
19
|
+
'how-assumptions-change-the-answer',
|
|
20
|
+
'what-retiregolden-models',
|
|
21
|
+
'inflation-risk',
|
|
22
|
+
'irmaa-two-year-lookback',
|
|
23
|
+
'aca-premium-tax-credits-and-magi',
|
|
24
|
+
],
|
|
25
|
+
relatedPlannerRoutes: ['/plan/:planId/assumptions', '/plan/:planId/results', '/plan/:planId/monte-carlo'],
|
|
26
|
+
currentYearSensitive: false,
|
|
27
|
+
priority: 'P1',
|
|
28
|
+
blocks: [
|
|
29
|
+
{
|
|
30
|
+
type: 'prose',
|
|
31
|
+
md: 'Assumptions are the bridge between your plan and the rules RetireGolden applies. Some assumptions are choices you set directly. Others come from dated parameter packs, such as tax brackets, contribution limits, RMD factors, Medicare, IRMAA, ACA, and Social Security figures.',
|
|
32
|
+
},
|
|
33
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
34
|
+
{
|
|
35
|
+
type: 'list',
|
|
36
|
+
items: [
|
|
37
|
+
'Use plan assumptions for the household-specific future: inflation, returns, recent MAGI, state override, and Social Security COLA.',
|
|
38
|
+
'Use provenance to see where the app\'s rule defaults came from.',
|
|
39
|
+
'Override a default when you have better household-specific information, not just because the output is uncomfortable.',
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
43
|
+
{
|
|
44
|
+
type: 'prose',
|
|
45
|
+
md: 'A parameter pack is a snapshot of published rules and dollar values. It helps the engine apply tax and benefit rules consistently without asking you to enter every bracket, limit, premium, and threshold yourself. Provenance is the record of where those inputs came from and when they were compiled.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
type: 'figure',
|
|
49
|
+
image: { src: '/learn/images/assumptions-provenance.webp' },
|
|
50
|
+
caption:
|
|
51
|
+
'Household assumptions and sourced parameter packs meet inside the projection engine.',
|
|
52
|
+
alt: 'Two streams labeled by icons for household choices and official sources flow into a structured projection ledger.',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
type: 'table',
|
|
56
|
+
caption: 'Where to look when a number feels surprising.',
|
|
57
|
+
columns: ['Question', 'Where to check', 'What to do next'],
|
|
58
|
+
rows: [
|
|
59
|
+
['Is this my input?', 'The planner entry screen that owns the field', 'Correct the fact if it is wrong'],
|
|
60
|
+
['Is this a plan-wide assumption?', 'Assumptions', 'Adjust it and rerun Results or Monte Carlo'],
|
|
61
|
+
['Is this a rule default?', 'Disclaimer and provenance table', 'Verify against the official source if it matters'],
|
|
62
|
+
['Is this beyond the latest published pack?', 'Report notes or modeling warnings', 'Treat projected future thresholds as planning approximations'],
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
{ type: 'heading', text: 'A worked example' },
|
|
66
|
+
{
|
|
67
|
+
type: 'scenario',
|
|
68
|
+
name: 'The Jordan household',
|
|
69
|
+
assumptions: [
|
|
70
|
+
{ label: 'Question', value: 'Medicare costs rise by about $1,900 after a Roth conversion year' },
|
|
71
|
+
{ label: 'First check', value: 'MAGI increased from $170,000 to $240,000 on the Results page' },
|
|
72
|
+
{ label: 'Second check', value: 'Provenance shows which Medicare and IRMAA values the estimate used' },
|
|
73
|
+
],
|
|
74
|
+
summary:
|
|
75
|
+
'The higher cost is not a random output. The Jordans can connect the $70,000 MAGI increase to the sourced Medicare rule and decide whether the conversion is still worth it.',
|
|
76
|
+
},
|
|
77
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
78
|
+
{
|
|
79
|
+
type: 'prose',
|
|
80
|
+
md: 'The **Assumptions** screen is where you set plan-wide levers. The **Disclaimer** page includes the provenance table for dated rule defaults. Results and reports may also show modeling notes when a value is a planning approximation or a future-year stand-in.',
|
|
81
|
+
},
|
|
82
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
83
|
+
{
|
|
84
|
+
type: 'list',
|
|
85
|
+
items: [
|
|
86
|
+
'Changing returns or inflation to make a preferred strategy look better.',
|
|
87
|
+
'Forgetting that future years may use indexed or stand-in values when official figures are not published yet.',
|
|
88
|
+
'Treating a provenance source as tax advice instead of a place to verify the rule input.',
|
|
89
|
+
'Leaving a state override at zero when the modeled state treatment does not fit your situation.',
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
93
|
+
{
|
|
94
|
+
type: 'prose',
|
|
95
|
+
md: 'Use **Assumptions** when you want to change the plan. Use the **Disclaimer** and provenance table when you want to understand the source of the default. Then rerun **Results** and **Monte Carlo** to see what changed.',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Using Scenarios to compare choices" - a Using RetireGolden P0 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const usingScenariosToCompareChoicesArticle: LearningArticle = {
|
|
8
|
+
slug: 'using-scenarios-to-compare-choices',
|
|
9
|
+
title: 'Using Scenarios to compare choices',
|
|
10
|
+
description: 'How to stress-test and compare plan variations side by side.',
|
|
11
|
+
category: 'using-retiregolden',
|
|
12
|
+
tags: ['scenarios', 'what if', 'comparison', 'stress test', 'monte carlo'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'stable',
|
|
17
|
+
sourceUrls: [],
|
|
18
|
+
relatedArticles: [
|
|
19
|
+
'planner-overview',
|
|
20
|
+
'how-assumptions-change-the-answer',
|
|
21
|
+
'three-big-questions-spending-time-risk',
|
|
22
|
+
'understanding-monte-carlo-success-rate',
|
|
23
|
+
'sequence-of-returns-risk',
|
|
24
|
+
],
|
|
25
|
+
relatedPlannerRoutes: ['/plan/:planId/scenarios', '/plan/:planId/results', '/plan/:planId/monte-carlo'],
|
|
26
|
+
currentYearSensitive: false,
|
|
27
|
+
priority: 'P0',
|
|
28
|
+
blocks: [
|
|
29
|
+
{
|
|
30
|
+
type: 'prose',
|
|
31
|
+
md: 'Scenarios help you compare one decision at a time without losing the base plan. A scenario is a set of overrides layered on top of the current plan: retire earlier, spend more, skip Roth conversions, model a Social Security cut, or add a care shock.',
|
|
32
|
+
},
|
|
33
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
34
|
+
{
|
|
35
|
+
type: 'list',
|
|
36
|
+
items: [
|
|
37
|
+
'Use scenarios when the question starts with "what if?"',
|
|
38
|
+
'A good scenario changes only the few inputs needed to test the question.',
|
|
39
|
+
'The Scenarios table compares ending estate, lifetime tax, depletion year, changed fields, and optional Monte Carlo success with shared markets.',
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
43
|
+
{
|
|
44
|
+
type: 'prose',
|
|
45
|
+
md: 'The base plan remains the source of truth. Each scenario stores a patch, and RetireGolden merges that patch over the base plan for comparison. If the scenario is invalid, the table shows an error instead of silently simulating a broken plan.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
type: 'figure',
|
|
49
|
+
image: { src: '/learn/images/scenarios-compare-choices.webp' },
|
|
50
|
+
caption:
|
|
51
|
+
'Scenarios keep the base plan intact while testing alternate choices side by side.',
|
|
52
|
+
alt: 'A base retirement plan branches into several side-by-side paths for earlier retirement, higher spending, lower returns, and care costs, then returns to a comparison table.',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
type: 'table',
|
|
56
|
+
caption: 'When to use Scenarios instead of editing the base plan directly.',
|
|
57
|
+
columns: ['Question', 'Scenario idea', 'What to compare'],
|
|
58
|
+
rows: [
|
|
59
|
+
['Can I retire sooner?', 'Retire earlier or later', 'Depletion year, estate, taxes, and success rate'],
|
|
60
|
+
['What if I spend more?', 'Spend more or less', 'How quickly the margin disappears'],
|
|
61
|
+
['What if Social Security is cut?', 'Benefit haircut from a future year', 'Whether portfolio withdrawals fill the gap'],
|
|
62
|
+
['Do Roth conversions help?', 'Skip conversions or compare a different strategy', 'Lifetime tax, estate, and Monte Carlo risk'],
|
|
63
|
+
['What if care costs hit?', 'Add long-term-care shock years', 'Whether assets survive a concentrated expense'],
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
{ type: 'heading', text: 'A worked example' },
|
|
67
|
+
{
|
|
68
|
+
type: 'scenario',
|
|
69
|
+
name: 'The Kim household',
|
|
70
|
+
assumptions: [
|
|
71
|
+
{ label: 'Base plan', value: 'Retire at 65, spend $90,000 per year' },
|
|
72
|
+
{ label: 'Scenario A', value: 'Retire two years earlier and reduce ending estate by $140,000' },
|
|
73
|
+
{ label: 'Scenario B', value: 'Retire at 65 but spend 15% more, reducing success from 88% to 73%' },
|
|
74
|
+
],
|
|
75
|
+
summary:
|
|
76
|
+
'The early-retirement scenario mostly costs estate value. The higher-spending scenario damages risk more, dropping success by **15 percentage points** in this example.',
|
|
77
|
+
},
|
|
78
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
79
|
+
{
|
|
80
|
+
type: 'prose',
|
|
81
|
+
md: 'The Scenarios screen can include a 200-path Monte Carlo success rate for each row, using the same seed so every scenario faces the same market paths. That makes comparisons cleaner than re-running separate plans with unrelated random draws.',
|
|
82
|
+
},
|
|
83
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
84
|
+
{
|
|
85
|
+
type: 'list',
|
|
86
|
+
items: [
|
|
87
|
+
'Changing the base plan and the scenario at the same time.',
|
|
88
|
+
'Packing too many changes into one scenario and then not knowing what caused the result.',
|
|
89
|
+
'Comparing estate value without checking whether one path depletes earlier.',
|
|
90
|
+
'Treating the 200-path scenario success rate as a final Monte Carlo answer; use the full Monte Carlo screen for a deeper run.',
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
94
|
+
{
|
|
95
|
+
type: 'prose',
|
|
96
|
+
md: 'Use **Scenarios** after the base plan is credible in **Results**. If a scenario looks promising, either edit the base plan intentionally or duplicate the plan for a larger comparison.',
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
}
|