@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.
Files changed (298) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +181 -0
  3. package/package.json +77 -0
  4. package/src/App.tsx +246 -0
  5. package/src/RouteErrorBoundary.tsx +45 -0
  6. package/src/assets/hero.png +0 -0
  7. package/src/assets/react.svg +1 -0
  8. package/src/assets/vite.svg +1 -0
  9. package/src/data/fedInvestClient.ts +113 -0
  10. package/src/data/localStore.ts +42 -0
  11. package/src/data/planOrigin.ts +24 -0
  12. package/src/data/planStore.ts +165 -0
  13. package/src/data/v2Backup.ts +101 -0
  14. package/src/import/ImportPage.tsx +347 -0
  15. package/src/import/ReviewChecklistView.tsx +38 -0
  16. package/src/import/brokerCsv.ts +395 -0
  17. package/src/import/csv.ts +133 -0
  18. package/src/import/genericCsv.ts +224 -0
  19. package/src/import/projectionLab.ts +350 -0
  20. package/src/import/reviewChecklist.ts +33 -0
  21. package/src/import/tenForty.ts +275 -0
  22. package/src/index.css +630 -0
  23. package/src/index.ts +16 -0
  24. package/src/learn/ArticleBody.tsx +78 -0
  25. package/src/learn/ArticlePage.tsx +57 -0
  26. package/src/learn/GlossaryPage.tsx +33 -0
  27. package/src/learn/LearnAboutScreen.tsx +41 -0
  28. package/src/learn/LearnCards.tsx +41 -0
  29. package/src/learn/LearnLink.tsx +91 -0
  30. package/src/learn/LearningCenterPage.tsx +114 -0
  31. package/src/learn/SourcesPage.tsx +98 -0
  32. package/src/learn/components/ArticleFigure.tsx +34 -0
  33. package/src/learn/components/ArticleShell.tsx +86 -0
  34. package/src/learn/components/ComparisonTable.tsx +42 -0
  35. package/src/learn/components/FormulaBlock.tsx +34 -0
  36. package/src/learn/components/PurchasingPowerChart.tsx +41 -0
  37. package/src/learn/components/RelatedArticles.tsx +27 -0
  38. package/src/learn/components/ScenarioCard.tsx +24 -0
  39. package/src/learn/components/SourceList.tsx +23 -0
  40. package/src/learn/components/charts.tsx +21 -0
  41. package/src/learn/content/about-retiregolden.ts +100 -0
  42. package/src/learn/content/aca-premium-tax-credits-and-magi.ts +103 -0
  43. package/src/learn/content/account-types-overview.ts +106 -0
  44. package/src/learn/content/after-tax-estate.ts +111 -0
  45. package/src/learn/content/agi-magi-and-taxable-income.ts +112 -0
  46. package/src/learn/content/appealing-irmaa-ssa-44.ts +95 -0
  47. package/src/learn/content/assumption-general-inflation.ts +82 -0
  48. package/src/learn/content/assumption-healthcare-inflation.ts +85 -0
  49. package/src/learn/content/assumption-heir-tax-rate.ts +79 -0
  50. package/src/learn/content/assumption-investment-returns.ts +90 -0
  51. package/src/learn/content/assumption-longevity-planning-age.ts +78 -0
  52. package/src/learn/content/assumption-recent-magi.ts +83 -0
  53. package/src/learn/content/assumption-social-security-cola.ts +89 -0
  54. package/src/learn/content/assumption-social-security-trust-fund.ts +83 -0
  55. package/src/learn/content/assumption-state-tax-override.ts +79 -0
  56. package/src/learn/content/beneficiaries-and-account-titling.ts +99 -0
  57. package/src/learn/content/break-even-useful-lens.ts +94 -0
  58. package/src/learn/content/building-a-retirement-spending-budget.ts +100 -0
  59. package/src/learn/content/cola-and-inflation-protection.ts +102 -0
  60. package/src/learn/content/divorced-spousal-and-survivor-records.ts +104 -0
  61. package/src/learn/content/dynamic-spending-guardrails.ts +90 -0
  62. package/src/learn/content/earnings-test-before-fra.ts +100 -0
  63. package/src/learn/content/employer-match-and-contribution-order.ts +104 -0
  64. package/src/learn/content/examplePlanArticles.ts +525 -0
  65. package/src/learn/content/fees-expense-ratios-and-compounding-drag.ts +98 -0
  66. package/src/learn/content/fi-number-and-four-percent-rule.ts +64 -0
  67. package/src/learn/content/filling-a-tax-bracket-with-roth-conversions.ts +98 -0
  68. package/src/learn/content/funded-ratio.ts +70 -0
  69. package/src/learn/content/healthcare-after-65.ts +103 -0
  70. package/src/learn/content/healthcare-before-65.ts +104 -0
  71. package/src/learn/content/historical-vs-random-return-models.ts +101 -0
  72. package/src/learn/content/how-assumptions-change-the-answer.ts +105 -0
  73. package/src/learn/content/how-much-can-i-spend.ts +105 -0
  74. package/src/learn/content/how-social-security-is-taxed.ts +95 -0
  75. package/src/learn/content/how-the-optimizer-thinks.ts +102 -0
  76. package/src/learn/content/how-the-optimizer-values-after-tax-estate.ts +97 -0
  77. package/src/learn/content/how-to-model-accumulation.ts +67 -0
  78. package/src/learn/content/how-to-read-a-retirement-projection.ts +115 -0
  79. package/src/learn/content/hsas-and-qualified-medical-expenses.ts +108 -0
  80. package/src/learn/content/hsas-as-retirement-accounts.ts +101 -0
  81. package/src/learn/content/inflation-risk.ts +98 -0
  82. package/src/learn/content/inherited-ira-10-year-rule.ts +105 -0
  83. package/src/learn/content/insurance-in-your-retirement-plan.ts +103 -0
  84. package/src/learn/content/irmaa-two-year-lookback.ts +99 -0
  85. package/src/learn/content/long-term-care-costs-and-insurance.ts +103 -0
  86. package/src/learn/content/long-term-care-insurance-as-risk-transfer.ts +98 -0
  87. package/src/learn/content/longevity-risk.ts +99 -0
  88. package/src/learn/content/marginal-vs-effective-tax-rate.ts +98 -0
  89. package/src/learn/content/medicare-part-b-vs-part-d-irmaa.ts +102 -0
  90. package/src/learn/content/mortality-weighted-social-security.ts +113 -0
  91. package/src/learn/content/moving-to-retiregolden.ts +86 -0
  92. package/src/learn/content/niit-high-income-investment-tax.ts +98 -0
  93. package/src/learn/content/ordinary-income-vs-capital-gains.ts +103 -0
  94. package/src/learn/content/paying-conversion-taxes-taxable-vs-ira.ts +102 -0
  95. package/src/learn/content/pensions-and-annuities.ts +101 -0
  96. package/src/learn/content/permanent-life-insurance-in-a-plan.ts +106 -0
  97. package/src/learn/content/pia-aime-and-bend-points.ts +103 -0
  98. package/src/learn/content/planner-overview.ts +106 -0
  99. package/src/learn/content/planning-for-couples-and-survivor-years.ts +108 -0
  100. package/src/learn/content/privacy-what-stays-in-your-browser.ts +99 -0
  101. package/src/learn/content/qcds-qualified-charitable-distributions.ts +101 -0
  102. package/src/learn/content/reading-the-results-page.ts +96 -0
  103. package/src/learn/content/reading-the-social-security-analysis-page.ts +106 -0
  104. package/src/learn/content/real-estate-home-equity-and-debt.ts +100 -0
  105. package/src/learn/content/reports-csv-exports-and-sharing.ts +101 -0
  106. package/src/learn/content/risk-based-guardrails.ts +100 -0
  107. package/src/learn/content/rmds-required-minimum-distributions.ts +100 -0
  108. package/src/learn/content/roth-conversion-basics.ts +104 -0
  109. package/src/learn/content/rsus-and-espp.ts +101 -0
  110. package/src/learn/content/rule-of-55-and-72t.ts +107 -0
  111. package/src/learn/content/savings-rate-biggest-lever.ts +66 -0
  112. package/src/learn/content/seed-your-plan-from-your-tax-return.ts +93 -0
  113. package/src/learn/content/sensitivity-testing-what-changes-the-answer.ts +104 -0
  114. package/src/learn/content/sequence-of-returns-risk.ts +98 -0
  115. package/src/learn/content/social-security-bridge.ts +67 -0
  116. package/src/learn/content/social-security-claiming-age-basics.ts +113 -0
  117. package/src/learn/content/social-security-taxes-vs-benefits.ts +76 -0
  118. package/src/learn/content/spending-profiles-and-the-retirement-smile.ts +92 -0
  119. package/src/learn/content/spousal-and-survivor-benefits.ts +120 -0
  120. package/src/learn/content/ssdi-and-retirement-planning.ts +72 -0
  121. package/src/learn/content/standard-deduction-senior-deduction-and-itemizing.ts +97 -0
  122. package/src/learn/content/state-income-taxes-in-retirement.ts +97 -0
  123. package/src/learn/content/step-up-in-basis.ts +102 -0
  124. package/src/learn/content/survivor-planning-for-couples.ts +110 -0
  125. package/src/learn/content/survivor-spending-in-couple-plans.ts +98 -0
  126. package/src/learn/content/tax-cliffs-and-bracket-edges.ts +105 -0
  127. package/src/learn/content/tax-loss-and-gain-harvesting.ts +99 -0
  128. package/src/learn/content/taxable-brokerage-basis-and-capital-gains.ts +99 -0
  129. package/src/learn/content/three-big-questions-spending-time-risk.ts +103 -0
  130. package/src/learn/content/tips-ladders.ts +92 -0
  131. package/src/learn/content/todays-dollars-vs-future-dollars.ts +107 -0
  132. package/src/learn/content/traditional-vs-roth-contributions.ts +113 -0
  133. package/src/learn/content/troubleshooting-surprising-results.ts +105 -0
  134. package/src/learn/content/trust-fund-haircut-scenarios.ts +101 -0
  135. package/src/learn/content/understanding-monte-carlo-success-rate.ts +118 -0
  136. package/src/learn/content/understanding-your-plan-assumptions.ts +134 -0
  137. package/src/learn/content/using-assumptions-and-provenance.ts +98 -0
  138. package/src/learn/content/using-scenarios-to-compare-choices.ts +99 -0
  139. package/src/learn/content/what-changes-when-you-move-states.ts +141 -0
  140. package/src/learn/content/what-is-fire.ts +65 -0
  141. package/src/learn/content/what-monte-carlo-proves.ts +98 -0
  142. package/src/learn/content/what-retiregolden-models.ts +103 -0
  143. package/src/learn/content/what-retirement-healthcare-really-costs.ts +117 -0
  144. package/src/learn/content/why-95-percent-is-not-a-guarantee.ts +98 -0
  145. package/src/learn/content/why-roth-conversions-raise-other-costs.ts +106 -0
  146. package/src/learn/content/why-small-tax-cliffs-can-matter.ts +109 -0
  147. package/src/learn/content/widows-penalty-and-survivor-brackets.ts +106 -0
  148. package/src/learn/content/withdrawal-order-basics.ts +105 -0
  149. package/src/learn/glossary.ts +191 -0
  150. package/src/learn/inlineMarkdown.tsx +54 -0
  151. package/src/learn/learn.css +537 -0
  152. package/src/learn/learningRegistry.ts +502 -0
  153. package/src/longevity/LongevityResults.tsx +85 -0
  154. package/src/longevity/LongevityWizard.tsx +305 -0
  155. package/src/longevity/constants.ts +15 -0
  156. package/src/longevity/factors.ts +125 -0
  157. package/src/longevity/model.ts +31 -0
  158. package/src/longevity/persistedGuard.ts +129 -0
  159. package/src/longevity/storage.ts +40 -0
  160. package/src/mc/messages.ts +118 -0
  161. package/src/mc/monteCarlo.worker.ts +44 -0
  162. package/src/mc/pool.ts +267 -0
  163. package/src/mc/runRequest.ts +125 -0
  164. package/src/optimize/messages.ts +84 -0
  165. package/src/optimize/optimize.worker.ts +29 -0
  166. package/src/optimize/runOptimize.ts +92 -0
  167. package/src/optimize/runSpendingSolve.ts +47 -0
  168. package/src/optimize/runner.ts +21 -0
  169. package/src/optimize/spendingMessages.ts +44 -0
  170. package/src/optimize/spendingRunner.ts +21 -0
  171. package/src/optimize/spendingSolve.worker.ts +18 -0
  172. package/src/planner/AssumptionsCardPage.tsx +136 -0
  173. package/src/planner/BucketLensCard.tsx +114 -0
  174. package/src/planner/ComparePlansPage.tsx +219 -0
  175. package/src/planner/DisclaimerPage.tsx +88 -0
  176. package/src/planner/HowTestedPage.tsx +159 -0
  177. package/src/planner/LiveStatus.tsx +15 -0
  178. package/src/planner/LongevityModal.tsx +55 -0
  179. package/src/planner/Modal.tsx +97 -0
  180. package/src/planner/MonteCarloPage.tsx +907 -0
  181. package/src/planner/OptimizePage.tsx +611 -0
  182. package/src/planner/PlanContext.tsx +198 -0
  183. package/src/planner/PlanPickerPage.tsx +124 -0
  184. package/src/planner/PlanWorkspace.tsx +290 -0
  185. package/src/planner/ProvenancePanel.tsx +45 -0
  186. package/src/planner/RelocationComparePage.tsx +485 -0
  187. package/src/planner/ReportPage.tsx +375 -0
  188. package/src/planner/ResultsPage.tsx +817 -0
  189. package/src/planner/ScenariosPage.tsx +285 -0
  190. package/src/planner/SocialSecuritySection.tsx +556 -0
  191. package/src/planner/SpendingSolverPage.tsx +512 -0
  192. package/src/planner/SsAnalysisPage.tsx +1134 -0
  193. package/src/planner/SurvivalPercentileModal.tsx +161 -0
  194. package/src/planner/SurvivorTransitionPage.tsx +286 -0
  195. package/src/planner/assumptionsExport.ts +371 -0
  196. package/src/planner/bucketLens.ts +89 -0
  197. package/src/planner/chartFrame.ts +8 -0
  198. package/src/planner/chartStyle.ts +11 -0
  199. package/src/planner/dialogViews.tsx +184 -0
  200. package/src/planner/dialogs.tsx +133 -0
  201. package/src/planner/examples/ExampleLibrary.tsx +189 -0
  202. package/src/planner/examples/ExamplePreviewBanner.tsx +55 -0
  203. package/src/planner/examples/ExamplesPage.tsx +25 -0
  204. package/src/planner/examples/OpenExampleButton.tsx +61 -0
  205. package/src/planner/examples/buildAggressiveSaver.ts +102 -0
  206. package/src/planner/examples/buildAnnuityEstate.ts +137 -0
  207. package/src/planner/examples/buildBaristaFire.ts +115 -0
  208. package/src/planner/examples/buildBracketFillRoth.ts +65 -0
  209. package/src/planner/examples/buildBridgeEarlyRetirement.ts +94 -0
  210. package/src/planner/examples/buildBrokerageNoHsa.ts +109 -0
  211. package/src/planner/examples/buildCoastFire.ts +88 -0
  212. package/src/planner/examples/buildContext.ts +20 -0
  213. package/src/planner/examples/buildEarlyCareerMatch.ts +93 -0
  214. package/src/planner/examples/buildEarlyRetireeAca.ts +61 -0
  215. package/src/planner/examples/buildExampleCouple.ts +103 -0
  216. package/src/planner/examples/buildFixedTargetSpending.ts +74 -0
  217. package/src/planner/examples/buildGlidepathAllocation.ts +131 -0
  218. package/src/planner/examples/buildGuardrailsFlex.ts +120 -0
  219. package/src/planner/examples/buildHsaPropertyDepth.ts +109 -0
  220. package/src/planner/examples/buildHsaStealthRetirement.ts +97 -0
  221. package/src/planner/examples/buildLeanFatFire.ts +109 -0
  222. package/src/planner/examples/buildLtcShock.ts +62 -0
  223. package/src/planner/examples/buildMovingStateTax.ts +53 -0
  224. package/src/planner/examples/buildNoAnnuityBrokerage.ts +92 -0
  225. package/src/planner/examples/buildRmdIrmaa.ts +55 -0
  226. package/src/planner/examples/buildSalaryGrowthEscalation.ts +96 -0
  227. package/src/planner/examples/buildStaticAllocationControl.ts +96 -0
  228. package/src/planner/examples/buildSurvivorYears.ts +62 -0
  229. package/src/planner/examples/buildUnderSavedSingle.ts +51 -0
  230. package/src/planner/examples/exampleCopy.ts +23 -0
  231. package/src/planner/examples/loadExample.ts +90 -0
  232. package/src/planner/examples/registry.ts +313 -0
  233. package/src/planner/explainPanels.tsx +233 -0
  234. package/src/planner/fields.tsx +381 -0
  235. package/src/planner/format.ts +33 -0
  236. package/src/planner/home/DataAndPrivacyCard.tsx +56 -0
  237. package/src/planner/home/GettingStartedPaths.tsx +46 -0
  238. package/src/planner/home/GettingStartedReopener.tsx +32 -0
  239. package/src/planner/home/StartHereLinks.tsx +22 -0
  240. package/src/planner/home/WelcomeHero.tsx +39 -0
  241. package/src/planner/home/YourPlans.tsx +72 -0
  242. package/src/planner/home/importErrorMessage.ts +22 -0
  243. package/src/planner/home/startHereSlugs.ts +7 -0
  244. package/src/planner/home/useHomeData.ts +190 -0
  245. package/src/planner/home/useHomeMode.ts +47 -0
  246. package/src/planner/householdActions.ts +22 -0
  247. package/src/planner/insights/InsightCardView.tsx +340 -0
  248. package/src/planner/insights/InsightsPage.tsx +204 -0
  249. package/src/planner/insights/categoryLabels.ts +11 -0
  250. package/src/planner/learnLinks.ts +85 -0
  251. package/src/planner/marketModelPicker.ts +172 -0
  252. package/src/planner/optimizePageChart.ts +40 -0
  253. package/src/planner/optimizePageClaim.ts +64 -0
  254. package/src/planner/planCompleteness.ts +27 -0
  255. package/src/planner/planContextCore.ts +26 -0
  256. package/src/planner/planner.css +2304 -0
  257. package/src/planner/provenanceLinks.ts +25 -0
  258. package/src/planner/sections/AccountFields.tsx +872 -0
  259. package/src/planner/sections/AccountsSection.tsx +89 -0
  260. package/src/planner/sections/AllocationPanel.tsx +261 -0
  261. package/src/planner/sections/AssumptionsSection.tsx +256 -0
  262. package/src/planner/sections/HouseholdSection.tsx +243 -0
  263. package/src/planner/sections/IncomeFloorSection.tsx +418 -0
  264. package/src/planner/sections/IncomeSection.tsx +170 -0
  265. package/src/planner/sections/InsuranceSection.tsx +362 -0
  266. package/src/planner/sections/SpendingSection.tsx +904 -0
  267. package/src/planner/sections/StrategySection.tsx +349 -0
  268. package/src/planner/sections/UpdateBalancesPanel.tsx +182 -0
  269. package/src/planner/sections/sectionHelpers.ts +48 -0
  270. package/src/planner/sections/shared.tsx +15 -0
  271. package/src/planner/sections.tsx +15 -0
  272. package/src/planner/ssAnalysis.ts +325 -0
  273. package/src/planner/successBand.ts +20 -0
  274. package/src/planner/survivorAnalysis.ts +277 -0
  275. package/src/planner/usStates.ts +19 -0
  276. package/src/planner/useMcSuccessRate.ts +77 -0
  277. package/src/planner/useProjection.ts +63 -0
  278. package/src/relocation/messages.ts +21 -0
  279. package/src/relocation/relocation.worker.ts +18 -0
  280. package/src/relocation/runRelocation.ts +17 -0
  281. package/src/relocation/runner.ts +22 -0
  282. package/src/report/brandingContext.ts +15 -0
  283. package/src/report/downloadReport.ts +34 -0
  284. package/src/report/reportHtml.ts +547 -0
  285. package/src/routes/LearnRoutes.tsx +46 -0
  286. package/src/routes/PlanRoutes.tsx +55 -0
  287. package/src/routes/RouteFallback.tsx +9 -0
  288. package/src/socialSecurity/breakEven.ts +107 -0
  289. package/src/socialSecurity/expectedPv.ts +164 -0
  290. package/src/socialSecurity/explain.ts +92 -0
  291. package/src/socialSecurity/ficaReturn.ts +81 -0
  292. package/src/socialSecurity/persistedSsGuard.ts +138 -0
  293. package/src/socialSecurity/ssFormUtils.ts +48 -0
  294. package/src/socialSecurity/ssaStatementXml.ts +156 -0
  295. package/src/socialSecurity/storage.ts +69 -0
  296. package/src/socialSecurity/survivorSwitching.ts +153 -0
  297. package/src/testSupport/samplePlan.ts +2 -0
  298. package/src/workers/run.ts +45 -0
