@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,141 @@
1
+ /**
2
+ * "What changes when you move states" - a Taxes P1 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const whatChangesWhenYouMoveStatesArticle: LearningArticle = {
8
+ slug: 'what-changes-when-you-move-states',
9
+ title: 'What changes when you move states',
10
+ description: 'How domicile, split-year moves, pension source rules, and model boundaries affect a relocation comparison.',
11
+ category: 'taxes',
12
+ tags: ['state tax', 'relocation', 'domicile', 'part-year resident', 'pension', 'retirement income'],
13
+ audience: 'intermediate',
14
+ status: 'ready',
15
+ lastReviewed: '2026-07-09',
16
+ reviewCadence: 'annual',
17
+ sourceUrls: [
18
+ 'https://www.irs.gov/businesses/small-businesses-self-employed/state-government-websites',
19
+ 'https://www.law.cornell.edu/uscode/text/4/114',
20
+ 'https://www.tax.ny.gov/pit/file/pit_definitions.htm',
21
+ 'https://www.ftb.ca.gov/file/personal/residency-status/part-year-and-nonresident.html',
22
+ ],
23
+ relatedArticles: [
24
+ 'state-income-taxes-in-retirement',
25
+ 'using-scenarios-to-compare-choices',
26
+ 'assumption-state-tax-override',
27
+ 'real-estate-home-equity-and-debt',
28
+ ],
29
+ relatedPlannerRoutes: ['/plan/:planId/relocation', '/plan/:planId/household'],
30
+ currentYearSensitive: true,
31
+ priority: 'P1',
32
+ blocks: [
33
+ {
34
+ type: 'prose',
35
+ md: 'Moving to another state can change which state income-tax rules apply to your plan, but it does not turn relocation into a simple tax ranking. This article explains what RetireGolden can price, what depends on legal residency facts, and what belongs outside the model.',
36
+ },
37
+ { type: 'heading', text: 'Quick takeaways' },
38
+ {
39
+ type: 'list',
40
+ items: [
41
+ 'A move changes your state of residence for future years only if your real-world domicile and filing facts support it.',
42
+ 'A split-year move can put part of a calendar year under the old state and part under the new state.',
43
+ 'RetireGolden compares modeled state and local **income tax** effects; property tax, sales tax, insurance, healthcare access, and lifestyle tradeoffs still need separate judgment.',
44
+ ],
45
+ },
46
+ { type: 'heading', text: 'What actually changes' },
47
+ {
48
+ type: 'prose',
49
+ md: 'State income tax is not one universal rule. A state may tax Social Security differently, exclude some retirement income, treat public pensions differently from private retirement income, tax capital gains like wages, or have no broad income tax at all. When you compare states, RetireGolden reruns your actual year-by-year plan through the destination state rules instead of using a generic "tax friendly" list.',
50
+ },
51
+ {
52
+ type: 'table',
53
+ caption: 'Pieces to separate before treating a move as a tax win.',
54
+ columns: ['Moving piece', 'Why it matters', 'RetireGolden lens'],
55
+ rows: [
56
+ [
57
+ 'Domicile and residence',
58
+ 'States decide who counts as a resident under their own rules. Intent, homes, days, and records can matter.',
59
+ 'You enter the current state and planned state moves; RetireGolden does not prove legal domicile.',
60
+ ],
61
+ [
62
+ 'Split-year move',
63
+ 'The move year may be taxed partly by each state, and source income can still belong to the old state.',
64
+ 'A Relocation Compare move year models a July split-year move, matching the Household screen.',
65
+ ],
66
+ [
67
+ 'Retirement-income rules',
68
+ 'Social Security, IRA withdrawals, private pensions, and public pensions may not all get the same state treatment.',
69
+ 'Modeled packs price Social Security treatment and retirement-income exclusions through the normal tax ledger.',
70
+ ],
71
+ [
72
+ 'Local rate and spending knobs',
73
+ 'City income tax or cost of living can overwhelm a state-tax headline.',
74
+ 'Optional flat inputs let you approximate them, but they are broad assumptions you control.',
75
+ ],
76
+ [
77
+ 'Out-of-model costs',
78
+ 'Property tax, sales tax, homeowners insurance, healthcare networks, family support, and climate risk can dominate the decision.',
79
+ 'The comparison names these boundaries instead of pretending income tax chooses the best state.',
80
+ ],
81
+ ],
82
+ },
83
+ { type: 'heading', text: 'Domicile is more than an address' },
84
+ {
85
+ type: 'prose',
86
+ md: 'For tax purposes, a state move usually turns on facts, not just the mailing address on an account. State guidance commonly describes domicile as your permanent home and the place you intend to return to after being away. Some states also have statutory-residency tests tied to days in the state and a maintained home.',
87
+ },
88
+ {
89
+ type: 'callout',
90
+ tone: 'note',
91
+ md: 'Practical translation: if a plan says "move to Florida in 2030," that is a modeling assumption. Your actual filing position may depend on leases or deeds, voter registration, driver license, doctors, professional ties, days present, and records showing where your life is centered.',
92
+ },
93
+ { type: 'heading', text: 'Pension source rules have a special federal limit' },
94
+ {
95
+ type: 'prose',
96
+ md: 'A former state generally cannot tax certain retirement income after you are no longer a resident or domiciliary of that state. Federal law covers many common retirement-payment categories, including qualified plans, individual retirement plans, 403(b) arrangements, eligible 457 plans, and governmental plans. That does not mean the old state loses every possible tax claim: real estate income, business income, wages earned there, and other source items can still have their own rules.',
97
+ },
98
+ {
99
+ type: 'callout',
100
+ tone: 'warn',
101
+ md: 'RetireGolden models retirement-plan income inside a household projection. It is not a state residency audit tool, and it does not allocate every possible nonresident source-income item.',
102
+ },
103
+ { type: 'heading', text: 'A worked example' },
104
+ {
105
+ type: 'scenario',
106
+ name: 'The Hill household',
107
+ assumptions: [
108
+ { label: 'Current plan', value: 'Resident in a taxed state with IRA withdrawals, Social Security, taxable gains, and a public pension' },
109
+ { label: 'Candidate A', value: 'Move to a no-broad-income-tax state in 2030' },
110
+ { label: 'Candidate B', value: 'Move to a state that taxes income but excludes more retirement income' },
111
+ { label: 'Lifestyle adjustment', value: 'Candidate B is closer to family, but spending is modeled 6% higher' },
112
+ ],
113
+ summary:
114
+ 'The lowest state-income-tax row is not automatically the best life choice. The table helps isolate the tax difference, while scenarios and spending assumptions capture the tradeoffs the tax model cannot know.',
115
+ },
116
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
117
+ {
118
+ type: 'prose',
119
+ md: 'The Relocation Compare page takes candidate states and runs each one as a scenario patch over existing plan fields: household state, planned state moves, local income-tax rate, and baseline spending. The row you see is the same kind of plan run you would get by editing the plan by hand, which makes "Add as scenario" a clean way to keep a candidate for side-by-side comparison.',
120
+ },
121
+ {
122
+ type: 'prose',
123
+ md: 'Driver details explain major state income-tax levers by re-pricing the state tax line with one rule neutralized at a time: Social Security treatment, retirement-income exclusions, separate public-pension rules when modeled, and capital-gain treatment. Those drivers explain the state-tax line; they do not claim to measure housing, healthcare, property tax, or quality of life.',
124
+ },
125
+ { type: 'heading', text: 'Common mistakes' },
126
+ {
127
+ type: 'list',
128
+ items: [
129
+ 'Treating a no-income-tax state as automatically cheaper after housing, property tax, insurance, sales tax, and travel are counted.',
130
+ 'Assuming the old state stops mattering on the exact day you change your address, even when source income or residency facts are complicated.',
131
+ 'Comparing states with different spending assumptions and then reading the result as a pure tax difference.',
132
+ 'Forgetting that a flat state-tax override can mask the modeled state packs. Clear or document the override before relying on a state-by-state comparison.',
133
+ ],
134
+ },
135
+ { type: 'heading', text: 'Where to use this in the app' },
136
+ {
137
+ type: 'prose',
138
+ md: 'Use **Household** to set your current state and any planned move already in the baseline plan. Use **Relocation Compare** to test up to five candidate states without changing the plan. Use **Add as scenario** when a candidate is worth keeping, then review **Scenarios** and **Results** for the full plan tradeoff.',
139
+ },
140
+ ],
141
+ }
@@ -0,0 +1,65 @@
1
+ import type { LearningArticle } from '../learningRegistry'
2
+
3
+ export const whatIsFireArticle: LearningArticle = {
4
+ slug: 'what-is-fire',
5
+ title: 'What is FIRE? Lean, Fat, Coast, and Barista',
6
+ description: 'An overview of the Financial Independence, Retire Early movement and its strategies.',
7
+ category: 'early-investing-fire',
8
+ tags: ['fire', 'lean fire', 'fat fire', 'coast fire', 'barista fire', 'early retirement'],
9
+ audience: 'beginner',
10
+ status: 'ready',
11
+ lastReviewed: '2026-06-29',
12
+ reviewCadence: 'stable',
13
+ sourceUrls: [
14
+ 'https://www.investopedia.com/terms/f/financial-independence-retire-early-fire.asp',
15
+ ],
16
+ relatedArticles: [
17
+ 'savings-rate-biggest-lever',
18
+ 'fi-number-and-four-percent-rule',
19
+ 'how-to-model-accumulation',
20
+ ],
21
+ relatedPlannerRoutes: ['/plan/:planId/results'],
22
+ currentYearSensitive: false,
23
+ priority: 'P1',
24
+ blocks: [
25
+ {
26
+ type: 'prose',
27
+ md: 'FIRE stands for **Financial Independence, Retire Early**. It is a lifestyle movement defined by high savings rates and intentional living. The ultimate goal is to build a retirement portfolio large enough that paid work becomes completely optional.',
28
+ },
29
+ { type: 'heading', text: 'Three key takeaways' },
30
+ {
31
+ type: 'list',
32
+ items: [
33
+ 'Financial independence means your assets generate enough income to cover your expenses.',
34
+ 'Retire early is optional: many people in the movement continue working on their own terms.',
35
+ 'Different flavors of FIRE cater to different spending levels and career transitions.',
36
+ ],
37
+ },
38
+ { type: 'heading', text: 'The four flavors of FIRE' },
39
+ {
40
+ type: 'table',
41
+ caption: 'The main paths to Financial Independence.',
42
+ columns: ['Flavor', 'Description', 'Lifestyle goal'],
43
+ rows: [
44
+ ['Lean FIRE', 'Lower-spending lifestyle with a smaller FI target.', 'Extremely low expenses and maximum savings.'],
45
+ ['Fat FIRE', 'Higher-spending lifestyle with a larger FI target.', 'More room for comfort, travel, or location flexibility.'],
46
+ ['Coast FIRE', 'Front-loading savings early, then letting investment compounding carry you to retirement.', 'Work only to cover living expenses, not retirement savings.'],
47
+ ['Barista FIRE', 'Retiring from a primary high-stress career but keeping a low-stress part-time job.', 'Use part-time income and employer healthcare to bridge the gap.'],
48
+ ],
49
+ },
50
+ { type: 'heading', text: 'Common mistakes' },
51
+ {
52
+ type: 'list',
53
+ items: [
54
+ 'Treating FIRE as one rigid lifestyle instead of a set of planning tradeoffs.',
55
+ 'Ignoring healthcare, taxes, and sequence risk when estimating the portfolio needed.',
56
+ 'Assuming work must stop completely once financial independence is reached.',
57
+ ],
58
+ },
59
+ { type: 'heading', text: 'Where this shows up in RetireGolden' },
60
+ {
61
+ type: 'prose',
62
+ md: 'In RetireGolden, you can view your **FI Target Portfolio** and **Coast-FIRE Target** in the results dashboard. These derived metrics analyze your simulated accounts to pinpoint the year your net worth supports your retirement spending.',
63
+ },
64
+ ],
65
+ }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * "What Monte Carlo does and does not prove" - a Risk and Uncertainty P0 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const whatMonteCarloProvesArticle: LearningArticle = {
8
+ slug: 'what-monte-carlo-proves',
9
+ title: 'What Monte Carlo does and does not prove',
10
+ description: 'How to read a success rate as a model statistic, not a promise.',
11
+ category: 'risk-uncertainty',
12
+ tags: ['monte carlo', 'success rate', 'simulation', 'model risk', 'forecasting'],
13
+ audience: 'beginner',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-20',
16
+ reviewCadence: 'stable',
17
+ sourceUrls: ['https://www.investor.gov/introduction-investing/investing-basics/glossary/monte-carlo-simulation'],
18
+ relatedArticles: [
19
+ 'understanding-monte-carlo-success-rate',
20
+ 'why-95-percent-is-not-a-guarantee',
21
+ 'sequence-of-returns-risk',
22
+ 'historical-vs-random-return-models',
23
+ 'how-to-read-a-retirement-projection',
24
+ ],
25
+ relatedPlannerRoutes: ['/plan/:planId/monte-carlo', '/plan/:planId/scenarios', '/plan/:planId/optimize'],
26
+ currentYearSensitive: false,
27
+ priority: 'P0',
28
+ blocks: [
29
+ {
30
+ type: 'prose',
31
+ md: 'Monte Carlo is a way to ask, "How often does this plan survive under many modeled futures?" It can expose fragility that a single projection hides. It does not prove what will happen in real life.',
32
+ },
33
+ { type: 'heading', text: 'Quick takeaways' },
34
+ {
35
+ type: 'list',
36
+ items: [
37
+ 'Monte Carlo proves how the plan behaves inside a chosen model, not how the real world must behave.',
38
+ 'The result is only as good as the inputs, account modeling, tax rules, and market model behind it.',
39
+ 'Use Monte Carlo to compare choices and identify weak spots, then decide what margin of safety feels appropriate.',
40
+ ],
41
+ },
42
+ { type: 'heading', text: 'The basic idea' },
43
+ {
44
+ type: 'prose',
45
+ md: 'A deterministic projection is one path. Monte Carlo runs many paths. In RetireGolden, each path uses the same household, accounts, tax logic, withdrawal strategy, and expenses, but varies market returns and inflation according to the selected market model. The success rate is the share of paths where investable assets do not deplete before the plan ends.',
46
+ },
47
+ {
48
+ type: 'figure',
49
+ image: { src: '/learn/images/monte-carlo-does-not-prove.webp' },
50
+ caption:
51
+ 'Monte Carlo explores many modeled futures; it does not draw a boundary around every real future.',
52
+ alt: 'Many modeled retirement paths fan across a planning map while a dotted outer region shows unknown real-world outcomes beyond the model.',
53
+ },
54
+ {
55
+ type: 'table',
56
+ caption: 'A useful split between proves and does not prove.',
57
+ columns: ['Monte Carlo can show', 'Monte Carlo cannot prove'],
58
+ rows: [
59
+ ['How often the plan works under the selected model', 'The exact probability your real life will succeed'],
60
+ ['Which years tend to fail in modeled bad paths', 'Which market year will happen next'],
61
+ ['Whether one strategy appears more resilient than another under shared assumptions', 'That the strategy is guaranteed or personally optimal'],
62
+ ['How sensitive the plan is to volatility, inflation, and longevity settings', 'That the assumptions are correct'],
63
+ ],
64
+ },
65
+ { type: 'heading', text: 'A worked example' },
66
+ {
67
+ type: 'scenario',
68
+ name: 'The Rivera household',
69
+ assumptions: [
70
+ { label: 'Baseline', value: '92% success with lognormal markets' },
71
+ { label: 'Historical block model', value: '86% success with more clustered bad years' },
72
+ { label: 'Difference', value: '6 percentage points between two reasonable market lenses' },
73
+ ],
74
+ summary:
75
+ 'Neither 92% nor 86% is the true future probability. The useful fact is the **6-point** drop when bad years cluster, which tells the Riveras how much cushion to keep discussing.',
76
+ },
77
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
78
+ {
79
+ type: 'prose',
80
+ md: 'RetireGolden lets you switch market models, re-roll the seed, run more paths, and optionally model longevity and long-term-care shocks. Those controls do not make the future knowable. They help you ask clearer questions about which risks the plan can absorb.',
81
+ },
82
+ { type: 'heading', text: 'Common mistakes' },
83
+ {
84
+ type: 'list',
85
+ items: [
86
+ 'Treating 95% as a promise instead of a model statistic.',
87
+ 'Comparing two plans after changing both the strategy and the assumptions.',
88
+ 'Ignoring whether failures happen early or late.',
89
+ 'Using Monte Carlo before the base inputs are accurate enough to trust.',
90
+ ],
91
+ },
92
+ { type: 'heading', text: 'Where to use this in the app' },
93
+ {
94
+ type: 'prose',
95
+ md: 'Use **Monte Carlo** to stress-test the plan after **Results** makes sense. Use **Scenarios** or **Optimize** to compare choices, then return to Monte Carlo with the same assumptions to see whether the better-looking choice is also more resilient.',
96
+ },
97
+ ],
98
+ }
@@ -0,0 +1,103 @@
1
+ /**
2
+ * "What RetireGolden models and what it does not" - a Start Here P0 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const whatRetireGoldenModelsArticle: LearningArticle = {
8
+ slug: 'what-retiregolden-models',
9
+ title: 'What RetireGolden models and what it does not',
10
+ description: 'A plain map of what the engine simulates and where it stops.',
11
+ category: 'start-here',
12
+ tags: ['model', 'scope', 'limitations', 'assumptions', 'privacy'],
13
+ audience: 'beginner',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-19',
16
+ reviewCadence: 'stable',
17
+ sourceUrls: [],
18
+ relatedArticles: [
19
+ 'about-retiregolden',
20
+ 'how-to-read-a-retirement-projection',
21
+ 'reading-the-results-page',
22
+ 'todays-dollars-vs-future-dollars',
23
+ ],
24
+ relatedPlannerRoutes: ['/', '/plan/:planId/assumptions', '/plan/:planId/results', '/plan/:planId/report'],
25
+ currentYearSensitive: false,
26
+ priority: 'P0',
27
+ blocks: [
28
+ {
29
+ type: 'prose',
30
+ md: 'Every planning tool has a boundary. RetireGolden models the parts of retirement that can be represented as yearly cash flows, taxes, balances, and assumptions. It does not know your preferences, your exact tax return, or the future.',
31
+ },
32
+ { type: 'heading', text: 'Quick takeaways' },
33
+ {
34
+ type: 'list',
35
+ items: [
36
+ 'RetireGolden is strongest when you use it to compare choices under clear assumptions.',
37
+ 'The engine models common retirement mechanics at planning precision, not return-filing precision.',
38
+ 'Anything outside the model should still be considered, especially personal advice, legal documents, health, family obligations, and behavior.',
39
+ ],
40
+ },
41
+ { type: 'heading', text: 'The basic idea' },
42
+ {
43
+ type: 'prose',
44
+ md: 'A model is a simplified version of reality. The simplification is not a flaw by itself. It is what lets you see the moving parts clearly. The important thing is knowing which simplifications are in play before you trust a result too much.',
45
+ },
46
+ {
47
+ type: 'figure',
48
+ image: { src: '/learn/images/model-boundary.webp' },
49
+ caption:
50
+ 'RetireGolden models the planning mechanics inside the boundary; personal judgment, exact filing details, and real-life uncertainty remain outside it.',
51
+ alt: 'A protected central planning model contains account, tax, healthcare, insurance, and risk tiles, separated from outside personal, legal, tax filing, and uncertainty symbols.',
52
+ },
53
+ {
54
+ type: 'table',
55
+ caption: 'The main boundary lines in RetireGolden.',
56
+ columns: ['Area', 'Modeled', 'Not modeled'],
57
+ rows: [
58
+ ['Household timeline', 'Ages, retirement timing, planning ages, survivor years, and filing status', 'Personal health diagnosis, family obligations, or exact date-of-death prediction'],
59
+ ['Cash flow', 'Income streams, spending, goals, debt service, healthcare, insurance premiums, and withdrawals', 'Every possible irregular purchase or emergency unless you add it as a goal or assumption'],
60
+ ['Accounts', 'Cash, taxable, equity compensation, traditional, Roth, HSA, property, debt, and insurance values', 'Every custodian-specific rule, fee, investment product, or trading detail'],
61
+ ['Taxes', 'Federal and state estimates at planning precision, including common retirement interactions', 'A tax return, tax advice, audit support, or every deduction and credit edge case'],
62
+ ['Risk', 'Monte Carlo market paths, optional longevity variation, and optional long-term-care shock', 'A prediction of actual market returns or your personal life span'],
63
+ ],
64
+ },
65
+ { type: 'heading', text: 'How to use the boundary well' },
66
+ {
67
+ type: 'scenario',
68
+ name: 'Mina and Jordan',
69
+ assumptions: [
70
+ { label: 'Question', value: 'Should they retire at 62 or 64?' },
71
+ { label: 'Good model use', value: 'Compare age 62 vs 64 with the same spending, return, inflation, and tax assumptions' },
72
+ { label: 'Outside the model', value: 'Whether they are emotionally ready to stop working' },
73
+ ],
74
+ summary:
75
+ 'RetireGolden can show the money difference between 62 and 64, such as two more saving years and two fewer withdrawal years. It cannot decide how those two work years feel.',
76
+ },
77
+ { type: 'heading', text: 'Planning precision, not personal advice' },
78
+ {
79
+ type: 'prose',
80
+ md: 'Planning precision means the model is detailed enough to compare strategies and spot pressure points. It is not a substitute for professional tax, legal, investment, insurance, or healthcare advice. A result can be directionally useful and still need review before you act.',
81
+ },
82
+ {
83
+ type: 'callout',
84
+ tone: 'warn',
85
+ md: 'Use RetireGolden to understand trade-offs. Do not use it as the only basis for irreversible tax, investment, insurance, or estate decisions.',
86
+ },
87
+ { type: 'heading', text: 'Common mistakes' },
88
+ {
89
+ type: 'list',
90
+ items: [
91
+ 'Treating a model limitation as a reason to ignore the model entirely.',
92
+ 'Treating a clean chart as proof that real life will be clean too.',
93
+ 'Changing several assumptions at once and then attributing the result to only one change.',
94
+ 'Forgetting that private, browser-only storage also means you control your own backups.',
95
+ ],
96
+ },
97
+ { type: 'heading', text: 'Where to use this in the app' },
98
+ {
99
+ type: 'prose',
100
+ md: 'Use this article before you interpret **Results**, **Monte Carlo**, **Scenarios**, or **Optimize**. When a screen gives you a strong answer, ask which assumptions made that answer possible and which real-world issues sit outside the model.',
101
+ },
102
+ ],
103
+ }
@@ -0,0 +1,117 @@
1
+ import type { LearningArticle } from '../learningRegistry'
2
+
3
+ export const whatRetirementHealthcareReallyCostsArticle: LearningArticle = {
4
+ slug: 'what-retirement-healthcare-really-costs',
5
+ title: 'What retirement healthcare really costs',
6
+ description: 'How to source the healthcare numbers you enter in Spending.',
7
+ category: 'healthcare',
8
+ tags: ['healthcare costs', 'medicare', 'aca', 'part b', 'part d', 'irmaa', 'premium tax credit'],
9
+ audience: 'beginner',
10
+ status: 'ready',
11
+ lastReviewed: '2026-07-02',
12
+ reviewCadence: 'annual',
13
+ sourceUrls: [
14
+ 'https://www.cms.gov/newsroom/fact-sheets/2026-medicare-parts-b-premiums-deductibles',
15
+ 'https://www.medicare.gov/basics/costs/medicare-costs',
16
+ 'https://www.medicare.gov/publications/11579-medicare-costs.pdf',
17
+ 'https://www.kff.org/affordable-care-act/state-indicator/marketplace-average-benchmark-premiums/',
18
+ 'https://www.cms.gov/newsroom/fact-sheets/plan-year-2026-marketplace-plans-prices-fact-sheet',
19
+ 'https://www.healthcare.gov/retirees/',
20
+ 'https://www.kff.org/interactive/subsidy-calculator/',
21
+ 'https://newsroom.fidelity.com/pressreleases/fidelity-investments--releases-2025-retiree-health-care-cost-estimate--a-timely-reminder-for-all-gen/s/3c62e988-12e2-4dc8-afb4-f44b06c6d52e',
22
+ ],
23
+ relatedArticles: [
24
+ 'healthcare-before-65',
25
+ 'healthcare-after-65',
26
+ 'aca-premium-tax-credits-and-magi',
27
+ 'irmaa-two-year-lookback',
28
+ 'assumption-healthcare-inflation',
29
+ ],
30
+ relatedPlannerRoutes: ['/plan/:planId/spending', '/plan/:planId/assumptions', '/plan/:planId/results'],
31
+ currentYearSensitive: true,
32
+ priority: 'P1',
33
+ blocks: [
34
+ {
35
+ type: 'prose',
36
+ md: 'Healthcare is one of the easiest retirement costs to understate because the bill is split across premiums, deductibles, copays, drug costs, and income-based surcharges. RetireGolden separates the recurring premium inputs from the costs it can model from published rules.',
37
+ },
38
+ { type: 'heading', text: 'Quick takeaways' },
39
+ {
40
+ type: 'list',
41
+ items: [
42
+ 'Before 65, start with the full marketplace or retiree-plan premium before any subsidy.',
43
+ 'At 65 and later, RetireGolden already adds standard Medicare Part B and IRMAA; enter the extra recurring coverage you choose.',
44
+ 'Healthcare cost guidance changes every year, so use current quotes and treat national averages as a check, not a quote.',
45
+ ],
46
+ },
47
+ { type: 'heading', text: 'The current numbers to anchor on' },
48
+ {
49
+ type: 'prose',
50
+ md: 'For 2026, CMS set the standard Medicare Part B premium at **$202.90 per month** and the annual Part B deductible at **$283**. Medicare.gov lists the same Part B premium and notes that Part D, Medicare Advantage, and Medigap costs vary by plan.\n\nFor pre-65 marketplace coverage, KFF reports a **$625 monthly national average benchmark premium for 2026** for a 40-year-old second-lowest-cost Silver plan, weighted by county selections. Older early retirees usually cost more than a 40-year-old, and premiums vary by state and county, so use a quote for your household when you can.',
51
+ },
52
+ {
53
+ type: 'table',
54
+ caption: 'How to fill the Spending healthcare fields.',
55
+ columns: ['Spending field', 'What to enter', 'Where the number comes from'],
56
+ rows: [
57
+ [
58
+ 'Pre-65 premium / person / month',
59
+ 'The full unsubsidized monthly premium for one person before any premium tax credit.',
60
+ 'Marketplace quote, retiree-plan quote, COBRA bill, or KFF benchmark data as a rough check.',
61
+ ],
62
+ [
63
+ 'Apply ACA premium credit',
64
+ 'Turn on only when modeling marketplace coverage that can receive the premium tax credit.',
65
+ 'HealthCare.gov eligibility rules and your household MAGI; the final credit is reconciled on Form 8962.',
66
+ ],
67
+ [
68
+ 'Medicare extras / person / month',
69
+ 'Recurring coverage beyond Part B: Part D, Medigap, Medicare Advantage, dental, vision, or similar premiums.',
70
+ 'Medicare Plan Finder, insurer quote, employer retiree plan materials, or current plan notices.',
71
+ ],
72
+ [
73
+ 'Baseline annual spending',
74
+ 'Routine out-of-pocket healthcare not entered elsewhere: copays, deductibles, dental, vision, hearing, and over-the-counter costs.',
75
+ 'Your recent spending, HSA records, insurer statements, or a conservative household estimate.',
76
+ ],
77
+ ],
78
+ },
79
+ { type: 'heading', text: 'Premium tax credits and MAGI' },
80
+ {
81
+ type: 'prose',
82
+ md: 'The ACA premium tax credit lowers marketplace premiums for eligible households. HealthCare.gov explains that retirees who lose job-based coverage can use the Marketplace, and that eligibility for credits depends on income and household size. KFF summarizes the current subsidy schedule as a household contribution toward the benchmark Silver plan, with the government paying the rest through the credit.\n\nThat is why Roth conversions, IRA withdrawals, capital gains, and Social Security taxation can change healthcare costs before 65. They can raise modified adjusted gross income (MAGI), which can reduce or eliminate the credit.',
83
+ },
84
+ {
85
+ type: 'scenario',
86
+ name: 'The Patel household',
87
+ assumptions: [
88
+ { label: 'Ages', value: '63 and 61, not yet on Medicare' },
89
+ { label: 'Marketplace quote', value: '$1,850 per month for both before credits' },
90
+ { label: 'Subsidized estimate', value: '$620 per month after projected premium tax credit' },
91
+ { label: 'Planning entry', value: '$925 per person per month, with Apply ACA premium credit turned on' },
92
+ ],
93
+ summary:
94
+ 'They enter the full premium so RetireGolden can test the credit against MAGI. The subsidized premium is useful for budgeting, but the full premium is the right input for the field.',
95
+ },
96
+ { type: 'heading', text: 'How this fits healthcare inflation' },
97
+ {
98
+ type: 'prose',
99
+ md: 'RetireGolden\'s healthcare inflation assumption is an extra rate on top of general inflation. The default extra rate is **3%**, so a 2.5% general-inflation assumption means healthcare costs grow at about 5.5% nominal before any rule-specific changes.\n\nThat does not replace current-year values. Start with current quotes and published Medicare values, then let the assumption carry those costs forward in the projection.',
100
+ },
101
+ { type: 'heading', text: 'Common mistakes' },
102
+ {
103
+ type: 'list',
104
+ items: [
105
+ 'Entering the subsidized ACA premium as the full pre-65 premium, then turning on the credit again.',
106
+ 'Adding Part B manually in Medicare extras even though RetireGolden already adds it at 65+.',
107
+ 'Ignoring the two-year IRMAA lookback when planning conversions around age 63 and later.',
108
+ 'Using Fidelity or other lifetime estimates as a monthly premium quote. They are useful scale checks, not a plan-specific bill.',
109
+ ],
110
+ },
111
+ { type: 'heading', text: 'Where to use this in the app' },
112
+ {
113
+ type: 'prose',
114
+ md: 'Use **Spending** for pre-65 premiums, the ACA credit switch, and Medicare extras. Use **Assumptions** for healthcare inflation and recent MAGI. Use **Results** to inspect annual healthcare costs, taxes, and MAGI-sensitive premiums together.',
115
+ },
116
+ ],
117
+ }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * "Why a 95% success rate is not a guarantee" - a Risk and Uncertainty P1 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const why95PercentIsNotGuaranteeArticle: LearningArticle = {
8
+ slug: 'why-95-percent-is-not-a-guarantee',
9
+ title: 'Why a 95% success rate is not a guarantee',
10
+ description: 'What the remaining percentage really represents.',
11
+ category: 'risk-uncertainty',
12
+ tags: ['monte carlo', 'success rate', 'risk', 'uncertainty', 'model 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/glossary/monte-carlo-simulation'],
18
+ relatedArticles: [
19
+ 'understanding-monte-carlo-success-rate',
20
+ 'what-monte-carlo-proves',
21
+ 'sequence-of-returns-risk',
22
+ 'historical-vs-random-return-models',
23
+ 'sensitivity-testing-what-changes-the-answer',
24
+ ],
25
+ relatedPlannerRoutes: ['/plan/:planId/monte-carlo', '/plan/:planId/results', '/plan/:planId/scenarios'],
26
+ currentYearSensitive: false,
27
+ priority: 'P1',
28
+ blocks: [
29
+ {
30
+ type: 'prose',
31
+ md: 'A 95% Monte Carlo success rate is encouraging, but it is not a promise. It means the plan avoided depletion in 95% of the modeled paths using the assumptions and market model you selected.',
32
+ },
33
+ { type: 'heading', text: 'Quick takeaways' },
34
+ {
35
+ type: 'list',
36
+ items: [
37
+ 'The percentage is about modeled paths, not all possible futures.',
38
+ 'The missing 5% still matters because those paths may fail early or fail late for different reasons.',
39
+ 'A high success rate should be paired with judgment about flexibility, spending cuts, insurance, and model limits.',
40
+ ],
41
+ },
42
+ { type: 'heading', text: 'The basic idea' },
43
+ {
44
+ type: 'prose',
45
+ md: 'Monte Carlo is a structured stress test. It runs the same plan through many possible market paths, then counts how often investable assets stay above zero through the planning horizon. The number is useful because it summarizes many paths. It is incomplete because real life can include rules, behavior, inflation, care needs, and market regimes that the model did not draw.',
46
+ },
47
+ {
48
+ type: 'figure',
49
+ image: { src: '/learn/images/why-95-not-guarantee.webp' },
50
+ caption:
51
+ 'A high success rate means most modeled paths worked, while the failed paths still deserve inspection.',
52
+ alt: 'Many illustrated market paths reach the end of a retirement timeline while a small group drops below the finish line.',
53
+ },
54
+ {
55
+ type: 'table',
56
+ caption: 'What the success rate does and does not say.',
57
+ columns: ['It can tell you', 'It cannot tell you by itself'],
58
+ rows: [
59
+ ['How often the modeled paths avoided depletion', 'Whether the model captured every real-world risk'],
60
+ ['Whether one strategy is usually more resilient than another', 'Whether a tiny difference is meaningful without more paths'],
61
+ ['How weak paths behave under selected assumptions', 'Whether future tax law, spending behavior, or healthcare shocks will match the model'],
62
+ ['Whether market timing risk is material', 'Whether the plan feels acceptable to the household'],
63
+ ],
64
+ },
65
+ { type: 'heading', text: 'A worked example' },
66
+ {
67
+ type: 'scenario',
68
+ name: 'The Bennett household',
69
+ assumptions: [
70
+ { label: 'Monte Carlo', value: '95% success across 1,000 paths' },
71
+ { label: 'Weak paths', value: 'About 50 paths still fail after a long-term-care shock and poor early markets' },
72
+ { label: 'Planning response', value: 'Keep the strategy, but add a spending-cut scenario and review insurance' },
73
+ ],
74
+ summary:
75
+ 'A 95% result is strong, but it still leaves about **50** failed paths out of 1,000. The failed paths explain what backup moves the household should be ready to use.',
76
+ },
77
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
78
+ {
79
+ type: 'prose',
80
+ md: 'The **Monte Carlo** page shows the success rate, the range of outcomes, ending-balance distributions, and depletion timing. The point is not to chase 100%. The point is to understand whether the plan has enough margin for the risks you care about.',
81
+ },
82
+ { type: 'heading', text: 'Common mistakes' },
83
+ {
84
+ type: 'list',
85
+ items: [
86
+ 'Reading 95% as a guarantee instead of a modeled frequency.',
87
+ 'Comparing two strategies that differ by one percentage point using only 1,000 paths.',
88
+ 'Ignoring whether failures happen early, late, or only in extreme assumptions.',
89
+ 'Treating the model as more certain than the assumptions feeding it.',
90
+ ],
91
+ },
92
+ { type: 'heading', text: 'Where to use this in the app' },
93
+ {
94
+ type: 'prose',
95
+ md: 'Use **Monte Carlo** to inspect the weak paths, then use **Scenarios** to test practical responses such as retiring later, spending less, changing returns, or adding a care shock.',
96
+ },
97
+ ],
98
+ }