@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,106 @@
1
+ /**
2
+ * "Why Roth conversions can raise other costs" - a Taxes P0 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const rothConversionsRaiseOtherCostsArticle: LearningArticle = {
8
+ slug: 'why-roth-conversions-raise-other-costs',
9
+ title: 'Why Roth conversions can raise other costs',
10
+ description: 'How extra income can ripple into IRMAA, ACA, and Social Security taxation.',
11
+ category: 'taxes',
12
+ tags: ['roth conversion', 'magi', 'irmaa', 'aca', 'social security taxation', 'tax cliffs'],
13
+ audience: 'intermediate',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-19',
16
+ reviewCadence: 'annual',
17
+ sourceUrls: [
18
+ 'https://www.irs.gov/retirement-plans/roth-iras',
19
+ 'https://www.irs.gov/filing/federal-income-tax-rates-and-brackets',
20
+ 'https://www.medicare.gov/basics/costs/medicare-costs',
21
+ 'https://www.healthcare.gov/income-and-household-information/income/',
22
+ 'https://www.irs.gov/taxtopics/tc423',
23
+ ],
24
+ relatedArticles: [
25
+ 'roth-conversion-basics',
26
+ 'filling-a-tax-bracket-with-roth-conversions',
27
+ 'agi-magi-and-taxable-income',
28
+ 'irmaa-two-year-lookback',
29
+ 'aca-premium-tax-credits-and-magi',
30
+ ],
31
+ relatedPlannerRoutes: ['/plan/:planId/strategy', '/plan/:planId/results', '/plan/:planId/optimize'],
32
+ currentYearSensitive: true,
33
+ priority: 'P0',
34
+ blocks: [
35
+ {
36
+ type: 'prose',
37
+ md: 'A Roth conversion is not only a tax-bracket event. Because it adds income, it can also affect Medicare premiums, ACA premium tax credits, Social Security taxation, and other income-sensitive parts of the plan.',
38
+ },
39
+ { type: 'heading', text: 'Quick takeaways' },
40
+ {
41
+ type: 'list',
42
+ items: [
43
+ 'A conversion usually raises ordinary income and MAGI in the conversion year.',
44
+ 'MAGI can affect Medicare IRMAA and ACA premium tax credits.',
45
+ 'Extra income can also cause more Social Security benefits to become taxable.',
46
+ ],
47
+ },
48
+ { type: 'heading', text: 'The basic idea' },
49
+ {
50
+ type: 'prose',
51
+ md: 'The bracket rate is only the visible part of the cost. A conversion can push on several income-sensitive rules at once. That is why a conversion that looks affordable by bracket alone may still be expensive after the rest of the plan reacts.',
52
+ },
53
+ {
54
+ type: 'figure',
55
+ image: { src: '/learn/images/conversion-ripples.webp' },
56
+ caption:
57
+ 'Conversion income can ripple beyond the tax bracket, affecting healthcare subsidies, Medicare surcharges, and taxable benefits.',
58
+ alt: 'A Roth conversion stream creates ripples that touch tax, Medicare, healthcare subsidy, Social Security, and warning symbols across a timeline.',
59
+ },
60
+ { type: 'heading', text: 'What can move when conversion income rises' },
61
+ {
62
+ type: 'table',
63
+ caption: 'Common ripple effects from conversion income.',
64
+ columns: ['Interaction', 'Income measure', 'Why it matters'],
65
+ rows: [
66
+ ['Federal bracket', 'Taxable income', 'The next conversion dollar may land in a higher bracket'],
67
+ ['Medicare IRMAA', 'MAGI with a lookback', 'Higher income can raise future Part B and Part D premiums'],
68
+ ['ACA premium tax credit', 'Marketplace household income', 'Higher income can reduce or remove the credit before Medicare age'],
69
+ ['Social Security taxation', 'Combined income-style formula', 'More benefits may become taxable as other income rises'],
70
+ ['State tax', 'State taxable income or state-specific rules', 'A conversion may raise state tax too'],
71
+ ],
72
+ },
73
+ { type: 'heading', text: 'A worked example' },
74
+ {
75
+ type: 'scenario',
76
+ name: 'The Wilson household',
77
+ assumptions: [
78
+ { label: 'Conversion plan', value: '$35,000 Roth conversion to fill a federal bracket' },
79
+ { label: 'Hidden pressure', value: '$35,000 also raises MAGI for an ACA spouse and a Medicare spouse' },
80
+ { label: 'Added cost estimate', value: '$2,200 more ACA premium this year and $900 more Medicare premium later' },
81
+ ],
82
+ summary:
83
+ 'If the conversion creates **$3,100** of healthcare costs on top of income tax, the bracket-fill target may need to shrink. The right number is the whole-plan cost, not just the tax bracket.',
84
+ },
85
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
86
+ {
87
+ type: 'prose',
88
+ md: 'RetireGolden shows tax and MAGI on the **Results** page because those lines explain many ripple effects. The conversion itself appears in the year it happens, but some costs, like IRMAA, may show up later because the rule uses prior income.',
89
+ },
90
+ { type: 'heading', text: 'Common mistakes' },
91
+ {
92
+ type: 'list',
93
+ items: [
94
+ 'Stopping the analysis at the federal bracket rate.',
95
+ 'Ignoring MAGI because it is not the same as taxable income.',
96
+ 'Forgetting that Medicare premium effects can lag the conversion year.',
97
+ 'Treating a cliff or surcharge as a reason to never convert instead of testing whether the lifetime trade still works.',
98
+ ],
99
+ },
100
+ { type: 'heading', text: 'Where to use this in the app' },
101
+ {
102
+ type: 'prose',
103
+ md: 'Use **Results** to inspect conversion, tax, MAGI, healthcare, and Medicare-related lines. Use **Optimize** as a starting point, then check whether the proposed schedule creates income-sensitive costs you would rather avoid.',
104
+ },
105
+ ],
106
+ }
@@ -0,0 +1,109 @@
1
+ /**
2
+ * "Why small tax cliffs can matter" - a Start Here P1 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const whySmallTaxCliffsCanMatterArticle: LearningArticle = {
8
+ slug: 'why-small-tax-cliffs-can-matter',
9
+ title: 'Why small tax cliffs can matter',
10
+ description: 'How crossing an invisible threshold by a dollar can cost far more than a dollar.',
11
+ category: 'start-here',
12
+ tags: ['tax cliffs', 'magi', 'irmaa', 'aca', 'brackets', 'roth conversions'],
13
+ audience: 'beginner',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-20',
16
+ reviewCadence: 'annual',
17
+ sourceUrls: [
18
+ 'https://www.irs.gov/filing/federal-income-tax-rates-and-brackets',
19
+ 'https://www.irs.gov/affordable-care-act/individuals-and-families/the-premium-tax-credit-the-basics',
20
+ 'https://www.medicare.gov/basics/costs/medicare-costs',
21
+ 'https://www.healthcare.gov/income-and-household-information/income/',
22
+ ],
23
+ relatedArticles: [
24
+ 'why-roth-conversions-raise-other-costs',
25
+ 'irmaa-two-year-lookback',
26
+ 'aca-premium-tax-credits-and-magi',
27
+ 'marginal-vs-effective-tax-rate',
28
+ 'agi-magi-and-taxable-income',
29
+ ],
30
+ relatedPlannerRoutes: [
31
+ '/plan/:planId/results',
32
+ '/plan/:planId/strategy',
33
+ '/plan/:planId/optimize',
34
+ '/plan/:planId/assumptions',
35
+ ],
36
+ currentYearSensitive: true,
37
+ priority: 'P1',
38
+ blocks: [
39
+ {
40
+ type: 'prose',
41
+ md: 'Not every tax threshold behaves like a smooth bracket. Some thresholds act more like ledges: a little more income can trigger a surcharge, reduce a credit, or change how much of another benefit is taxed.',
42
+ },
43
+ { type: 'heading', text: 'Quick takeaways' },
44
+ {
45
+ type: 'list',
46
+ items: [
47
+ 'Tax brackets are usually marginal, but some income-sensitive rules can still feel cliff-like.',
48
+ 'MAGI is often the number to watch for ACA credits and Medicare IRMAA.',
49
+ 'A Roth conversion, capital gain, or withdrawal can be good on its own and still create a costly side effect.',
50
+ ],
51
+ },
52
+ { type: 'heading', text: 'The basic idea' },
53
+ {
54
+ type: 'prose',
55
+ md: 'A marginal bracket means only the next slice of income is taxed at the higher rate. A cliff-like rule is different: crossing a threshold can change a premium, credit, or taxable-benefit calculation. That does not mean you should always avoid the threshold. It means the real cost of the next dollar may be larger than the bracket rate suggests.',
56
+ },
57
+ {
58
+ type: 'figure',
59
+ image: { src: '/learn/images/small-tax-cliffs.webp' },
60
+ caption:
61
+ 'Some thresholds are smooth slopes, while others behave like ledges that deserve a closer look.',
62
+ alt: 'A retirement income path approaches several illustrated ledges labeled by icons for tax, healthcare, Medicare, and Social Security.',
63
+ },
64
+ {
65
+ type: 'table',
66
+ caption: 'Where cliff-like effects can show up in retirement planning.',
67
+ columns: ['Area', 'Income measure', 'What can change'],
68
+ rows: [
69
+ ['Federal brackets', 'Taxable income', 'The next dollars can enter a higher marginal bracket'],
70
+ ['ACA premium tax credit', 'Marketplace household income or MAGI-style income', 'A credit can shrink or disappear as income rises'],
71
+ ['Medicare IRMAA', 'MAGI from a prior tax year', 'Part B and Part D premiums can rise in tiers'],
72
+ ['Social Security taxation', 'Combined-income style formula', 'More of the benefit can become taxable'],
73
+ ['Roth conversions', 'Taxable income and MAGI', 'The conversion can push on several of these rules at once'],
74
+ ],
75
+ },
76
+ { type: 'heading', text: 'A worked example' },
77
+ {
78
+ type: 'scenario',
79
+ name: 'The Patel household',
80
+ assumptions: [
81
+ { label: 'Goal', value: 'Convert $24,000 of traditional IRA money in a low-bracket year' },
82
+ { label: 'Hidden threshold', value: '$26,000 conversion crosses a healthcare-cost line in the estimate' },
83
+ { label: 'Cost difference', value: 'The extra $2,000 conversion triggers about $1,100 of additional annual premium' },
84
+ ],
85
+ summary:
86
+ 'The last $2,000 of conversion is unusually expensive in this example: about **$1,100** of premium plus tax. That does not mean never cross the line; it means cross it on purpose.',
87
+ },
88
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
89
+ {
90
+ type: 'prose',
91
+ md: 'RetireGolden shows tax, MAGI, healthcare costs, IRMAA-related effects, Social Security benefits, conversions, and withdrawals in the annual ledger. That makes it possible to spot whether a surprising cost is coming from tax brackets or from another income-sensitive rule.',
92
+ },
93
+ { type: 'heading', text: 'Common mistakes' },
94
+ {
95
+ type: 'list',
96
+ items: [
97
+ 'Assuming the tax bracket is the full cost of a Roth conversion.',
98
+ 'Using taxable income when the rule actually looks at MAGI or marketplace household income.',
99
+ 'Avoiding every threshold automatically instead of comparing lifetime tradeoffs.',
100
+ 'Missing the lag between income and a later Medicare premium effect.',
101
+ ],
102
+ },
103
+ { type: 'heading', text: 'Where to use this in the app' },
104
+ {
105
+ type: 'prose',
106
+ md: 'Use **Results** to watch MAGI, tax, healthcare, and conversion rows year by year. Use **Strategy** or **Optimize** to adjust conversion amounts, then compare the years immediately around the threshold.',
107
+ },
108
+ ],
109
+ }
@@ -0,0 +1,106 @@
1
+ /**
2
+ * "Widow's penalty and survivor tax brackets" - a Withdrawals and Roth P1 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const widowsPenaltyAndSurvivorBracketsArticle: LearningArticle = {
8
+ slug: 'widows-penalty-and-survivor-brackets',
9
+ title: "Widow's penalty and survivor tax brackets",
10
+ description: 'Why a surviving spouse can face higher tax on similar income.',
11
+ category: 'withdrawals-roth',
12
+ tags: ['widow penalty', 'survivor', 'filing status', 'tax brackets', 'social security survivor', 'roth conversion'],
13
+ audience: 'beginner',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-20',
16
+ reviewCadence: 'annual',
17
+ sourceUrls: [
18
+ 'https://www.irs.gov/filing/federal-income-tax-rates-and-brackets',
19
+ 'https://www.irs.gov/forms-pubs/about-publication-501',
20
+ 'https://www.ssa.gov/benefits/survivors/',
21
+ ],
22
+ relatedArticles: [
23
+ 'planning-for-couples-and-survivor-years',
24
+ 'spousal-and-survivor-benefits',
25
+ 'appealing-irmaa-ssa-44',
26
+ 'roth-conversion-basics',
27
+ 'rmds-required-minimum-distributions',
28
+ 'marginal-vs-effective-tax-rate',
29
+ ],
30
+ relatedPlannerRoutes: ['/plan/:planId/household', '/plan/:planId/survivor', '/plan/:planId/results', '/plan/:planId/social-security-analysis'],
31
+ currentYearSensitive: true,
32
+ priority: 'P1',
33
+ blocks: [
34
+ {
35
+ type: 'prose',
36
+ md: 'The widow\'s penalty is the planning problem that can appear after one spouse dies: the household may have less income, but the survivor often files under a smaller tax bracket structure. That can make similar income more expensive after the first death.',
37
+ },
38
+ { type: 'heading', text: 'Quick takeaways' },
39
+ {
40
+ type: 'list',
41
+ items: [
42
+ 'A surviving spouse may eventually move from married filing jointly to single filing status.',
43
+ 'Some income may fall, but RMDs, pensions, Social Security, and investment income can remain large.',
44
+ 'Roth conversions during joint years can sometimes reduce later survivor-year pressure.',
45
+ ],
46
+ },
47
+ { type: 'heading', text: 'The basic idea' },
48
+ {
49
+ type: 'prose',
50
+ md: 'Married filing jointly brackets and deductions are generally wider than single brackets. When the survivor later files as single, the same taxable income can land higher in the bracket stack. At the same time, the survivor may still have a large traditional IRA, taxable investments, part of a pension, and the larger Social Security benefit.\n\nThat combination is why a plan that looks tax-efficient for the couple can still have a survivor-year tax problem.',
51
+ },
52
+ {
53
+ type: 'figure',
54
+ image: { src: '/learn/images/widows-penalty-survivor-brackets.webp' },
55
+ caption:
56
+ 'After the first death, a household can move from a wider joint filing lane into a narrower survivor filing lane.',
57
+ alt: 'Two household income ribbons flow through a wider tax ladder, then later narrow into one survivor household and a smaller tax ladder with a pressure marker.',
58
+ },
59
+ { type: 'heading', text: 'What changes in survivor years' },
60
+ {
61
+ type: 'table',
62
+ caption: 'The survivor year is not just the couple year divided by two.',
63
+ columns: ['Plan item', 'What may happen', 'Why it matters'],
64
+ rows: [
65
+ ['Filing status', 'Often shifts from joint to single after transition rules', 'Brackets and deductions can shrink'],
66
+ ['Social Security', 'Survivor may keep the larger benefit instead of both checks', 'Income falls, but not always by half'],
67
+ ['Pension', 'May continue partly or fully, depending on survivor election', 'Taxable income can remain meaningful'],
68
+ ['Traditional accounts', 'Survivor may inherit the whole balance', 'Future RMDs may hit a smaller bracket structure'],
69
+ ['Medicare premiums', 'IRMAA uses single thresholds while the lookback still shows joint income', 'Form SSA-44 can re-price the two affected years on current income'],
70
+ ['Spending', 'Often falls, but housing and healthcare may not fall proportionally', 'Cash need can stay high'],
71
+ ],
72
+ },
73
+ { type: 'heading', text: 'A worked example' },
74
+ {
75
+ type: 'scenario',
76
+ name: 'The Evans household',
77
+ assumptions: [
78
+ { label: 'Joint years', value: '$120,000 taxable income using married filing jointly brackets' },
79
+ { label: 'Survivor years', value: '$82,000 taxable income after one check stops but similar IRA RMDs continue' },
80
+ { label: 'Planning lever', value: '$25,000 annual conversions before the first death may reduce later RMDs' },
81
+ ],
82
+ summary:
83
+ 'The survivor has less income, but also a narrower filing structure. Testing $25,000 conversions now can show whether reducing later RMDs softens that survivor-year tax squeeze.',
84
+ },
85
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
86
+ {
87
+ type: 'prose',
88
+ md: 'RetireGolden models survivor years by changing filing status after the first death and applying a simplified Social Security survivor step-up. This is enough to reveal survivor-year tax pressure, but it is not a full estate, probate, beneficiary, or tax-return filing model.',
89
+ },
90
+ { type: 'heading', text: 'Common mistakes' },
91
+ {
92
+ type: 'list',
93
+ items: [
94
+ 'Looking only at the couple\'s lifetime average tax rate.',
95
+ 'Assuming expenses and income both fall neatly by half.',
96
+ 'Ignoring the survivor when sizing Roth conversions.',
97
+ 'Treating the phrase widow\'s penalty as only a tax issue; Social Security, pensions, healthcare, and housing all matter too.',
98
+ ],
99
+ },
100
+ { type: 'heading', text: 'Where to use this in the app' },
101
+ {
102
+ type: 'prose',
103
+ md: "Use **Household** to set planning ages, **Social Security analysis** to compare survivor-sensitive claiming choices, and **Results** to inspect taxes, RMDs, and balances after one spouse dies. For couples, the **Survivor transition** view sweeps earlier death timings on your own plan — filing shift, survivor Social Security, IRMAA with and without SSA-44 relief, and the convert-while-joint lever — and **Spending → Healthcare** has the opt-in SSA-44 toggles.",
104
+ },
105
+ ],
106
+ }
@@ -0,0 +1,105 @@
1
+ /**
2
+ * "Withdrawal order basics" - a Withdrawals and Roth P0 article.
3
+ */
4
+
5
+ import type { LearningArticle } from '../learningRegistry'
6
+
7
+ export const withdrawalOrderBasicsArticle: LearningArticle = {
8
+ slug: 'withdrawal-order-basics',
9
+ title: 'Withdrawal order basics',
10
+ description: 'Which accounts to draw from first and why the order matters.',
11
+ category: 'withdrawals-roth',
12
+ tags: ['withdrawal order', 'cash', 'taxable account', 'traditional ira', 'roth ira', 'hsa', 'tax planning'],
13
+ audience: 'beginner',
14
+ status: 'ready',
15
+ lastReviewed: '2026-06-20',
16
+ reviewCadence: 'annual',
17
+ sourceUrls: [
18
+ 'https://www.irs.gov/retirement-plans/retirement-plans-faqs-regarding-iras-distributions-withdrawals',
19
+ 'https://www.irs.gov/retirement-plans/roth-iras',
20
+ 'https://www.irs.gov/filing/federal-income-tax-rates-and-brackets',
21
+ ],
22
+ relatedArticles: [
23
+ 'rmds-required-minimum-distributions',
24
+ 'qcds-qualified-charitable-distributions',
25
+ 'roth-conversion-basics',
26
+ 'paying-conversion-taxes-taxable-vs-ira',
27
+ 'marginal-vs-effective-tax-rate',
28
+ ],
29
+ relatedPlannerRoutes: ['/plan/:planId/accounts', '/plan/:planId/strategy', '/plan/:planId/results'],
30
+ currentYearSensitive: true,
31
+ priority: 'P0',
32
+ featured: true,
33
+ blocks: [
34
+ {
35
+ type: 'prose',
36
+ md: 'Withdrawal order is the order in which a retirement plan spends from accounts when income is not enough to cover expenses. It sounds mechanical, but it can change taxes, Medicare costs, Roth balances, and how long each account lasts.',
37
+ },
38
+ { type: 'heading', text: 'Quick takeaways' },
39
+ {
40
+ type: 'list',
41
+ items: [
42
+ 'Different account types create different tax effects when you spend from them.',
43
+ 'RMDs and other forced distributions usually happen before the flexible withdrawal order.',
44
+ 'The best order is not universal. It depends on taxes, healthcare cliffs, heirs, and which accounts you want to preserve.',
45
+ ],
46
+ },
47
+ { type: 'heading', text: 'The basic idea' },
48
+ {
49
+ type: 'prose',
50
+ md: 'Cash is usually simple: spending it does not create taxable income. Taxable brokerage accounts may create capital gains when sold. Traditional retirement accounts usually create ordinary income when withdrawn. Roth accounts can be valuable later because qualified withdrawals may be tax-free. HSAs can be especially valuable for medical costs.\n\nA withdrawal order is a rule for deciding which bucket supplies the next spending dollar. A simple order can be useful, but retirement planning often needs to test alternatives because the tax cost changes by year.',
51
+ },
52
+ {
53
+ type: 'figure',
54
+ image: { src: '/learn/images/withdrawal-order-basics.webp' },
55
+ caption:
56
+ 'A withdrawal order chooses which account buckets feed the spending basket after income and forced distributions are considered.',
57
+ alt: 'Cash, taxable, traditional, Roth, and HSA buckets send ribbons toward one spending basket, with small tax markers on taxable and traditional flows.',
58
+ },
59
+ { type: 'heading', text: 'Common account buckets' },
60
+ {
61
+ type: 'table',
62
+ caption: 'Account type often matters more than account name.',
63
+ columns: ['Bucket', 'Typical withdrawal effect', 'Planning question'],
64
+ rows: [
65
+ ['Cash', 'Usually no new taxable income', 'How much cash buffer is useful?'],
66
+ ['Taxable brokerage', 'May realize capital gains as investments are sold', 'How much embedded gain is in the account?'],
67
+ ['Traditional IRA or 401(k)', 'Usually ordinary income', 'Will this fill a bracket or trigger another cost?'],
68
+ ['Roth', 'Qualified withdrawals may be tax-free', 'Is it better saved for later flexibility or heirs?'],
69
+ ['HSA', 'Tax-free for qualified medical expenses', 'Should it be reserved for healthcare?'],
70
+ ],
71
+ },
72
+ { type: 'heading', text: 'A worked example' },
73
+ {
74
+ type: 'scenario',
75
+ name: 'The Daniels household',
76
+ assumptions: [
77
+ { label: 'Spending gap', value: '$36,000 needed after Social Security and pension income' },
78
+ { label: 'Taxable option', value: '$36,000 brokerage sale with about $9,000 of embedded gain' },
79
+ { label: 'Traditional option', value: '$36,000 IRA withdrawal counts as ordinary income' },
80
+ ],
81
+ summary:
82
+ 'The taxable sale puts about **$9,000** into income, while the IRA withdrawal puts the full **$36,000** into ordinary income. Roth may avoid income now, but spends a flexible asset.',
83
+ },
84
+ { type: 'heading', text: 'Why it matters in RetireGolden' },
85
+ {
86
+ type: 'prose',
87
+ md: 'RetireGolden supports sequential, proportional, and bracket-targeted withdrawal strategies. The default sequential order drains cash, taxable, equity compensation, traditional, Roth, and then HSA. RMDs, QCDs, inherited-IRA distributions, and 72(t) payments are handled before the need-based withdrawal flow.',
88
+ },
89
+ { type: 'heading', text: 'Common mistakes' },
90
+ {
91
+ type: 'list',
92
+ items: [
93
+ 'Assuming one textbook order is always best.',
94
+ 'Ignoring RMDs because they are not optional once they apply.',
95
+ 'Spending Roth too early when it may be useful for survivor years, healthcare cliffs, or heirs.',
96
+ 'Looking only at income tax and missing MAGI-sensitive costs.',
97
+ ],
98
+ },
99
+ { type: 'heading', text: 'Where to use this in the app' },
100
+ {
101
+ type: 'prose',
102
+ md: 'Use **Accounts** to classify balances correctly. Use **Strategy** to choose the withdrawal order, and use **Results** to inspect withdrawals, realized gains, tax, MAGI, and shortfalls by year.',
103
+ },
104
+ ],
105
+ }
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Glossary seed terms for the Learning Center (V9 PR1, spec §9.10).
3
+ *
4
+ * Definitions are plain-language and evergreen — they explain concepts, not
5
+ * current-year dollar figures. Each term has a stable `id` so planner tooltips
6
+ * and articles can deep-link to /learn/glossary#<id> later.
7
+ */
8
+
9
+ export type GlossaryTerm = {
10
+ /** Stable anchor id (kebab-case). */
11
+ id: string
12
+ /** Display term, e.g. "MAGI". */
13
+ term: string
14
+ /** Full expansion of an acronym, when the term is one. */
15
+ expansion?: string
16
+ /** One- to two-sentence plain-language definition. */
17
+ definition: string
18
+ }
19
+
20
+ export const GLOSSARY_TERMS: GlossaryTerm[] = [
21
+ {
22
+ id: 'aca',
23
+ term: 'ACA',
24
+ expansion: 'Affordable Care Act',
25
+ definition:
26
+ 'The law behind the health-insurance marketplace many people use before Medicare. It offers income-based subsidies that lower monthly premiums.',
27
+ },
28
+ {
29
+ id: 'agi',
30
+ term: 'AGI',
31
+ expansion: 'adjusted gross income',
32
+ definition:
33
+ 'Your total income minus a set of specific adjustments. It is a building block for many other tax and benefit calculations.',
34
+ },
35
+ {
36
+ id: 'aime',
37
+ term: 'AIME',
38
+ expansion: 'average indexed monthly earnings',
39
+ definition:
40
+ 'A monthly average of your highest-earning working years, adjusted for wage growth. Social Security uses it to compute your base benefit.',
41
+ },
42
+ {
43
+ id: 'annuity',
44
+ term: 'Annuity',
45
+ definition:
46
+ 'A contract, usually with an insurance company, that pays a stream of income — often for life — in exchange for money you put in.',
47
+ },
48
+ {
49
+ id: 'basis',
50
+ term: 'Basis',
51
+ definition:
52
+ 'What you originally paid for an investment. When you sell, only the gain above your basis is taxed.',
53
+ },
54
+ {
55
+ id: 'bend-point',
56
+ term: 'Bend point',
57
+ definition:
58
+ 'A dollar threshold in the Social Security formula where the benefit you earn on additional career earnings slows down.',
59
+ },
60
+ {
61
+ id: 'cola',
62
+ term: 'COLA',
63
+ expansion: 'cost-of-living adjustment',
64
+ definition:
65
+ 'An annual increase that raises Social Security benefits to help them keep pace with rising prices.',
66
+ },
67
+ {
68
+ id: 'effective-tax-rate',
69
+ term: 'Effective tax rate',
70
+ definition:
71
+ 'The average share of your income that goes to tax — total tax divided by total income. It is usually lower than your top bracket.',
72
+ },
73
+ {
74
+ id: 'fra',
75
+ term: 'FRA',
76
+ expansion: 'full retirement age',
77
+ definition:
78
+ 'The age at which you can claim your full Social Security benefit with no early-claiming reduction. It depends on your birth year.',
79
+ },
80
+ {
81
+ id: 'hsa',
82
+ term: 'HSA',
83
+ expansion: 'health savings account',
84
+ definition:
85
+ 'A savings account paired with certain high-deductible health plans. Money goes in tax-free, grows tax-free, and comes out tax-free for medical costs.',
86
+ },
87
+ {
88
+ id: 'irmaa',
89
+ term: 'IRMAA',
90
+ expansion: 'income-related monthly adjustment amount',
91
+ definition:
92
+ 'A surcharge added to Medicare premiums for people with higher income. It is based on your income from two years earlier.',
93
+ },
94
+ {
95
+ id: 'ltc',
96
+ term: 'LTC',
97
+ expansion: 'long-term care',
98
+ definition:
99
+ 'Help with daily living — like a nursing home or in-home aide — that health insurance and Medicare generally do not cover.',
100
+ },
101
+ {
102
+ id: 'magi',
103
+ term: 'MAGI',
104
+ expansion: 'modified adjusted gross income',
105
+ definition:
106
+ 'Your AGI with certain items added back. Several programs, including ACA subsidies and IRMAA, use a version of MAGI to test income.',
107
+ },
108
+ {
109
+ id: 'marginal-tax-rate',
110
+ term: 'Marginal tax rate',
111
+ definition:
112
+ 'The tax rate on your next dollar of income — the rate of your top bracket. It drives decisions like how much to convert to Roth.',
113
+ },
114
+ {
115
+ id: 'medicare',
116
+ term: 'Medicare',
117
+ definition:
118
+ 'The federal health-insurance program for most people age 65 and older, with separate parts for hospital, medical, and drug coverage.',
119
+ },
120
+ {
121
+ id: 'monte-carlo',
122
+ term: 'Monte Carlo',
123
+ definition:
124
+ 'A method that runs a plan through hundreds or thousands of randomized futures to estimate how often it succeeds.',
125
+ },
126
+ {
127
+ id: 'niit',
128
+ term: 'NIIT',
129
+ expansion: 'net investment income tax',
130
+ definition:
131
+ 'An extra tax on investment income for higher-income households, on top of regular income tax.',
132
+ },
133
+ {
134
+ id: 'pia',
135
+ term: 'PIA',
136
+ expansion: 'primary insurance amount',
137
+ definition:
138
+ 'The monthly Social Security benefit you would receive if you claim exactly at your full retirement age.',
139
+ },
140
+ {
141
+ id: 'ptc',
142
+ term: 'PTC',
143
+ expansion: 'premium tax credit',
144
+ definition:
145
+ 'The ACA subsidy that lowers the cost of marketplace health insurance, based on your household income.',
146
+ },
147
+ {
148
+ id: 'qcd',
149
+ term: 'QCD',
150
+ expansion: 'qualified charitable distribution',
151
+ definition:
152
+ 'A gift sent directly from an IRA to a charity. It can satisfy required withdrawals while keeping that money off your taxable income.',
153
+ },
154
+ {
155
+ id: 'qualified-dividend',
156
+ term: 'Qualified dividend',
157
+ definition:
158
+ 'A dividend that meets IRS rules to be taxed at the lower long-term capital-gains rates instead of ordinary income rates.',
159
+ },
160
+ {
161
+ id: 'rmd',
162
+ term: 'RMD',
163
+ expansion: 'required minimum distribution',
164
+ definition:
165
+ 'The minimum amount the IRS requires you to withdraw each year from most pre-tax retirement accounts once you reach a certain age.',
166
+ },
167
+ {
168
+ id: 'roth-conversion',
169
+ term: 'Roth conversion',
170
+ definition:
171
+ 'Moving money from a pre-tax account to a Roth account and paying the tax now, so future growth and withdrawals can be tax-free.',
172
+ },
173
+ {
174
+ id: 'sequence-of-returns-risk',
175
+ term: 'Sequence-of-returns risk',
176
+ definition:
177
+ 'The danger that poor investment returns early in retirement, while you are withdrawing, do lasting damage even if average returns are fine.',
178
+ },
179
+ {
180
+ id: 'standard-deduction',
181
+ term: 'Standard deduction',
182
+ definition:
183
+ 'A flat amount that reduces the income you pay tax on, taken instead of itemizing individual deductions.',
184
+ },
185
+ {
186
+ id: 'taxable-income',
187
+ term: 'Taxable income',
188
+ definition:
189
+ 'The income left after deductions, which your tax brackets are actually applied to.',
190
+ },
191
+ ]