diff --git a/frontend/src/pages/WhatIf.tsx b/frontend/src/pages/WhatIf.tsx index d8a4bef..5fd5df5 100644 --- a/frontend/src/pages/WhatIf.tsx +++ b/frontend/src/pages/WhatIf.tsx @@ -14,6 +14,37 @@ const JURISDICTIONS = ['uk', 'cyprus', 'bulgaria', 'malaysia', 'thailand', 'uae' const STRATEGIES = ['trinity', 'guyton_klinger', 'vpw', 'vpw_floor']; const GLIDES = ['rising', 'static_60_40']; +// Plain-English notes shown next to each dropdown so the user knows +// what each option does without leaving the page. Same content gets +// reused in the "About the model" panel at the bottom. +const STRATEGY_NOTES: Record = { + trinity: + 'Withdraw 4% of the starting portfolio in year 1, then keep that real-£ amount fixed. Simple and famous, but rigid — never adapts to market crashes.', + guyton_klinger: + 'Start higher (~5.5%) and follow guardrail rules: cut spending if the portfolio drops too far, raise it if it grows enough. Adapts to markets, sustainable on long horizons.', + vpw: + 'Variable Percentage Withdrawal — each year, withdraw a percentage based on years left and expected real return (annuity-style). Mathematically can\'t fail, but income swings can be wide.', + vpw_floor: + 'VPW with a hard real-£ floor: never withdraw less than the floor, even if VPW says you should. Trades guaranteed lifestyle against ruin risk in bad sequences.', +}; + +const GLIDE_NOTES: Record = { + rising: + 'Rising-equity glide path (Pfau/Kitces 2014): start ~30% stocks, ramp to ~70% over 15 years. Reduces sequence-of-returns risk in early retirement.', + static_60_40: + 'Constant 60/40 stocks/bonds for the whole horizon. The classic baseline.', +}; + +const JURISDICTION_NOTES: Record = { + uk: 'UK 2026/27 PAYE + NI + CGT + dividend rules. Personal allowance tapers above £100k; pension withdrawals 25% tax-free.', + cyprus: 'Cyprus 60-day non-dom: 17-year exemption on foreign dividends + interest. 2.65% GeSY healthcare levy capped at €180k.', + bulgaria: 'Flat 10% on worldwide income. EU/EEA capital gains exempt (we apply 10% conservatively).', + malaysia: 'Foreign-sourced income exempt through 2036. Effective 0% on a typical retiree withdrawal.', + thailand: 'Foreign-sourced income exempt (v1; the 2024 remittance rule is deferred in this model).', + uae: 'No personal income tax, no levy. Effective 0%.', + nomad: 'Tax-free baseline + a 1% regulatory-risk premium to hedge against OECD/CRS rules tightening.', +}; + const DEFAULTS: SimulateRequest = { jurisdiction: 'cyprus', strategy: 'guyton_klinger', @@ -103,21 +134,21 @@ export function WhatIf() { onSubmit={onSubmit} className="rounded-lg border border-slate-200 bg-white p-5 space-y-4 sticky top-4" > - + update('strategy', v)} options={STRATEGIES} /> - +