@@ -0,0 +1,101 @@
1
+ /**
2
+ * "RSUs and ESPP in retirement planning" - an Accounts and Saving P2 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const rsusAndEsppArticle: LearningArticle = {
8
+ slug: 'rsus-and-espp',
9
+ title: 'RSUs and ESPP in retirement planning',
10
+ description: 'How equity compensation translates into retirement savings.',
11
+ category: 'accounts-saving',
12
+ tags: ['rsu', 'espp', 'equity compensation', 'vesting', 'cost basis', 'concentration risk'],
13
+ audience: 'intermediate',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-20',
16
+ reviewCadence: 'annual',
17
+ sourceUrls: [
18
+ 'https://www.irs.gov/taxtopics/tc427',
19
+ 'https://www.irs.gov/forms-pubs/about-publication-525',
20
+ ],
21
+ relatedArticles: [
22
+ 'account-types-overview',
23
+ 'taxable-brokerage-basis-and-capital-gains',
24
+ 'ordinary-income-vs-capital-gains',
25
+ 'tax-loss-and-gain-harvesting',
26
+ 'fees-expense-ratios-and-compounding-drag',
27
+ ],
28
+ relatedPlannerRoutes: ['/plan/:planId/accounts', '/plan/:planId/strategy', '/plan/:planId/results'],
29
+ currentYearSensitive: true,
30
+ priority: 'P2',
31
+ blocks: [
32
+ {
33
+ type: 'prose',
34
+ md: 'Equity compensation can become a powerful retirement asset, but it is rarely as simple as a plain brokerage balance. Vesting, taxes, cost basis, concentration risk, and selling decisions all affect how much of the award really supports the plan.',
35
+ },
36
+ { type: 'heading', text: 'Quick takeaways' },
37
+ {
38
+ type: 'list',
39
+ items: [
40
+ 'Restricted stock units (RSUs) and employee stock purchase plan (ESPP) shares can turn compensation into investable assets.',
41
+ 'The retirement-plan value depends on what is already vested, what may vest later, and what tax basis the shares carry.',
42
+ 'RetireGolden models equity comp as a taxable-like account with an availability date, not as payroll, withholding, or grant-level tax accounting.',
43
+ ],
44
+ },
45
+ { type: 'heading', text: 'The basic idea' },
46
+ {
47
+ type: 'prose',
48
+ md: 'Once company shares are vested and available, they can often be sold like taxable investments. Before that point, they may be promised but not spendable. A good plan distinguishes confirmed assets from future compensation, and it asks whether too much of the household balance sheet depends on one employer or one stock.',
49
+ },
50
+ {
51
+ type: 'figure',
52
+ image: { src: '/learn/images/rsus-espp.webp' },
53
+ caption:
54
+ 'Equity compensation moves from future vesting to taxable-like investable wealth only after it becomes available.',
55
+ alt: 'Company-share tiles move along a vesting path into an available investment bucket, with a caution badge for concentration risk beside the path.',
56
+ },
57
+ {
58
+ type: 'table',
59
+ caption: 'Planning lens for equity compensation.',
60
+ columns: ['Question', 'Why it matters', 'RetireGolden input'],
61
+ rows: [
62
+ ['What is already available?', 'Available shares can be sold to fund the plan', 'Balance and cost basis'],
63
+ ['What vests later?', 'Unvested value may not be spendable yet', 'Vesting mode and vest date'],
64
+ ['What is the tax basis?', 'Basis affects capital gains when shares are sold', 'Aggregate cost basis'],
65
+ ['How concentrated is the position?', 'Employer stock can add job and portfolio risk at the same time', 'Return and scenario assumptions'],
66
+ ],
67
+ },
68
+ { type: 'heading', text: 'A worked example' },
69
+ {
70
+ type: 'scenario',
71
+ name: 'The Brooks household',
72
+ assumptions: [
73
+ { label: 'Equity comp', value: '$120,000 expected to vest near retirement' },
74
+ { label: 'Bridge need', value: '$55,000 of spending before pension and Social Security begin' },
75
+ { label: 'Risk check', value: 'A 40% stock decline would cut the vesting value to about $72,000' },
76
+ ],
77
+ summary:
78
+ 'At $120,000, the award covers the $55,000 bridge with room left over. At $72,000, it still covers one year but leaves far less cushion for taxes, delays, or another weak market year.',
79
+ },
80
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
81
+ {
82
+ type: 'prose',
83
+ md: 'RetireGolden includes an **Equity comp** account type on **Accounts**. It stores balance, aggregate cost basis, annual contribution, vesting mode, and vest date. When cliff vesting is selected, the balance is unavailable for spending before the vest date. After it is available, withdrawals realize gains pro-rata like a taxable account.',
84
+ },
85
+ { type: 'heading', text: 'Common mistakes' },
86
+ {
87
+ type: 'list',
88
+ items: [
89
+ 'Counting unvested awards as fully spendable today.',
90
+ 'Leaving cost basis blank when shares have basis that affects taxable gains.',
91
+ 'Ignoring the risk of holding a large employer-stock position near retirement.',
92
+ 'Expecting the planner to model grant-by-grant withholding, disqualifying ESPP dispositions, or tax-lot selection.',
93
+ ],
94
+ },
95
+ { type: 'heading', text: 'Where to use this in the app' },
96
+ {
97
+ type: 'prose',
98
+ md: 'Use **Accounts** to add equity comp and its vesting assumption. Use **Scenarios** to test a lower stock value or delayed availability, then use **Results** to inspect withdrawals, gains, MAGI, and taxes.',
99
+ },
100
+ ],
101
+ }
@@ -0,0 +1,107 @@
1
+ /**
2
+ * "Rule of 55 and 72(t) basics" - a Withdrawals and Roth P1 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const ruleOf55And72tArticle: LearningArticle = {
8
+ slug: 'rule-of-55-and-72t',
9
+ title: 'Rule of 55 and 72(t) basics',
10
+ description: 'Penalty-free ways to reach retirement money before age 59 1/2.',
11
+ category: 'withdrawals-roth',
12
+ tags: ['rule of 55', '72(t)', 'sepp', 'early withdrawals', 'traditional ira', '401(k)', 'penalty'],
13
+ audience: 'intermediate',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-20',
16
+ reviewCadence: 'annual',
17
+ sourceUrls: [
18
+ 'https://www.irs.gov/retirement-plans/plan-participant-employee/retirement-topics-exceptions-to-tax-on-early-distributions',
19
+ 'https://www.irs.gov/retirement-plans/substantially-equal-periodic-payments',
20
+ 'https://www.irs.gov/publications/p590b',
21
+ ],
22
+ relatedArticles: [
23
+ 'withdrawal-order-basics',
24
+ 'roth-conversion-basics',
25
+ 'paying-conversion-taxes-taxable-vs-ira',
26
+ 'inherited-ira-10-year-rule',
27
+ 'rmds-required-minimum-distributions',
28
+ ],
29
+ relatedPlannerRoutes: ['/plan/:planId/accounts', '/plan/:planId/strategy', '/plan/:planId/results'],
30
+ currentYearSensitive: true,
31
+ priority: 'P1',
32
+ blocks: [
33
+ {
34
+ type: 'prose',
35
+ md: 'The Rule of 55 and 72(t) substantially equal periodic payments are two ways early retirees may reach retirement money before the usual 59 1/2 penalty age. They can remove the extra penalty, but they do not make taxable retirement money tax-free.',
36
+ },
37
+ { type: 'heading', text: 'Quick takeaways' },
38
+ {
39
+ type: 'list',
40
+ items: [
41
+ 'The Rule of 55 generally applies to an employer plan tied to the job you leave at 55 or later.',
42
+ 'A 72(t) SEPP series can apply to IRA or plan money, but the payment schedule must be respected.',
43
+ 'Penalty-free does not mean tax-free. Traditional-account distributions are still usually ordinary income.',
44
+ ],
45
+ },
46
+ { type: 'heading', text: 'The basic idea' },
47
+ {
48
+ type: 'prose',
49
+ md: 'Early retirement often creates a bridge problem. You may have enough money on paper, but much of it may sit in traditional retirement accounts. Taking that money too early can create income tax plus an extra 10% early-distribution tax unless an exception applies.\n\nThe Rule of 55 is a narrow employer-plan exception. A 72(t) SEPP is a more formal payment series. Both are planning tools with strings attached. They can help bridge a gap, but they should be compared against cash, taxable accounts, Roth contribution basis, conversion ladders, and delaying spending.',
50
+ },
51
+ {
52
+ type: 'figure',
53
+ image: { src: '/learn/images/rule-of-55-72t.webp' },
54
+ caption:
55
+ 'Early-access rules are bridges across the pre-59 1/2 gap, but each bridge has its own gate and commitment.',
56
+ alt: 'A retirement timeline before age 60 shows two gated bridges from traditional accounts to spending: one employer-plan bridge and one scheduled-payment bridge.',
57
+ },
58
+ {
59
+ type: 'table',
60
+ caption: 'Two penalty exceptions are often confused.',
61
+ columns: ['Path', 'What it can do', 'Main caution'],
62
+ rows: [
63
+ ['Rule of 55', 'May waive the 10% penalty for an employer plan after separating from service at 55 or later', 'Usually does not apply to IRAs or old plans from earlier jobs'],
64
+ ['72(t) SEPP', 'May create penalty-free periodic payments before 59 1/2', 'Changing the series too early can create retroactive penalties'],
65
+ ['Roth basis', 'Direct Roth contributions may be accessible without tax or penalty', 'Conversions and earnings have their own ordering and timing rules'],
66
+ ['Cash or taxable', 'Can fund the bridge without retirement-account penalty rules', 'May reduce liquidity or realize capital gains'],
67
+ ],
68
+ },
69
+ { type: 'heading', text: 'A worked example' },
70
+ {
71
+ type: 'scenario',
72
+ name: 'The Ortiz household',
73
+ assumptions: [
74
+ { label: 'Retirement age', value: 'One spouse retires at 56' },
75
+ { label: 'Largest account', value: '$480,000 employer plan from the job just left' },
76
+ { label: 'Bridge need', value: '$40,000 a year for four years before the normal penalty age' },
77
+ ],
78
+ summary:
79
+ 'The bridge need is about **$160,000** before taxes. Keeping the employer-plan bucket available may matter more than rolling everything into an IRA right away.',
80
+ },
81
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
82
+ {
83
+ type: 'prose',
84
+ md: 'RetireGolden approximates the 59 1/2 penalty boundary as age 60. It can waive the traditional early-withdrawal penalty for an employer plan when the owner separates at age 55 or later, using the person\'s retirement age as the separation-age proxy. It can also model 72(t) SEPP distributions on non-inherited traditional accounts, using either an RMD-style method or an amortization-style method.',
85
+ },
86
+ {
87
+ type: 'callout',
88
+ tone: 'warn',
89
+ md: 'Model note: RetireGolden assumes the 72(t) series is honored. It does not model busting a SEPP schedule, retroactive penalties, plan-specific distribution limits, or every IRS exception.',
90
+ },
91
+ { type: 'heading', text: 'Common mistakes' },
92
+ {
93
+ type: 'list',
94
+ items: [
95
+ 'Rolling an employer plan to an IRA without checking whether the Rule of 55 would have helped.',
96
+ 'Treating 72(t) as flexible spending money instead of a payment commitment.',
97
+ 'Forgetting that traditional distributions still raise taxable income and MAGI.',
98
+ 'Assuming every early-withdrawal exception is modeled in RetireGolden.',
99
+ ],
100
+ },
101
+ { type: 'heading', text: 'Where to use this in the app' },
102
+ {
103
+ type: 'prose',
104
+ md: 'Use **Household** for retirement ages, **Accounts** to mark traditional accounts as IRA or employer plan and add 72(t) settings, and **Results** to inspect penalties, withdrawals, tax, and MAGI year by year.',
105
+ },
106
+ ],
107
+ }
@@ -0,0 +1,66 @@
1
+ import type { LearningArticle } from '../learningRegistry'
2
+
3
+ export const savingsRateBiggestLeverArticle: LearningArticle = {
4
+ slug: 'savings-rate-biggest-lever',
5
+ title: 'Your savings rate is the biggest lever',
6
+ description: 'Why the percentage of income you save determines your path to financial freedom.',
7
+ category: 'early-investing-fire',
8
+ tags: ['savings rate', 'accumulation', 'leverage', 'fire math'],
9
+ audience: 'beginner',
10
+ status: 'ready',
11
+ lastReviewed: '2026-06-29',
12
+ reviewCadence: 'stable',
13
+ sourceUrls: [
14
+ 'https://www.mrmoneymustache.com/2012/01/13/the-shockingly-simple-math-behind-early-retirement/',
15
+ ],
16
+ relatedArticles: [
17
+ 'what-is-fire',
18
+ 'fi-number-and-four-percent-rule',
19
+ 'how-to-model-accumulation',
20
+ ],
21
+ relatedPlannerRoutes: ['/plan/:planId/results', '/plan/:planId/spending'],
22
+ currentYearSensitive: false,
23
+ priority: 'P1',
24
+ blocks: [
25
+ {
26
+ type: 'prose',
27
+ md: 'Your **savings rate** is the single most dominant variable in early retirement planning. It determines two things simultaneously: how much money you are adding to your portfolio, and how much money you need to live on.',
28
+ },
29
+ { type: 'heading', text: 'Three key takeaways' },
30
+ {
31
+ type: 'list',
32
+ items: [
33
+ 'Savings rate is calculated as: (Employee Contributions + Employer Match + Surplus Invested) ÷ Gross Income.',
34
+ 'Increasing your savings rate has a dual effect: it speeds up growth and shrinks your retirement budget.',
35
+ 'At a 50% savings rate, you buy one year of freedom for every year you work.',
36
+ ],
37
+ },
38
+ { type: 'heading', text: 'Savings rate vs. years to FI' },
39
+ {
40
+ type: 'table',
41
+ caption: 'Years to achieve financial independence assuming a 5% real return and 4% safe withdrawal rate.',
42
+ columns: ['Savings rate', 'Years to FI', 'Working years per year of retirement funded'],
43
+ rows: [
44
+ ['10%', '51 years', '9 years of work funds 1 year of retirement'],
45
+ ['20%', '37 years', '4 years of work funds 1 year of retirement'],
46
+ ['30%', '28 years', '2.3 years of work funds 1 year of retirement'],
47
+ ['50%', '17 years', '1 year of work funds 1 year of retirement'],
48
+ ['70%', '8.5 years', '0.4 years of work funds 1 year of retirement'],
49
+ ],
50
+ },
51
+ { type: 'heading', text: 'Common mistakes' },
52
+ {
53
+ type: 'list',
54
+ items: [
55
+ 'Mixing take-home-pay savings rates with gross-income savings rates without labeling which one you mean.',
56
+ 'Counting the same dollar twice, such as counting a brokerage contribution and the surplus that funded it.',
57
+ 'Forgetting that a higher savings rate also usually means a smaller spending target.',
58
+ ],
59
+ },
60
+ { type: 'heading', text: 'Where this shows up in RetireGolden' },
61
+ {
62
+ type: 'prose',
63
+ md: 'RetireGolden calculates your annual savings rate on the Results page. You can see the **Average Savings Rate** KPI, representing the average percentage of gross wages saved before your target retirement age.',
64
+ },
65
+ ],
66
+ }
@@ -0,0 +1,93 @@
1
+ /**
2
+ * "Seed your plan from your tax return" — Using RetireGolden article for the
3
+ * 1040 guided seed flow (onboarding-import-and-migration step 6).
4
+ */
5
+
6
+ import type { LearningArticle } from '../learningRegistry'
7
+
8
+ export const seedYourPlanFromYourTaxReturnArticle: LearningArticle = {
9
+ slug: 'seed-your-plan-from-your-tax-return',
10
+ title: 'Seed your plan from your tax return',
11
+ description: 'A dozen lines off last year\'s Form 1040 give a new plan its income, filing, and bracket context in minutes.',
12
+ category: 'using-retiregolden',
13
+ tags: ['1040', 'tax return', 'import', 'onboarding', 'agi', 'magi'],
14
+ audience: 'beginner',
15
+ status: 'ready',
16
+ lastReviewed: '2026-07-08',
17
+ reviewCadence: 'annual',
18
+ sourceUrls: ['https://www.irs.gov/forms-pubs/about-form-1040'],
19
+ relatedArticles: [
20
+ 'moving-to-retiregolden',
21
+ 'agi-magi-and-taxable-income',
22
+ 'assumption-recent-magi',
23
+ 'irmaa-two-year-lookback',
24
+ 'how-social-security-is-taxed',
25
+ ],
26
+ relatedPlannerRoutes: ['/import', '/plan/:planId/income', '/plan/:planId/accounts'],
27
+ currentYearSensitive: true,
28
+ priority: 'P1',
29
+ blocks: [
30
+ {
31
+ type: 'prose',
32
+ md: 'The single richest snapshot of your financial life is a document you already have: last year\'s Form 1040. The **start from your tax return** path in the Import & migrate wizard asks for about a dozen line values — typed by you, no PDF upload, nothing leaving your device — and turns them into a draft plan with the income picture and tax context already in place.',
33
+ },
34
+ { type: 'heading', text: 'Quick takeaways' },
35
+ {
36
+ type: 'list',
37
+ items: [
38
+ 'You type the values yourself off the printed lines — guided entry, not document scanning.',
39
+ 'The flow prefills income streams, filing status, state, and the MAGI that Medicare\'s IRMAA surcharge looks back at.',
40
+ 'Everything prefigured is labeled "from your 1040" on the review checklist and stays editable.',
41
+ 'A tax return shows income, not spending or balances — the checklist tells you exactly what to add next.',
42
+ ],
43
+ },
44
+ { type: 'heading', text: 'What each line becomes' },
45
+ {
46
+ type: 'table',
47
+ caption: 'How the 1040 lines map into the draft plan.',
48
+ columns: ['1040 line', 'What it becomes', 'Watch for'],
49
+ rows: [
50
+ ['Header — filing status, state', 'Household filing status and state of residence', 'Move planned? Set it on the Household screen'],
51
+ ['1a — wages', 'A wages income stream until retirement', 'Joint filers: split wages between spouses afterward'],
52
+ ['2b + 3a/3b — interest & dividends', 'An estimated taxable account sized so those yields make sense', 'An estimate — replace with your real balance and basis'],
53
+ ['4b — IRA distributions', 'A pointer to add your IRA/401(k) balances', 'Withdrawals are modeled from balances, not history'],
54
+ ['5b — pensions & annuities', 'A pension paying that amount monthly', 'Check the COLA and survivor percentage'],
55
+ ['6a — Social Security benefits', 'A benefit basis, assuming a claim at 67', 'Claimed earlier or later? Fix the claim age'],
56
+ ['7 — capital gain or loss', 'Guidance only (a loss points at the carryforward field)', 'Last year\'s gains are not projected forward'],
57
+ ['11 + 2a — AGI + tax-exempt interest', 'The recent-MAGI assumption for IRMAA\'s two-year lookback', 'This is why early-year Medicare premiums look right'],
58
+ ],
59
+ },
60
+ { type: 'heading', text: 'A worked example' },
61
+ {
62
+ type: 'scenario',
63
+ name: 'The Okafor household',
64
+ assumptions: [
65
+ { label: 'Return in hand', value: 'Joint return: $12,500 of interest + dividends, $40,000 of IRA distributions, $36,000 of Social Security, $110,000 AGI' },
66
+ { label: 'Ten minutes of typing', value: 'Draft plan with pension-free income streams, an estimated ~$500,000 taxable account, and MAGI context set' },
67
+ { label: 'Checklist follow-ups', value: 'Add the real IRA balances, correct the estimated taxable balance, set the real Social Security claim ages' },
68
+ ],
69
+ summary:
70
+ 'The 1040 seeds the shape of the plan in one sitting; the checklist turns "what do I enter next?" into three concrete follow-ups.',
71
+ },
72
+ { type: 'heading', text: 'Why the estimates are estimates' },
73
+ {
74
+ type: 'prose',
75
+ md: 'A tax return reports income *from* assets, not the assets themselves. The wizard sizes the estimated taxable account by asking what balance would plausibly produce your interest and dividends at a typical yield — useful scaffolding, but the real number is on your statements. The same honesty applies to Social Security: line 6a shows what you received, so the wizard assumes a full-retirement-age claim and tells you to correct the claim age if that\'s wrong.',
76
+ },
77
+ { type: 'heading', text: 'Common mistakes' },
78
+ {
79
+ type: 'list',
80
+ items: [
81
+ 'Treating the estimated taxable balance as real — replace it with the statement value.',
82
+ 'Leaving combined wages on one spouse in a joint plan (retirement dates then apply to the wrong person).',
83
+ 'Forgetting spending: nothing on a 1040 says what you spend — the Spending screen is the next stop.',
84
+ 'Using this flow to re-enter a plan you already have in RetireGolden — restore the backup instead.',
85
+ ],
86
+ },
87
+ { type: 'heading', text: 'Where to use this in the app' },
88
+ {
89
+ type: 'prose',
90
+ md: 'From the planner home, choose **Import from a file → Your tax return (Form 1040)**. After saving the draft, the review checklist\'s "Not imported" group is your to-do list, starting with the Accounts and Spending screens.',
91
+ },
92
+ ],
93
+ }
@@ -0,0 +1,104 @@
1
+ /**
2
+ * "Sensitivity testing: what changes the answer most" - a Risk and Uncertainty P2 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const sensitivityTestingWhatChangesAnswerArticle: LearningArticle = {
8
+ slug: 'sensitivity-testing-what-changes-the-answer',
9
+ title: 'Sensitivity testing: what changes the answer most',
10
+ description: 'Finding which assumptions move the outcome the most.',
11
+ category: 'risk-uncertainty',
12
+ tags: ['sensitivity', 'scenarios', 'assumptions', 'risk', 'comparison'],
13
+ audience: 'intermediate',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-20',
16
+ reviewCadence: 'stable',
17
+ sourceUrls: [],
18
+ relatedArticles: [
19
+ 'how-assumptions-change-the-answer',
20
+ 'using-scenarios-to-compare-choices',
21
+ 'understanding-monte-carlo-success-rate',
22
+ 'inflation-risk',
23
+ 'historical-vs-random-return-models',
24
+ ],
25
+ relatedPlannerRoutes: [
26
+ '/plan/:planId/scenarios',
27
+ '/plan/:planId/assumptions',
28
+ '/plan/:planId/results',
29
+ '/plan/:planId/monte-carlo',
30
+ ],
31
+ currentYearSensitive: false,
32
+ priority: 'P2',
33
+ blocks: [
34
+ {
35
+ type: 'prose',
36
+ md: 'Sensitivity testing asks a simple question: if one assumption changes, how much does the answer move? It is one of the fastest ways to find which parts of a plan deserve better data or a backup plan.',
37
+ },
38
+ { type: 'heading', text: 'Quick takeaways' },
39
+ {
40
+ type: 'list',
41
+ items: [
42
+ 'A sensitivity test changes one assumption while holding the rest of the plan steady.',
43
+ 'Rank tests by the size and seriousness of the change, not by which one is easiest to edit.',
44
+ 'Good sensitivity tests turn vague worry into a specific planning question.',
45
+ ],
46
+ },
47
+ { type: 'heading', text: 'The basic idea' },
48
+ {
49
+ type: 'prose',
50
+ md: 'A baseline projection can hide which assumptions are doing the heavy lifting. Sensitivity tests separate those levers. For example, lowering returns, raising inflation, extending planning age, or increasing spending may all weaken the plan, but one or two may explain most of the fragility.',
51
+ },
52
+ {
53
+ type: 'figure',
54
+ image: { src: '/learn/images/sensitivity-testing.webp' },
55
+ caption:
56
+ 'Sensitivity testing compares one changed lever at a time against the same baseline.',
57
+ alt: 'A baseline retirement path is compared with separate colored paths for lower returns, higher spending, higher inflation, and longer life.',
58
+ },
59
+ {
60
+ type: 'table',
61
+ caption: 'A practical sensitivity-testing sequence.',
62
+ columns: ['Test', 'Change', 'Question it answers'],
63
+ rows: [
64
+ ['Spending', 'Raise or lower annual spending by a set percentage', 'How much lifestyle flexibility protects the plan?'],
65
+ ['Retirement date', 'Move retirement one or two years', 'How valuable is more saving time and fewer withdrawal years?'],
66
+ ['Return', 'Lower expected return or use a different market model', 'Is the plan dependent on optimistic growth?'],
67
+ ['Inflation', 'Raise general or healthcare inflation', 'Does late-life purchasing power break?'],
68
+ ['Longevity', 'Extend one or both planning ages', 'Does the plan survive a long life or survivor years?'],
69
+ ],
70
+ },
71
+ { type: 'heading', text: 'A worked example' },
72
+ {
73
+ type: 'scenario',
74
+ name: 'The Morgan household',
75
+ assumptions: [
76
+ { label: 'Baseline', value: 'Money lasts through the full plan with a $180,000 estate' },
77
+ { label: 'Largest sensitivity', value: 'A 12% spending increase causes depletion' },
78
+ { label: 'Smaller sensitivity', value: 'A 1 point lower return reduces the estate to $95,000 but does not deplete' },
79
+ ],
80
+ summary:
81
+ 'Spending is the bigger lever here: one test depletes the plan, while the return test still leaves about **$95,000**. That points the first conversation toward spending flexibility.',
82
+ },
83
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
84
+ {
85
+ type: 'prose',
86
+ md: 'The **Scenarios** page is built for sensitivity testing. Each scenario stores a small patch on top of the base plan, so you can keep editing the baseline without rebuilding every comparison. **Monte Carlo** then adds market variation around the same assumptions.',
87
+ },
88
+ { type: 'heading', text: 'Common mistakes' },
89
+ {
90
+ type: 'list',
91
+ items: [
92
+ 'Testing only pleasant upside cases.',
93
+ 'Changing several inputs at once and calling it sensitivity testing.',
94
+ 'Ranking tests only by ending estate and missing depletion year or success rate.',
95
+ 'Ignoring whether the changed assumption is controllable by the household.',
96
+ ],
97
+ },
98
+ { type: 'heading', text: 'Where to use this in the app' },
99
+ {
100
+ type: 'prose',
101
+ md: 'Use **Scenarios** for named one-at-a-time tests, **Assumptions** for plan-wide levers, and **Monte Carlo** when you want the same scenario exposed to many market paths.',
102
+ },
103
+ ],
104
+ }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * "Sequence-of-returns risk" - a Risk and Uncertainty P0 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const sequenceOfReturnsRiskArticle: LearningArticle = {
8
+ slug: 'sequence-of-returns-risk',
9
+ title: 'Sequence-of-returns risk',
10
+ description: 'Why the order of good and bad years matters once you withdraw.',
11
+ category: 'risk-uncertainty',
12
+ tags: ['sequence risk', 'returns', 'withdrawals', 'monte carlo', 'retirement risk'],
13
+ audience: 'beginner',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-20',
16
+ reviewCadence: 'stable',
17
+ sourceUrls: ['https://www.investor.gov/introduction-investing/investing-basics/what-risk'],
18
+ relatedArticles: [
19
+ 'understanding-monte-carlo-success-rate',
20
+ 'what-monte-carlo-proves',
21
+ 'withdrawal-order-basics',
22
+ 'historical-vs-random-return-models',
23
+ 'inflation-risk',
24
+ ],
25
+ relatedPlannerRoutes: ['/plan/:planId/monte-carlo', '/plan/:planId/results', '/plan/:planId/scenarios'],
26
+ currentYearSensitive: false,
27
+ priority: 'P0',
28
+ featured: true,
29
+ blocks: [
30
+ {
31
+ type: 'prose',
32
+ md: 'Sequence-of-returns risk is the risk that bad market years arrive at the wrong time. The average return can look fine, but the order of returns can still decide whether withdrawals recover or permanently damage the portfolio.',
33
+ },
34
+ { type: 'heading', text: 'Quick takeaways' },
35
+ {
36
+ type: 'list',
37
+ items: [
38
+ 'Before retirement, bad early returns can be helped by later contributions.',
39
+ 'After retirement, bad early returns combine with withdrawals, so fewer dollars remain to recover.',
40
+ 'Monte Carlo and scenarios are useful because the deterministic result shows only one return order.',
41
+ ],
42
+ },
43
+ { type: 'heading', text: 'The basic idea' },
44
+ {
45
+ type: 'prose',
46
+ md: 'Imagine two retirements with the same average return. In one, the good years arrive first. In the other, the bad years arrive first. The average may match, but the lived result can be very different because withdrawals are happening along the way. Selling investments after a decline leaves fewer shares available for the rebound.',
47
+ },
48
+ {
49
+ type: 'figure',
50
+ image: { src: '/learn/images/sequence-returns-risk.webp' },
51
+ caption:
52
+ 'Two paths can have the same average return, but early losses during withdrawals can leave a lasting gap.',
53
+ alt: 'Two retirement balance paths start together. One rises before dipping, while the other dips early during withdrawals and never fully catches up.',
54
+ },
55
+ {
56
+ type: 'table',
57
+ caption: 'Why the same average can feel different.',
58
+ columns: ['Timing', 'During saving', 'During withdrawals'],
59
+ rows: [
60
+ ['Bad returns early', 'New contributions may buy lower prices', 'Withdrawals sell more shares at lower values'],
61
+ ['Good returns early', 'Helpful, but still followed by later risk', 'Builds cushion before withdrawals stress the portfolio'],
62
+ ['Bad returns late', 'Portfolio may have more years to recover first', 'Often less damaging if the plan already built cushion'],
63
+ ],
64
+ },
65
+ { type: 'heading', text: 'A worked example' },
66
+ {
67
+ type: 'scenario',
68
+ name: 'The Adams household',
69
+ assumptions: [
70
+ { label: 'Plan A', value: '+8% average in the first decade, -1% average in the second' },
71
+ { label: 'Plan B', value: '-1% average in the first decade, +8% average in the second' },
72
+ { label: 'Withdrawal need', value: '$60,000 a year from the portfolio in both examples' },
73
+ ],
74
+ summary:
75
+ 'Both paths can have a similar long-run average, but Plan B sells investments during the weak first decade. The rebound applies to a smaller balance after years of $60,000 withdrawals.',
76
+ },
77
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
78
+ {
79
+ type: 'prose',
80
+ md: 'The **Results** page is deterministic: it uses the expected return and inflation path. The **Monte Carlo** page keeps the same annual ledger but varies market paths, so sequence risk shows up as a fan of outcomes and as depletion-year counts. The **Scenarios** page lets you pair that risk view with spending, claiming, and strategy changes.',
81
+ },
82
+ { type: 'heading', text: 'Common mistakes' },
83
+ {
84
+ type: 'list',
85
+ items: [
86
+ 'Looking only at the average return assumption.',
87
+ 'Assuming a high long-run return eliminates early-retirement risk.',
88
+ 'Ignoring the years when failures happen; early failures usually call for a different response than late failures.',
89
+ 'Comparing strategies under different assumptions instead of holding the assumptions constant.',
90
+ ],
91
+ },
92
+ { type: 'heading', text: 'Where to use this in the app' },
93
+ {
94
+ type: 'prose',
95
+ md: 'Use **Monte Carlo** after the baseline plan works in Results. Look at the success rate, percentile fan, and depletion-year chart together. If weak paths fail early, test spending flexibility, later retirement, bridge income, or a different withdrawal strategy.',
96
+ },
97
+ ],
98
+ }
@@ -0,0 +1,67 @@
1
+ import type { LearningArticle } from '../learningRegistry'
2
+
3
+ export const socialSecurityBridgeArticle: LearningArticle = {
4
+ slug: 'social-security-bridge',
5
+ title: 'The Social Security bridge',
6
+ description:
7
+ 'Delaying Social Security is the cheapest inflation-protected annuity you can buy — a bridge account pays you the forgone benefit until the bigger check starts.',
8
+ category: 'social-security',
9
+ tags: ['claiming age', 'bridge', 'delay', 'longevity insurance', 'tips', 'gap years'],
10
+ audience: 'beginner',
11
+ status: 'ready',
12
+ lastReviewed: '2026-07-08',
13
+ reviewCadence: 'stable',
14
+ sourceUrls: [
15
+ 'https://bipartisanpolicy.org/report/how-to-help-americans-claim-social-security-at-the-right-age/',
16
+ 'https://www.ssa.gov/benefits/retirement/planner/delayret.html',
17
+ 'https://crr.bc.edu/how-best-to-annuitize-defined-contribution-assets/',
18
+ ],
19
+ relatedArticles: ['social-security-claiming-age-basics', 'tips-ladders', 'funded-ratio', 'break-even-useful-lens', 'mortality-weighted-social-security'],
20
+ relatedPlannerRoutes: ['/plan/:planId/social-security-analysis', '/plan/:planId/income-floor'],
21
+ currentYearSensitive: false,
22
+ priority: 'P1',
23
+ featured: false,
24
+ blocks: [
25
+ {
26
+ type: 'prose',
27
+ md: 'Most people claim Social Security early — and researchers estimate the habit costs retirees **trillions of dollars of lifetime benefits** in aggregate. The usual reason is immediate and human: *"I retired, the paycheck stopped, and I need income now."* The **bridge** is the standard fix. Instead of claiming at 62, you pay yourself the benefit you would have received — the same monthly amount, inflation-adjusted — out of a dedicated pot of savings, until your delayed claim starts at 67 or 70.',
28
+ },
29
+ { type: 'heading', text: 'Why delaying is worth bridging' },
30
+ {
31
+ type: 'list',
32
+ items: [
33
+ '**The delay "buys" an annuity at government prices**: every year of delay permanently raises the benefit (roughly 7–8% per year, plus COLAs on the bigger base). No insurer sells inflation-indexed lifetime income that cheaply.',
34
+ '**It is longevity insurance**: the bigger check lasts exactly as long as you do. If you live to 95, the age-70 claim pays enormously more; if you die early, the bridge money you did not spend stays in your estate.',
35
+ '**It protects the survivor**: for couples, the higher earner\'s delayed benefit becomes the survivor benefit. Delaying is often worth more to the widow(er) than to the worker.',
36
+ ],
37
+ },
38
+ { type: 'heading', text: 'What the bridge looks like' },
39
+ {
40
+ type: 'scenario',
41
+ name: 'Maria bridges to 70',
42
+ assumptions: [
43
+ { label: 'PIA (benefit at full retirement age 67)', value: '$2,400/mo' },
44
+ { label: 'Age-62 benefit (70% of PIA)', value: '$1,680/mo → $20,160/yr' },
45
+ { label: 'Retires at 62, claims at 70', value: '8 gap years' },
46
+ { label: 'Bridge', value: 'Pays herself $20,160/yr (inflation-adjusted) from 62 to 69' },
47
+ { label: 'Age-70 benefit (124% of PIA)', value: '$2,976/mo — 77% larger than claiming at 62, for life' },
48
+ ],
49
+ summary:
50
+ 'Maria\'s lifestyle never dips in the gap years — the bridge replaces exactly what claiming early would have paid — and from 70 on she holds the largest inflation-indexed life annuity she could get.',
51
+ },
52
+ {
53
+ type: 'prose',
54
+ md: 'The bridge can be a cash bucket, but the natural instrument is a **[TIPS ladder](/learn/tips-ladders)** maturing across the gap years: the income is then guaranteed in real terms, exactly matching the inflation-indexed benefit it replaces. RetireGolden\'s Social Security Optimizer sizes the bridge from your own numbers — the forgone age-62 benefit, your retirement year, and your chosen claim age — quotes the ladder cost on the current real-yield curve, and can add it to your plan as a funded artifact you can see, stress-test, and compare.',
55
+ },
56
+ { type: 'heading', text: 'Bridge vs. claim early — how to compare honestly' },
57
+ {
58
+ type: 'prose',
59
+ md: 'The right comparison is not "delay vs. claim early" in isolation — it is **bridge + delayed claim vs. claim early and keep the savings invested**, run through your full plan on the same market paths. The claim-early path keeps more money compounding but locks in the smaller check forever; the bridge path spends savings now to buy a much larger guaranteed floor later. RetireGolden runs both through the same ledger and Monte Carlo so the success-rate and estate differences are priced, not asserted. Break-even ages are a useful sanity check, but the plan-level comparison is the decision-grade one.',
60
+ },
61
+ {
62
+ type: 'callout',
63
+ tone: 'warn',
64
+ md: 'A bridge only makes sense with money to bridge from: if funding it would leave you without a liquid reserve, or push you into selling assets at depressed prices, the early claim can genuinely be the better plan. Health and family longevity matter too — the delayed claim is insurance against a *long* life, and insurance you may reasonably decline.',
65
+ },
66
+ ],
67
+ }