@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,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Long-term-care costs and insurance" - a Healthcare P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const longTermCareCostsInsuranceArticle: LearningArticle = {
|
|
8
|
+
slug: 'long-term-care-costs-and-insurance',
|
|
9
|
+
title: 'Long-term-care costs and insurance',
|
|
10
|
+
description: 'The size of the long-term-care risk and ways to plan for it.',
|
|
11
|
+
category: 'healthcare',
|
|
12
|
+
tags: ['long-term care', 'ltc', 'insurance', 'care event', 'healthcare spending'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: ['https://acl.gov/ltc', 'https://acl.gov/ltc/costs-and-who-pays', 'https://www.medicare.gov/coverage/long-term-care'],
|
|
18
|
+
relatedArticles: [
|
|
19
|
+
'healthcare-after-65',
|
|
20
|
+
'longevity-risk',
|
|
21
|
+
'using-scenarios-to-compare-choices',
|
|
22
|
+
'long-term-care-insurance-as-risk-transfer',
|
|
23
|
+
],
|
|
24
|
+
relatedPlannerRoutes: ['/plan/:planId/insurance', '/plan/:planId/spending', '/plan/:planId/scenarios', '/plan/:planId/monte-carlo'],
|
|
25
|
+
currentYearSensitive: true,
|
|
26
|
+
priority: 'P1',
|
|
27
|
+
blocks: [
|
|
28
|
+
{
|
|
29
|
+
type: 'prose',
|
|
30
|
+
md: 'Long-term care means help with daily living or supervision over an extended period. It can happen at home, in assisted living, or in a nursing facility. The planning problem is that the cost can be large, uneven, and concentrated late in life.',
|
|
31
|
+
},
|
|
32
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
33
|
+
{
|
|
34
|
+
type: 'list',
|
|
35
|
+
items: [
|
|
36
|
+
'Medicare generally is not a broad long-term custodial-care plan.',
|
|
37
|
+
'A care event is a stress test: when care starts, how long it lasts, and how much it costs.',
|
|
38
|
+
'An LTC insurance policy transfers some risk, but premiums, elimination periods, caps, and benefit periods matter.',
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
42
|
+
{
|
|
43
|
+
type: 'prose',
|
|
44
|
+
md: 'Most retirement budgets are built around recurring spending: food, housing, taxes, insurance, travel, and healthcare premiums. Long-term care is different. It may not happen, but if it does, it can add a large cost for several years.\n\nInsurance is one way to handle that tail risk. It does not make care free. It trades premiums now for a contract that may pay part of a future care cost, subject to the policy terms.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'figure',
|
|
48
|
+
image: { src: '/learn/images/long-term-care-costs-insurance.webp' },
|
|
49
|
+
caption:
|
|
50
|
+
'Long-term-care planning compares a late-life care-cost spike with the premiums and capped benefits of an LTC policy.',
|
|
51
|
+
alt: 'A retirement spending path has a late care-cost spike, while an LTC policy bucket pays a capped benefit after a waiting-period gate.',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'table',
|
|
55
|
+
caption: 'LTC policy terms that shape the planning result.',
|
|
56
|
+
columns: ['Term', 'Plain meaning', 'Why it matters'],
|
|
57
|
+
rows: [
|
|
58
|
+
['Annual premium', 'What you pay for the policy', 'Reduces cash flow even if care never happens'],
|
|
59
|
+
['Elimination period', 'The waiting period before benefits begin', 'The first part of a care episode may be out of pocket'],
|
|
60
|
+
['Monthly benefit', 'The maximum monthly policy benefit', 'Care costs above the cap still hit the plan'],
|
|
61
|
+
['Benefit period', 'How long benefits can last', 'A long episode can outlast a limited policy'],
|
|
62
|
+
['Inflation rider', 'Growth in the benefit cap', 'Can help the cap keep up with future care costs'],
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
{ type: 'heading', text: 'A worked example' },
|
|
66
|
+
{
|
|
67
|
+
type: 'scenario',
|
|
68
|
+
name: 'The Garcia household',
|
|
69
|
+
assumptions: [
|
|
70
|
+
{ label: 'Care event', value: '$95,000 a year of extra care costs for three late-retirement years' },
|
|
71
|
+
{ label: 'Policy', value: '$5,000 monthly benefit after a waiting period, paid for up to three years' },
|
|
72
|
+
{ label: 'Premium drag', value: '$3,600 a year of premiums before any care event occurs' },
|
|
73
|
+
],
|
|
74
|
+
summary:
|
|
75
|
+
'The care event costs about **$285,000** before inflation. The policy can offset part of that shock, but the $3,600 annual premium reduces wealth in years when care never happens.',
|
|
76
|
+
},
|
|
77
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
78
|
+
{
|
|
79
|
+
type: 'prose',
|
|
80
|
+
md: 'RetireGolden models deterministic care events and LTC insurance policies. A care event adds today-dollar annual costs for a chosen person, start age, and duration. An LTC policy on that person can offset the event after the elimination period, up to the monthly benefit cap, inflation rider, and benefit-period limit.',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
type: 'callout',
|
|
84
|
+
tone: 'note',
|
|
85
|
+
md: 'Monte Carlo can also sample an optional long-term-care shock. That sampled episode is added as a care event, so the same policy mechanics apply.',
|
|
86
|
+
},
|
|
87
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
88
|
+
{
|
|
89
|
+
type: 'list',
|
|
90
|
+
items: [
|
|
91
|
+
'Assuming Medicare will cover an extended custodial-care need.',
|
|
92
|
+
'Comparing an LTC policy only by premium, without modeling benefit caps and waiting periods.',
|
|
93
|
+
'Forgetting that a couple may face care risk for either spouse.',
|
|
94
|
+
'Treating one deterministic care event as the only possible future.',
|
|
95
|
+
],
|
|
96
|
+
},
|
|
97
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
98
|
+
{
|
|
99
|
+
type: 'prose',
|
|
100
|
+
md: 'Use **Insurance** to enter LTC policies and care events. Use **Scenarios** for a deterministic long-term-care shock, and **Monte Carlo** if you want to include optional sampled LTC shocks in the risk view.',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Long-term-care insurance as risk transfer" - an Insurance and Estate P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const longTermCareInsuranceRiskTransferArticle: LearningArticle = {
|
|
8
|
+
slug: 'long-term-care-insurance-as-risk-transfer',
|
|
9
|
+
title: 'Long-term-care insurance as risk transfer',
|
|
10
|
+
description: 'When paying premiums to offload tail risk can make sense.',
|
|
11
|
+
category: 'insurance-estate',
|
|
12
|
+
tags: ['long-term care', 'ltc insurance', 'risk transfer', 'premiums', 'care event'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: ['https://acl.gov/ltc', 'https://acl.gov/ltc/costs-and-who-pays', 'https://www.medicare.gov/coverage/long-term-care'],
|
|
18
|
+
relatedArticles: [
|
|
19
|
+
'long-term-care-costs-and-insurance',
|
|
20
|
+
'longevity-risk',
|
|
21
|
+
'survivor-planning-for-couples',
|
|
22
|
+
'using-scenarios-to-compare-choices',
|
|
23
|
+
],
|
|
24
|
+
relatedPlannerRoutes: ['/plan/:planId/insurance', '/plan/:planId/scenarios', '/plan/:planId/monte-carlo', '/plan/:planId/results'],
|
|
25
|
+
currentYearSensitive: true,
|
|
26
|
+
priority: 'P1',
|
|
27
|
+
blocks: [
|
|
28
|
+
{
|
|
29
|
+
type: 'prose',
|
|
30
|
+
md: 'Long-term-care insurance is not mainly a bet that you will "win" against the insurer. It is a way to transfer some late-life care risk away from the household balance sheet. The right question is often whether the premium buys enough protection against an outcome the household cannot comfortably self-fund.',
|
|
31
|
+
},
|
|
32
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
33
|
+
{
|
|
34
|
+
type: 'list',
|
|
35
|
+
items: [
|
|
36
|
+
'Insurance can be valuable even when the expected payout is less than total premiums.',
|
|
37
|
+
'The policy terms decide how much risk is actually transferred.',
|
|
38
|
+
'RetireGolden compares care with no policy, care with a policy, and a no-care baseline so the premium tradeoff is visible.',
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
42
|
+
{
|
|
43
|
+
type: 'prose',
|
|
44
|
+
md: 'A household can self-insure a risk when it has enough assets to absorb the bad outcome. A household transfers risk when it pays premiums so an insurer absorbs some of that bad outcome instead.\n\nLong-term care is a natural risk-transfer topic because costs can be large, uncertain, and emotionally hard to manage. A policy can protect the estate or the surviving spouse, but only up to its benefit cap, after its waiting period, and for its benefit period.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'figure',
|
|
48
|
+
image: { src: '/learn/images/long-term-care-insurance-risk-transfer.webp' },
|
|
49
|
+
caption:
|
|
50
|
+
'Risk transfer trades steady premiums for a capped insurance response if a large care-cost event occurs.',
|
|
51
|
+
alt: 'A household balance sheet sends small premium streams to an insurance shield, which later absorbs part of a large care-cost wave.',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'table',
|
|
55
|
+
caption: 'Risk transfer questions to ask before modeling a policy.',
|
|
56
|
+
columns: ['Question', 'Why it matters', 'App input or result'],
|
|
57
|
+
rows: [
|
|
58
|
+
['Can the plan self-fund care?', 'A strong balance sheet may need less transfer', 'Compare care uninsured with no care'],
|
|
59
|
+
['Who is protected?', 'Couples may be protecting the survivor more than the first spouse', 'Policy owner and care-event person'],
|
|
60
|
+
['What is the cap?', 'A small monthly benefit may leave large costs uncovered', 'Monthly benefit and inflation rider'],
|
|
61
|
+
['How long can benefits last?', 'Long episodes can outlast the policy', 'Benefit period'],
|
|
62
|
+
['What do premiums cost in paths with no care?', 'Premiums reduce wealth even if no care event happens', 'No-care baseline versus insured case'],
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
{ type: 'heading', text: 'A worked example' },
|
|
66
|
+
{
|
|
67
|
+
type: 'scenario',
|
|
68
|
+
name: 'The Howard household',
|
|
69
|
+
assumptions: [
|
|
70
|
+
{ label: 'Concern', value: 'One spouse may need $90,000 a year of paid care for four years' },
|
|
71
|
+
{ label: 'Policy', value: '$4,500 annual premium, then up to $6,000 monthly benefit after the waiting period' },
|
|
72
|
+
{ label: 'Survivor lens', value: 'Without benefits, the care path spends down roughly $360,000 before inflation' },
|
|
73
|
+
],
|
|
74
|
+
summary:
|
|
75
|
+
'The policy may lower the no-care estate because of premiums, but it buys protection against a care path that could consume about **$360,000** and weaken the survivor plan.',
|
|
76
|
+
},
|
|
77
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
78
|
+
{
|
|
79
|
+
type: 'prose',
|
|
80
|
+
md: 'The **Insurance** screen can show an LTC stress test once a care event exists. RetireGolden compares no care with LTC policies held out, care with policies removed, and care with the plan\'s LTC policies included. The difference makes the raw care shock and the policy value net of premiums easier to see.',
|
|
81
|
+
},
|
|
82
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
83
|
+
{
|
|
84
|
+
type: 'list',
|
|
85
|
+
items: [
|
|
86
|
+
'Judging the policy only by whether it has a positive expected payout.',
|
|
87
|
+
'Ignoring the elimination period and benefit period.',
|
|
88
|
+
'Assuming Medicare covers long-term custodial care broadly.',
|
|
89
|
+
'Forgetting that premiums are paid in the good paths too.',
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
93
|
+
{
|
|
94
|
+
type: 'prose',
|
|
95
|
+
md: 'Use **Insurance** to enter LTC policies and care events. Use **Scenarios** and **Monte Carlo** to test care shocks, then inspect **Results** for estate, spending, premiums, and shortfalls.',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Longevity risk" - a Risk and Uncertainty P1 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const longevityRiskArticle: LearningArticle = {
|
|
8
|
+
slug: 'longevity-risk',
|
|
9
|
+
title: 'Longevity risk',
|
|
10
|
+
description: 'The planning challenge of not knowing how long money must last.',
|
|
11
|
+
category: 'risk-uncertainty',
|
|
12
|
+
tags: ['longevity', 'life expectancy', 'planning age', 'survivor years', 'monte carlo'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'stable',
|
|
17
|
+
sourceUrls: ['https://www.ssa.gov/oact/STATS/table4c6.html'],
|
|
18
|
+
relatedArticles: [
|
|
19
|
+
'planning-for-couples-and-survivor-years',
|
|
20
|
+
'spousal-and-survivor-benefits',
|
|
21
|
+
'widows-penalty-and-survivor-brackets',
|
|
22
|
+
'what-monte-carlo-proves',
|
|
23
|
+
'long-term-care-costs-and-insurance',
|
|
24
|
+
],
|
|
25
|
+
relatedPlannerRoutes: ['/plan/:planId/household', '/plan/:planId/monte-carlo', '/plan/:planId/results', '/plan/:planId/scenarios'],
|
|
26
|
+
currentYearSensitive: false,
|
|
27
|
+
priority: 'P1',
|
|
28
|
+
blocks: [
|
|
29
|
+
{
|
|
30
|
+
type: 'prose',
|
|
31
|
+
md: 'Longevity risk is the risk of living longer than the plan can support. It is a good problem to have personally, but it is a hard planning problem because nobody knows the exact number of years the portfolio must cover.',
|
|
32
|
+
},
|
|
33
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
34
|
+
{
|
|
35
|
+
type: 'list',
|
|
36
|
+
items: [
|
|
37
|
+
'Life expectancy is an average, not an expiration date.',
|
|
38
|
+
'Couples need to plan for survivor years, not just a single shared life span.',
|
|
39
|
+
'Longer life can increase portfolio withdrawals, RMD years, healthcare exposure, and the value of inflation-protected income.',
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
43
|
+
{
|
|
44
|
+
type: 'prose',
|
|
45
|
+
md: 'A plan that ends at age 85 asks a different question from a plan that ends at age 95 or 100. The longer horizon gives investments more time to compound, but it also gives expenses, inflation, taxes, healthcare, and withdrawals more years to accumulate.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
type: 'figure',
|
|
49
|
+
image: { src: '/learn/images/longevity-risk.webp' },
|
|
50
|
+
caption:
|
|
51
|
+
'Longevity risk is an uncertain finish line, not a single known date.',
|
|
52
|
+
alt: 'A retirement path stretches toward several possible finish lines at later ages, with one household walking through survivor-year markers.',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
type: 'table',
|
|
56
|
+
caption: 'What longer life can change.',
|
|
57
|
+
columns: ['Area', 'Why longevity matters', 'Planning response'],
|
|
58
|
+
rows: [
|
|
59
|
+
['Spending', 'More years of expenses must be funded', 'Test later planning ages and flexible spending'],
|
|
60
|
+
['Inflation', 'Prices have more years to compound', 'Use today\'s-dollar views and inflation stress tests'],
|
|
61
|
+
['Social Security', 'Delayed claiming and survivor benefits can matter more over longer lives', 'Compare household-level claiming outcomes'],
|
|
62
|
+
['Taxes', 'More RMD years and survivor filing years can change lifetime tax', 'Inspect Results by year, not only ending balance'],
|
|
63
|
+
['Healthcare', 'Later years may include larger healthcare and care costs', 'Model healthcare and long-term-care risk explicitly'],
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
{ type: 'heading', text: 'A worked example' },
|
|
67
|
+
{
|
|
68
|
+
type: 'scenario',
|
|
69
|
+
name: 'The Franklin household',
|
|
70
|
+
assumptions: [
|
|
71
|
+
{ label: 'Baseline planning ages', value: 'One spouse to 90, one spouse to 94' },
|
|
72
|
+
{ label: 'Stress test', value: 'Both live 5 years longer than the baseline' },
|
|
73
|
+
{ label: 'Extra funding need', value: '$70,000 of annual spending must be covered for 5 more years' },
|
|
74
|
+
],
|
|
75
|
+
summary:
|
|
76
|
+
'The stress test adds about **$350,000** of before-tax spending need before inflation. It also exposes whether survivor taxes and per-person costs tighten late in the plan.',
|
|
77
|
+
},
|
|
78
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
79
|
+
{
|
|
80
|
+
type: 'prose',
|
|
81
|
+
md: 'RetireGolden uses each person\'s planning age in the deterministic projection. On **Monte Carlo**, you can optionally model longevity so each path draws lifespans from mortality tables instead of assuming everyone lives exactly to the fixed planning age.',
|
|
82
|
+
},
|
|
83
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
84
|
+
{
|
|
85
|
+
type: 'list',
|
|
86
|
+
items: [
|
|
87
|
+
'Treating life expectancy as the year the plan can safely end.',
|
|
88
|
+
'Planning only until the first spouse dies.',
|
|
89
|
+
'Ignoring the tax and benefit changes that happen in survivor years.',
|
|
90
|
+
'Using a very late planning age without also checking whether spending flexibility is realistic.',
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
94
|
+
{
|
|
95
|
+
type: 'prose',
|
|
96
|
+
md: 'Set planning ages in **Household**, inspect year-by-year effects in **Results**, and use **Monte Carlo** with longevity modeling when you want a distribution of possible lifespans instead of one fixed horizon.',
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Marginal vs effective tax rate" - a Taxes P0 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const marginalVsEffectiveTaxRateArticle: LearningArticle = {
|
|
8
|
+
slug: 'marginal-vs-effective-tax-rate',
|
|
9
|
+
title: 'Marginal vs effective tax rate',
|
|
10
|
+
description: 'The difference between your top bracket and your average tax rate.',
|
|
11
|
+
category: 'taxes',
|
|
12
|
+
tags: ['marginal tax rate', 'effective tax rate', 'tax bracket', 'income tax', 'roth conversion'],
|
|
13
|
+
audience: 'beginner',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-19',
|
|
16
|
+
reviewCadence: 'stable',
|
|
17
|
+
sourceUrls: ['https://www.irs.gov/filing/federal-income-tax-rates-and-brackets'],
|
|
18
|
+
relatedArticles: [
|
|
19
|
+
'filling-a-tax-bracket-with-roth-conversions',
|
|
20
|
+
'ordinary-income-vs-capital-gains',
|
|
21
|
+
'what-retiregolden-models',
|
|
22
|
+
'why-roth-conversions-raise-other-costs',
|
|
23
|
+
],
|
|
24
|
+
relatedPlannerRoutes: ['/plan/:planId/results', '/plan/:planId/strategy', '/plan/:planId/optimize'],
|
|
25
|
+
currentYearSensitive: false,
|
|
26
|
+
priority: 'P0',
|
|
27
|
+
blocks: [
|
|
28
|
+
{
|
|
29
|
+
type: 'prose',
|
|
30
|
+
md: 'Your marginal tax rate is the rate on the next dollar of taxable income. Your effective tax rate is your total tax divided by your total income. They answer different questions.',
|
|
31
|
+
},
|
|
32
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
33
|
+
{
|
|
34
|
+
type: 'list',
|
|
35
|
+
items: [
|
|
36
|
+
'**Marginal rate** helps you judge one more dollar of income, such as one more dollar converted to Roth.',
|
|
37
|
+
'**Effective rate** helps you understand the average tax burden across the whole year.',
|
|
38
|
+
'A Roth conversion decision usually cares more about the marginal cost than the average rate.',
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
42
|
+
{
|
|
43
|
+
type: 'prose',
|
|
44
|
+
md: 'Tax brackets are layered. Early dollars are taxed at lower rates, later dollars at higher rates. Being "in" a bracket does not mean all your income is taxed at that top rate. It means the next taxable dollar may be taxed at that rate until the next bracket begins.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'formula',
|
|
48
|
+
expression: 'effective tax rate = total tax / total income',
|
|
49
|
+
where: [
|
|
50
|
+
{ symbol: 'total tax', meaning: 'tax paid for the year' },
|
|
51
|
+
{ symbol: 'total income', meaning: 'the income measure you are using for the comparison' },
|
|
52
|
+
],
|
|
53
|
+
note: 'Different reports may use different income measures. RetireGolden focuses on planning comparisons, not return-filing presentation.',
|
|
54
|
+
},
|
|
55
|
+
{ type: 'heading', text: 'A worked example' },
|
|
56
|
+
{
|
|
57
|
+
type: 'scenario',
|
|
58
|
+
name: 'The Alvarez household',
|
|
59
|
+
assumptions: [
|
|
60
|
+
{ label: 'Total income', value: '$100,000' },
|
|
61
|
+
{ label: 'Total tax', value: '$12,000' },
|
|
62
|
+
{ label: 'Next-dollar bracket', value: '22%' },
|
|
63
|
+
],
|
|
64
|
+
summary:
|
|
65
|
+
'Their effective rate is about 12%, but an extra dollar of taxable income may cost about 22 cents before other interactions. A Roth conversion should be judged against the next-dollar cost, not the 12% average.',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
type: 'table',
|
|
69
|
+
caption: 'Which tax rate answers which question?',
|
|
70
|
+
columns: ['Rate', 'Question it answers', 'Common use'],
|
|
71
|
+
rows: [
|
|
72
|
+
['Marginal', 'What happens to the next dollar?', 'Sizing Roth conversions, gain harvesting, extra work income'],
|
|
73
|
+
['Effective', 'How much tax did the whole year carry on average?', 'Understanding overall tax burden'],
|
|
74
|
+
['Blended conversion cost', 'What did this specific conversion actually cost?', 'Comparing conversion strategies after all interactions'],
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
78
|
+
{
|
|
79
|
+
type: 'prose',
|
|
80
|
+
md: 'The optimizer and fill-to-target strategies care about where extra income lands. A conversion may partly fill a lower bracket and partly spill into a higher one. It may also change how much Social Security is taxable or whether MAGI crosses another threshold.',
|
|
81
|
+
},
|
|
82
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
83
|
+
{
|
|
84
|
+
type: 'list',
|
|
85
|
+
items: [
|
|
86
|
+
'Thinking every dollar is taxed at the top bracket rate.',
|
|
87
|
+
'Using effective rate to judge one more dollar of income.',
|
|
88
|
+
'Ignoring non-bracket interactions that create a higher real marginal cost.',
|
|
89
|
+
'Comparing plans by tax rate alone instead of after-tax wealth, risk, and cash flow.',
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
93
|
+
{
|
|
94
|
+
type: 'prose',
|
|
95
|
+
md: 'Use **Results** to inspect annual tax and MAGI. Use **Strategy** and **Optimize** when you want to test how extra conversion income changes the plan.',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Medicare Part B vs Part D IRMAA" - a Healthcare P2 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const medicarePartBVsPartDIrmaaArticle: LearningArticle = {
|
|
8
|
+
slug: 'medicare-part-b-vs-part-d-irmaa',
|
|
9
|
+
title: 'Medicare Part B vs Part D IRMAA',
|
|
10
|
+
description: 'How the income surcharge applies to both premiums.',
|
|
11
|
+
category: 'healthcare',
|
|
12
|
+
tags: ['medicare', 'irmaa', 'part b', 'part d', 'magi', 'premium surcharge'],
|
|
13
|
+
audience: 'intermediate',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: ['https://www.medicare.gov/basics/costs/medicare-costs', 'https://www.ssa.gov/medicare/lower-irmaa'],
|
|
18
|
+
relatedArticles: [
|
|
19
|
+
'irmaa-two-year-lookback',
|
|
20
|
+
'healthcare-after-65',
|
|
21
|
+
'agi-magi-and-taxable-income',
|
|
22
|
+
'why-roth-conversions-raise-other-costs',
|
|
23
|
+
],
|
|
24
|
+
relatedPlannerRoutes: ['/plan/:planId/spending', '/plan/:planId/assumptions', '/plan/:planId/results', '/plan/:planId/optimize'],
|
|
25
|
+
currentYearSensitive: true,
|
|
26
|
+
priority: 'P2',
|
|
27
|
+
blocks: [
|
|
28
|
+
{
|
|
29
|
+
type: 'prose',
|
|
30
|
+
md: 'IRMAA can affect more than one Medicare line item. Higher modified adjusted gross income can raise Part B premiums and can also add a Part D income-related surcharge.',
|
|
31
|
+
},
|
|
32
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
33
|
+
{
|
|
34
|
+
type: 'list',
|
|
35
|
+
items: [
|
|
36
|
+
'Part B is medical insurance; Part D is prescription drug coverage.',
|
|
37
|
+
'IRMAA is income-related and generally uses MAGI from two tax years earlier.',
|
|
38
|
+
'RetireGolden models Part B and Part D IRMAA separately from verified parameter-pack values.',
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
42
|
+
{
|
|
43
|
+
type: 'prose',
|
|
44
|
+
md: 'Many people learn IRMAA as "the Medicare surcharge." That shorthand can hide the mechanics. The standard Part B premium can rise at higher income levels. Part D can also have an income-related surcharge, even though the drug plan premium itself depends on the plan chosen.\n\nFor planning, this matters because an income event can create multiple Medicare cost ripples two years later. A Roth conversion, capital gain, or large required distribution might raise federal tax now and Medicare premiums later.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'figure',
|
|
48
|
+
image: { src: '/learn/images/medicare-part-b-vs-d-irmaa.webp' },
|
|
49
|
+
caption:
|
|
50
|
+
'A higher MAGI year can feed separate Part B and Part D surcharge paths after the two-year lookback.',
|
|
51
|
+
alt: 'An income threshold gate sends two delayed ribbons into separate Medicare Part B and Part D premium buckets.',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'table',
|
|
55
|
+
caption: 'Part B and Part D IRMAA in planning terms.',
|
|
56
|
+
columns: ['Item', 'What it is', 'Planning note'],
|
|
57
|
+
rows: [
|
|
58
|
+
['Part B premium', 'Medical insurance premium', 'RetireGolden adds the standard premium and IRMAA tier effect automatically at 65+'],
|
|
59
|
+
['Part D surcharge', 'Income-related surcharge tied to drug coverage', 'Modeled separately from any plan-specific drug premium extras'],
|
|
60
|
+
['Medicare extras', 'User-entered recurring coverage costs', 'Use for Medigap, Medicare Advantage, Part D plan premiums, or other recurring coverage estimates'],
|
|
61
|
+
['Two-year lookback', 'Prior MAGI drives later premium tiers', 'A current income decision can affect a future premium year'],
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
{ type: 'heading', text: 'A worked example' },
|
|
65
|
+
{
|
|
66
|
+
type: 'scenario',
|
|
67
|
+
name: 'The Simmons household',
|
|
68
|
+
assumptions: [
|
|
69
|
+
{ label: 'Income event', value: 'Large Roth conversion at age 66' },
|
|
70
|
+
{ label: 'Lookback', value: 'MAGI can affect Medicare premiums two years later' },
|
|
71
|
+
{ label: 'Cost paths', value: 'Estimated surcharge adds $120/month for Part B and $35/month for Part D' },
|
|
72
|
+
],
|
|
73
|
+
summary:
|
|
74
|
+
'A combined **$155** monthly surcharge is about **$1,860** for the year. The conversion may still win, but the Medicare cost should be counted with the tax bill.',
|
|
75
|
+
},
|
|
76
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
77
|
+
{
|
|
78
|
+
type: 'prose',
|
|
79
|
+
md: 'RetireGolden calls the Medicare premium model for each living person age 65 or older. It uses MAGI from two years earlier, the household filing status, and the parameter pack. The model returns Part B annual premium, Part D surcharge, and the IRMAA tier. User-entered Medicare extras are added separately.',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
type: 'callout',
|
|
83
|
+
tone: 'note',
|
|
84
|
+
md: 'Model note: RetireGolden adds published Part D IRMAA surcharges separately from any plan-specific drug premium you enter in Medicare extras.',
|
|
85
|
+
},
|
|
86
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
87
|
+
{
|
|
88
|
+
type: 'list',
|
|
89
|
+
items: [
|
|
90
|
+
'Entering a Part B estimate in Medicare extras even though Part B is already modeled automatically.',
|
|
91
|
+
'Forgetting the Part D surcharge when testing income near an IRMAA tier.',
|
|
92
|
+
'Thinking this year\'s lower income immediately erases a prior-year lookback.',
|
|
93
|
+
'Treating every IRMAA tier as fatal instead of comparing the whole lifetime plan.',
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
97
|
+
{
|
|
98
|
+
type: 'prose',
|
|
99
|
+
md: 'Use **Spending** for Medicare extras, **Assumptions** for recent MAGI, and **Results** to inspect MAGI and healthcare costs. Use **Optimize** carefully around IRMAA tier edges when conversion timing is part of the plan.',
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Mortality-weighted Social Security analysis" - a Social Security P2 article.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { LearningArticle } from '../learningRegistry'
|
|
6
|
+
|
|
7
|
+
export const mortalityWeightedSocialSecurityArticle: LearningArticle = {
|
|
8
|
+
slug: 'mortality-weighted-social-security',
|
|
9
|
+
title: 'Mortality-weighted Social Security analysis',
|
|
10
|
+
description: 'Weighing claiming choices by the odds of living to each age.',
|
|
11
|
+
category: 'social-security',
|
|
12
|
+
tags: ['social security', 'mortality', 'expected present value', 'claiming age', 'life expectancy'],
|
|
13
|
+
audience: 'intermediate',
|
|
14
|
+
status: 'ready',
|
|
15
|
+
lastReviewed: '2026-06-20',
|
|
16
|
+
reviewCadence: 'annual',
|
|
17
|
+
sourceUrls: [
|
|
18
|
+
'https://www.ssa.gov/oact/STATS/table4c6.html',
|
|
19
|
+
'https://www.ssa.gov/benefits/retirement/planner/agereduction.html',
|
|
20
|
+
'https://www.ssa.gov/benefits/retirement/planner/delayret.html',
|
|
21
|
+
],
|
|
22
|
+
relatedArticles: [
|
|
23
|
+
'reading-the-social-security-analysis-page',
|
|
24
|
+
'social-security-claiming-age-basics',
|
|
25
|
+
'break-even-useful-lens',
|
|
26
|
+
'longevity-risk',
|
|
27
|
+
'planning-for-couples-and-survivor-years',
|
|
28
|
+
],
|
|
29
|
+
relatedPlannerRoutes: ['/plan/:planId/social-security-analysis', '/plan/:planId/social-security'],
|
|
30
|
+
currentYearSensitive: true,
|
|
31
|
+
priority: 'P2',
|
|
32
|
+
blocks: [
|
|
33
|
+
{
|
|
34
|
+
type: 'prose',
|
|
35
|
+
md: 'Mortality-weighted analysis asks: if each future benefit payment is weighted by the chance of being alive to receive it, which claiming age has the strongest expected value? It is an actuarial lens, not a complete retirement-plan answer.',
|
|
36
|
+
},
|
|
37
|
+
{ type: 'heading', text: 'Quick takeaways' },
|
|
38
|
+
{
|
|
39
|
+
type: 'list',
|
|
40
|
+
items: [
|
|
41
|
+
'Expected value gives more weight to years you are more likely to reach and less weight to very late years.',
|
|
42
|
+
'A real discount rate reflects how much you value money sooner versus later.',
|
|
43
|
+
'RetireGolden shows benefits-only expected present value separately from the full in-your-plan sweep.',
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{ type: 'heading', text: 'The basic idea' },
|
|
47
|
+
{
|
|
48
|
+
type: 'prose',
|
|
49
|
+
md: 'A simple break-even chart treats the future as if you will definitely live to each plotted age. Mortality-weighted analysis is more careful. It says that a payment at age 72 should count more than a payment at age 98 because more people reach 72 than 98.\n\nIt also discounts future dollars. Social Security benefits are inflation-adjusted, so RetireGolden uses a real discount-rate lens for the benefits-only view. A higher real discount rate tends to favor earlier cash flow; a lower rate tends to favor delayed, larger checks.',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
type: 'figure',
|
|
53
|
+
image: { src: '/learn/images/mortality-weighted-social-security.webp' },
|
|
54
|
+
caption:
|
|
55
|
+
'Mortality-weighted analysis combines benefit size, survival odds, and a real discount rate into one benefits-only lens.',
|
|
56
|
+
alt: 'Social Security benefit streams flow through a survival-probability curve and a discount-rate filter into an expected-value scale.',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'formula',
|
|
60
|
+
expression: 'expected value = sum of each future benefit x survival probability x discount factor',
|
|
61
|
+
where: [
|
|
62
|
+
{ symbol: 'future benefit', meaning: 'the annual Social Security payment for that future year' },
|
|
63
|
+
{ symbol: 'survival probability', meaning: 'the chance the person is alive to receive that year\'s benefit' },
|
|
64
|
+
{ symbol: 'discount factor', meaning: 'the real-rate adjustment for money received later' },
|
|
65
|
+
],
|
|
66
|
+
basis: 'today',
|
|
67
|
+
note: 'RetireGolden uses annual cash flows in this lens. Monthly claim precision, taxes, and portfolio effects belong in the full plan sweep.',
|
|
68
|
+
},
|
|
69
|
+
{ type: 'heading', text: 'Benefits only versus in your plan' },
|
|
70
|
+
{
|
|
71
|
+
type: 'table',
|
|
72
|
+
caption: 'The two Social Security analysis lenses answer different questions.',
|
|
73
|
+
columns: ['Lens', 'Includes', 'Leaves out'],
|
|
74
|
+
rows: [
|
|
75
|
+
['Benefits only', 'Benefit size, survival odds, real discount rate, simplified spousal and survivor effects', 'Taxes, withdrawals, Roth conversions, IRMAA, ACA, RMDs, estate value'],
|
|
76
|
+
['In your plan', 'The full projection and ending after-tax estate', 'It depends on the quality of all plan inputs'],
|
|
77
|
+
['Break-even', 'Cumulative benefit timing', 'Mortality odds and most whole-plan interactions'],
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
{ type: 'heading', text: 'A worked example' },
|
|
81
|
+
{
|
|
82
|
+
type: 'scenario',
|
|
83
|
+
name: 'The Rivera household',
|
|
84
|
+
assumptions: [
|
|
85
|
+
{ label: 'Benefits-only result', value: 'Claiming at 70 is about $18,000 better on expected present value' },
|
|
86
|
+
{ label: 'Whole-plan result', value: 'Claiming at 67 leaves ending estate within about $5,000' },
|
|
87
|
+
{ label: 'Interpretation', value: 'The actuarial winner and the full-plan winner are nearly tied' },
|
|
88
|
+
],
|
|
89
|
+
summary:
|
|
90
|
+
'The benefits-only view favors delay by about **$18,000**, but the full plan narrows the estate difference to about **$5,000**. That is close enough for household priorities to matter.',
|
|
91
|
+
},
|
|
92
|
+
{ type: 'heading', text: 'Why it matters in RetireGolden' },
|
|
93
|
+
{
|
|
94
|
+
type: 'prose',
|
|
95
|
+
md: 'The **Social Security analysis** page separates the benefits-only actuarial view from the full projection. For couples, the benefits-only view includes simplified spousal and survivor effects and assumes independent lifetimes. The full in-your-plan view reruns the actual plan for each claiming strategy.',
|
|
96
|
+
},
|
|
97
|
+
{ type: 'heading', text: 'Common mistakes' },
|
|
98
|
+
{
|
|
99
|
+
type: 'list',
|
|
100
|
+
items: [
|
|
101
|
+
'Treating expected value as a guarantee for one household.',
|
|
102
|
+
'Using the benefits-only ranking to ignore taxes, IRMAA, and portfolio withdrawals.',
|
|
103
|
+
'For couples, forgetting that survivor protection can matter more than first-death totals.',
|
|
104
|
+
'Changing the real discount rate until it confirms a preferred answer.',
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
{ type: 'heading', text: 'Where to use this in the app' },
|
|
108
|
+
{
|
|
109
|
+
type: 'prose',
|
|
110
|
+
md: 'Open **Social Security analysis** after entering benefits on **Social Security**. Use the benefits-only view for an actuarial read, then compare it with the in-your-plan ranking before changing claim ages.',
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
}
|