{"id":61104,"date":"2026-05-01T12:17:53","date_gmt":"2026-05-01T16:17:53","guid":{"rendered":"https:\/\/www.assur360.ca\/assur360-simulators-free-tools-for-your-financial-decisions\/quebec-tax-savings-plan-comparator-2026-rrsp-tfsa-fhsa-resp-vrsp\/"},"modified":"2026-06-26T03:47:31","modified_gmt":"2026-06-26T07:47:31","slug":"quebec-tax-savings-plan-comparator-2026-rrsp-tfsa-fhsa-resp-vrsp","status":"publish","type":"page","link":"https:\/\/www.assur360.ca\/en\/assur360-simulators-free-tools-for-your-financial-decisions\/quebec-tax-savings-plan-comparator-2026-rrsp-tfsa-fhsa-resp-vrsp\/","title":{"rendered":"Quebec Tax Savings Plan Comparator 2026 \u2014 RRSP, TFSA, FHSA, RESP, VRSP"},"content":{"rendered":"&#8220;`html\n\n\n<style>\n#ez-toc-container{display:none!important}.entry-title,.page-title,.ast-page-title,.ast-archive-title{display:none!important}\n.regimes-wrap{font-family:'DM Sans','Inter',sans-serif;max-width:1200px;margin:0 auto;padding:0 16px}\n.regimes-hero{background:linear-gradient(135deg,#0d1f2d,#1a3a4a);color:#fff;padding:48px 32px;border-radius:16px;margin:24px 0;position:relative;overflow:hidden}\n.regimes-hero::before{content:'';position:absolute;top:-100px;right:-100px;width:300px;height:300px;background:radial-gradient(circle,rgba(16,196,199,.18),transparent 70%);border-radius:50%}\n.regimes-hero h1{font-family:'Sora','DM Sans',sans-serif;font-size:36px;line-height:1.15;margin:0 0 14px;font-weight:700;position:relative;color:#fff !important}\n.regimes-hero p{font-size:17px;line-height:1.55;color:#cbd5e1;margin:0 0 18px;max-width:780px;position:relative}\n.regimes-hero .badges{display:flex;flex-wrap:wrap;gap:8px;position:relative}\n.regimes-hero .badge{background:rgba(16,196,199,.18);color:#7dd3d4;padding:6px 12px;border-radius:20px;font-size:12.5px;font-weight:600;border:1px solid rgba(16,196,199,.3)}\n.regimes-warn{background:#fff8e1;border:2px solid #fbbf24;border-radius:10px;padding:16px 20px;margin:0 0 28px;color:#78350f;font-size:14.5px;line-height:1.55}\n\n.regimes-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:0 0 32px}\n.regimes-stat{background:#f8fafc;border-radius:12px;padding:18px 16px;text-align:center;border:1px solid #e2e8f0}\n.regimes-stat .v{font-family:'Sora',sans-serif;font-size:24px;font-weight:700;color:#10c4c7;line-height:1}\n.regimes-stat .l{font-size:12.5px;color:#64748b;margin-top:6px;font-weight:500}\n\n\/* Presets life situations *\/\n.regimes-presets{margin:0 0 28px}\n.regimes-presets h3{font-family:'Sora',sans-serif;font-size:15px;color:#0d1f2d;margin:0 0 12px;font-weight:600;text-transform:uppercase;letter-spacing:.4px}\n.regimes-presets-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}\n.regimes-preset{background:#fff;border:1.5px solid #e2e8f0;border-radius:10px;padding:14px 16px;cursor:pointer;text-align:left;transition:all .15s;font-family:inherit}\n.regimes-preset:hover{border-color:#10c4c7;background:#ecfeff;transform:translateY(-1px)}\n.regimes-preset strong{display:block;font-size:14px;color:#0d1f2d;margin-bottom:4px;font-weight:700}\n.regimes-preset span{font-size:12.5px;color:#64748b;line-height:1.4}\n\n.regimes-calc{background:#fff;border:2px solid #e2e8f0;border-radius:16px;padding:28px;margin:0 0 32px;box-shadow:0 4px 20px rgba(13,31,45,.04)}\n.regimes-calc h2{font-family:'Sora',sans-serif;font-size:22px;color:#0d1f2d;margin:0 0 22px;font-weight:700;display:flex;align-items:center;gap:10px}\n.regimes-calc h2::before{content:'';width:4px;height:22px;background:#10c4c7;border-radius:2px}\n.regimes-calc h3.sub{font-family:'Sora',sans-serif;font-size:15px;color:#475569;margin:24px 0 12px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;padding-top:18px;border-top:1px solid #f1f5f9}\n.regimes-calc h3.sub:first-of-type{margin-top:0;padding-top:0;border-top:none}\n.regimes-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}\n.regimes-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}\n.regimes-field{display:flex;flex-direction:column;gap:6px}\n.regimes-field label{font-size:13.5px;color:#334155;font-weight:600}\n.regimes-field .hint{font-size:12px;color:#64748b;font-weight:400}\n.regimes-field input[type=number],.regimes-field select,.regimes-field input[type=text]{padding:11px 14px;border:1.5px solid #cbd5e1;border-radius:8px;font-size:15px;font-family:inherit;background:#fff;color:#0d1f2d;transition:border .15s}\n.regimes-field input[type=number]:focus,.regimes-field select:focus,.regimes-field input[type=text]:focus{outline:none;border-color:#10c4c7;box-shadow:0 0 0 3px rgba(16,196,199,.15)}\n\n.regimes-radios{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}\n.regimes-radios button{padding:9px 14px;border:1.5px solid #cbd5e1;background:#fff;border-radius:8px;font-size:13px;font-weight:600;color:#475569;cursor:pointer;transition:all .15s;font-family:inherit}\n.regimes-radios button:hover{border-color:#10c4c7;color:#10c4c7}\n.regimes-radios button.active{background:#10c4c7;border-color:#10c4c7;color:#fff}\n\n.regimes-result{background:linear-gradient(135deg,#0d1f2d,#1e3a52);color:#fff;border-radius:16px;padding:32px;margin:0 0 32px}\n.regimes-result h3{font-family:'Sora',sans-serif;font-size:14px;color:#94a3b8;margin:0 0 8px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}\n.regimes-recommend{background:rgba(16,196,199,.12);border:1.5px solid rgba(16,196,199,.4);border-radius:12px;padding:22px 24px;margin-bottom:24px}\n.regimes-recommend .reco-title{font-family:'Sora',sans-serif;font-size:13px;color:#7dd3d4;margin:0 0 6px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}\n.regimes-recommend .reco-name{font-family:'Sora',sans-serif;font-size:26px;font-weight:700;color:#fff;margin:0 0 12px;line-height:1.15}\n.regimes-recommend .reco-why{font-size:14.5px;color:#cbd5e1;line-height:1.6;margin:0}\n.regimes-recommend .nuance{margin-top:14px;padding:14px;background:rgba(255,255,255,.06);border-radius:8px;font-size:13.5px;color:#cbd5e1;line-height:1.55}\n.regimes-recommend .nuance strong{color:#7dd3d4;display:block;margin-bottom:4px;font-size:12.5px;text-transform:uppercase;letter-spacing:.4px}\n\n.regimes-charts{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px}\n.regimes-chart-box{background:#fff;border-radius:12px;padding:18px}\n.regimes-chart-box h4{font-family:'Sora',sans-serif;font-size:14px;color:#0d1f2d;margin:0 0 12px;font-weight:600;text-transform:uppercase;letter-spacing:.3px}\n.regimes-chart-box canvas{max-width:100%;height:300px!important}\n.regimes-chart-full{grid-column:1\/-1}\n\n.regimes-table-wrap{overflow-x:auto;background:#fff;border-radius:12px;margin-bottom:18px}\n.regimes-table{width:100%;border-collapse:collapse;font-size:13.5px;color:#0d1f2d}\n.regimes-table th{background:#0d1f2d;color:#fff;padding:12px 14px;text-align:left;font-weight:600;font-size:12.5px;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}\n.regimes-table th:first-child{border-radius:8px 0 0 0}\n.regimes-table th:last-child{border-radius:0 8px 0 0}\n.regimes-table td{padding:11px 14px;border-bottom:1px solid #f1f5f9}\n.regimes-table tbody tr:nth-child(even){background:#f8fafc}\n.regimes-table .reg-name{font-weight:700;color:#0d1f2d}\n.regimes-table .reg-best{background:#ecfeff!important}\n.regimes-table .reg-best .reg-name{color:#0e7490}\n.regimes-table .num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}\n\n.regimes-decaiss{background:#fff;border-radius:12px;padding:22px;margin-bottom:18px}\n.regimes-decaiss h4{font-family:'Sora',sans-serif;font-size:15px;color:#0d1f2d;margin:0 0 16px;font-weight:700}\n.regimes-decaiss-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:14px}\n.regimes-decaiss-card{background:#f8fafc;border-radius:10px;padding:16px;text-align:center;border-left:4px solid #10c4c7}\n.regimes-decaiss-card .v{font-family:'Sora',sans-serif;font-size:22px;font-weight:700;color:#0d1f2d;line-height:1.05}\n.regimes-decaiss-card .l{font-size:12px;color:#64748b;margin-top:6px;font-weight:500;text-transform:uppercase;letter-spacing:.3px}\n.regimes-decaiss .order{font-size:13.5px;color:#475569;line-height:1.5;background:#f0fdfa;padding:12px 14px;border-radius:8px}\n.regimes-decaiss .order strong{color:#0e7490}\n\n.regimes-hypotheses{background:#fefce8;border:1.5px solid #fde047;border-radius:12px;padding:18px 22px;margin-bottom:18px}\n.regimes-hypotheses h4{font-family:'Sora',sans-serif;font-size:13px;color:#854d0e;margin:0 0 10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}\n.regimes-hypotheses ul{margin:0;padding-left:18px;font-size:13.5px;color:#713f12;line-height:1.65}\n.regimes-hypotheses li{margin-bottom:3px}\n.regimes-hypotheses strong{color:#451a03}\n\n``````html\n@media(max-width:760px){\n.regimes-hero h1{font-size:26px}\n.regimes-hero{padding:32px 22px}\n.regimes-stats,.regimes-presets-grid{grid-template-columns:repeat(2,1fr)}\n.regimes-grid,.regimes-grid-3,.regimes-charts,.regimes-decaiss-grid{grid-template-columns:1fr}\n.regimes-calc{padding:18px}\n}\n\n\/* Sections *\/\n.regimes-section{padding:36px 0 8px}\n.regimes-section h2{font-family:'Sora',sans-serif;font-size:26px;color:#0d1f2d;margin:0 0 8px;font-weight:700;line-height:1.2}\n.regimes-section .lead{font-size:16px;color:#475569;margin:0 0 22px;max-width:820px;line-height:1.55}\n.regimes-cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:8px 0 12px}\n.regimes-cards2{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;margin:8px 0 12px}\n.regimes-card{background:#f8fafc;border-radius:12px;padding:22px;border-top:4px solid #10c4c7}\n.regimes-card h3{font-family:'Sora',sans-serif;font-size:18px;color:#0d1f2d;margin:0 0 10px;font-weight:700}\n.regimes-card p{font-size:14.5px;color:#475569;line-height:1.6;margin:0 0 8px}\n.regimes-card ul{margin:8px 0 0 18px;padding:0;font-size:14px;color:#475569;line-height:1.65}\n\n.regimes-tip{background:linear-gradient(135deg,#0d1f2d,#1e3a52);color:#fff;border-radius:14px;padding:24px 26px;margin:18px 0;border:2px solid #10c4c7}\n.regimes-tip strong{color:#7dd3d4}\n\n.regimes-eeat{background:#f0fdfa;border-radius:14px;padding:28px;margin:24px 0;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}\n.regimes-eeat .item{display:flex;gap:12px;align-items:flex-start}\n.regimes-eeat .check{flex-shrink:0;width:28px;height:28px;border-radius:50%;background:#10c4c7;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}\n.regimes-eeat .item p{margin:0;font-size:14px;color:#0f766e;line-height:1.5}\n.regimes-eeat .item strong{display:block;color:#0d1f2d;margin-bottom:2px}\n\n.regimes-faq{margin:18px 0}\n.regimes-faq details{border:1.5px solid #e2e8f0;border-radius:10px;margin-bottom:10px;overflow:hidden}\n.regimes-faq summary{padding:16px 20px;background:#f8fafc;cursor:pointer;font-weight:600;color:#0d1f2d;font-size:15px;list-style:none;display:flex;align-items:center;justify-content:space-between}\n.regimes-faq summary::-webkit-details-marker{display:none}\n.regimes-faq summary::after{content:'+';font-size:22px;color:#10c4c7;font-weight:300;transition:transform .15s}\n.regimes-faq details[open] summary::after{content:'\u2212'}\n.regimes-faq details[open] summary{background:#ecfeff;color:#0e7490}\n.regimes-faq .faq-body{padding:16px 22px;color:#475569;font-size:14.5px;line-height:1.6;background:#fff}\n\n.regimes-cross{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin:12px 0 8px}\n.regimes-cross a{display:block;padding:18px 20px;background:#fff;border:1.5px solid #e2e8f0;border-radius:12px;text-decoration:none;color:#0d1f2d;transition:all .15s}\n.regimes-cross a:hover{border-color:#10c4c7;transform:translateY(-2px);box-shadow:0 6px 18px rgba(16,196,199,.15)}\n.regimes-cross strong{display:block;font-family:'Sora',sans-serif;font-size:15px;color:#0d1f2d;margin-bottom:4px}\n.regimes-cross span{font-size:13px;color:#64748b}\n\n.regimes-cta-final{background:linear-gradient(135deg,#0d1f2d,#1a3a4a);color:#fff;border-radius:16px;padding:40px 32px;text-align:center;margin:32px 0}\n.regimes-cta-final h2{font-family:'Sora',sans-serif;font-size:26px;margin:0 0 12px;color:#fff}\n.regimes-cta-final p{font-size:16px;color:#cbd5e1;margin:0 0 20px;max-width:620px;margin-left:auto;margin-right:auto}\n.regimes-cta-final .btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}\n.regimes-cta-final .btn-primary{background:#10c4c7;color:#fff;padding:14px 28px;border-radius:10px;text-decoration:none;font-weight:700;font-size:15px;transition:all .15s}\n.regimes-cta-final .btn-primary:hover{background:#0eaeb1;transform:translateY(-1px)}\n.regimes-cta-final .btn-outline{background:transparent;color:#fff;padding:14px 28px;border:2px solid #fff;border-radius:10px;text-decoration:none;font-weight:700;font-size:15px}\n.regimes-cta-final .btn-outline:hover{background:#fff;color:#0d1f2d}\n\n.regimes-tax-table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;margin:14px 0;font-size:14px}\n.regimes-tax-table th{background:#0d1f2d;color:#fff;padding:13px 16px;text-align:left;font-weight:600}\n.regimes-tax-table td{padding:11px 16px;border-bottom:1px solid #f1f5f9;color:#0d1f2d}\n.regimes-tax-table tr:nth-child(even){background:#f8fafc}\n\n.regimes-mc-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px}\n.regimes-mc-stat{background:#fff;border-radius:10px;padding:14px 16px;text-align:center}\n.regimes-mc-stat .v{font-family:'Sora',sans-serif;font-size:20px;font-weight:700;line-height:1.05}\n.regimes-mc-stat.pess .v{color:#dc2626}\n.regimes-mc-stat.med .v{color:#10c4c7}\n.regimes-mc-stat.opt .v{color:#16a34a}\n.regimes-mc-stat .l{font-size:11.5px;color:#64748b;margin-top:4px;font-weight:600;text-transform:uppercase;letter-spacing:.3px}\n\n\/* Educational info bubbles *\/\n.rg-info{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#10c4c7;color:#fff;font-size:11px;font-weight:700;margin-left:6px;cursor:help;position:relative;font-family:'DM Sans',sans-serif;line-height:1;vertical-align:middle;flex-shrink:0;transition:all .15s}\n.rg-info:hover{background:#0eaeb1;transform:scale(1.1)}\n.rg-info::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:#0d1f2d;color:#fff;padding:10px 14px;border-radius:8px;font-size:12.5px;font-weight:400;line-height:1.5;width:280px;text-align:left;box-shadow:0 8px 24px rgba(13,31,45,.25);opacity:0;visibility:hidden;transition:all .2s;pointer-events:none;z-index:1000;letter-spacing:0;text-transform:none}\n.rg-info::before{content:'';position:absolute;bottom:calc(100% + 2px);left:50%;transform:translateX(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #0d1f2d;opacity:0;visibility:hidden;transition:all .2s;z-index:1001}\n.rg-info:hover::after,.rg-info:hover::before,.rg-info:focus::after,.rg-info:focus::before,.rg-info.rg-active::after,.rg-info.rg-active::before{opacity:1;visibility:visible}\n.rg-info::after strong{color:#7dd3d4;font-weight:700}\n\/* Tooltips on dark background (result box) *\/\n.regimes-result .rg-info{background:#7dd3d4;color:#0d1f2d}\n.regimes-result .rg-info:hover{background:#10c4c7;color:#fff}\n.regimes-result .rg-info::after{background:#fff;color:#0d1f2d;border:1px solid #cbd5e1}\n.regimes-result .rg-info::before{border-top-color:#fff}\n@media(max-width:760px){\n.rg-info::after{width:240px;font-size:12px}\n}\n\n.reg-legend{display:flex;flex-wrap:wrap;gap:10px 14px;margin:0 0 14px;padding:10px 12px;background:#f8fafc;border-radius:8px;font-size:12.5px;color:#334155;font-weight:600}\n.reg-legend .grp{display:flex;gap:10px 14px;flex-wrap:wrap;align-items:center}\n.reg-legend .grp+.grp{padding-left:14px;border-left:1px solid #e2e8f0}\n.reg-legend .leg-item{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}\n.reg-legend .leg-chip{display:inline-block;width:14px;height:14px;border-radius:3px;flex-shrink:0}\n.reg-legend .leg-label{font-size:11px;color:#64748b;font-weight:700;text-transform:uppercase;letter-spacing:.4px;margin-right:4px}\n@media(max-width:760px){.reg-legend{font-size:11.5px}.reg-legend .grp+.grp{padding-left:0;border-left:none;padding-top:8px;border-top:1px solid #e2e8f0;width:100%}}\n<\/style>\n\n\n<div class=\"regimes-wrap\">\n\n<div class=\"regimes-hero\">\n<h1><span class=\"ez-toc-section\" id=\"Quebec-Tax-Savings-Plan-Comparator-2026\"><\/span>Quebec Tax Savings Plan Comparator 2026<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Serious decision-making tool: <strong>3 return scenarios<\/strong>, <strong>management fees<\/strong>, <strong>disbursement phase<\/strong>, <strong>risk profile<\/strong> and <strong>500 Monte Carlo simulations<\/strong>. Doesn&#8217;t give a single magic number, but a realistic range to help you decide. <\/p>\n<div class=\"badges\">\n<span class=\"badge\">\n&#8220;&#8220;&#8220;html\n RRSP<span class=\"badge\">TFSA<\/span>\n<span class=\"badge\">FHSA<\/span>\n<span class=\"badge\">RESP<\/span>\n<span class=\"badge\">VRSP<\/span>\n<span class=\"badge\">Not registered<\/span><\/span>\n<\/div>\n<\/div>\n\n<div class=\"regimes-warn\">\n<strong>\u26a0\ufe0f Educational estimation tool.<\/strong>  The calculations use the 2026 (Quebec) tax parameters and transparently published assumptions below. They are not a substitute for the advice of a financial planner (F. Pl.) or an investment advisor registered with the AMF. \n<\/div>\n\n<div class=\"regimes-stats\">\n<div class=\"regimes-stat\"><div class=\"v\">6<\/div><div class=\"l\">Comparative diets<\/div><\/div>\n<div class=\"regimes-stat\"><div class=\"v\">500<\/div><div class=\"l\">Monte Carlo simulations<\/div><\/div>\n<div class=\"regimes-stat\"><div class=\"v\">2026<\/div><div class=\"l\">Up-to-date tax settings<\/div><\/div>\n<div class=\"regimes-stat\"><div class=\"v\">100 %<\/div><div class=\"l\">Free &#038; confidential<\/div><\/div>\n<\/div>\n\n<div class=\"regimes-presets\">\n<h3>\ud83c\udfaf Start with a situation close to yours<\/h3>\n<div class=\"regimes-presets-grid\">\n<button class=\"regimes-preset\" data-preset=\"acheteur\"><strong>Buyer 1st property<\/strong><span>Employee 32 years old, down payment in 5 years<\/span><\/button>\n<button class=\"regimes-preset\" data-preset=\"retraite-classique\"><strong>Retirement at 65<\/strong><span>Employee 40 years old, horizon 25 years<\/span><\/button>\n<button class=\"regimes-preset\" data-preset=\"autonome\"><strong>Self-employed No<\/strong><span>employer QPP, priority RRSP<\/span><\/button>\n<button class=\"regimes-preset\" data-preset=\"anticipee\"><strong>Early retirement age 55<\/strong><span>Short horizon, flexible TFSA<\/span><\/button>\n<button class=\"regimes-preset\" data-preset=\"parent\"><strong>Parent Young Child<\/strong><span>Priority RESP, Grants<\/span><\/button>\n<button class=\"regimes-preset\" data-preset=\"haut-revenu\"><strong>High Income (MMT 47%)<\/strong><span>Maximize RRSP + TFSA<\/span><\/button>\n<\/div>\n<\/div>\n\n<div class=\"regimes-calc\">\n<h2><span class=\"ez-toc-section\" id=\"Your-settings\"><\/span>Your settings<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<h3 class=\"sub\">\ud83d\udccb Financial Profile<\/h3>\n<div class=\"regimes-grid-3\">\n\n<div class=\"regimes-field\">\n<label for=\"reg-revenu\">Annual taxable income <span class=\"rg-info\" data-tip=\"Your gross income minus allowable deductions (RRSP, union dues, etc.). Determines your current marginal tax rate (MTR). For a simple T4, it's box 14.\" tabindex=\"0\">i<\/span><\/label>\n<input type=\"number\" id=\"reg-revenu\" value=\"75000\" min=\"0\" step=\"1000\"\/>\n<\/div>\n\n<div class=\"regimes-field\">\n<label for=\"reg-revenu-retraite\">Estimated Retirement Income <span class=\"rg-info\" data-tip=\"All your other income in retirement: QPP + Old Age Security pension + employer pension + non-RRSP investment income. Used to estimate your MTR at the time of withdrawal. Quebec average: $25,000\u2013$40,000\/year.\" tabindex=\"0\">i<\/span> <span class=\"hint\">(other than simulated RRSPs)<\/span><\/label>\n<input type=\"number\" id=\"reg-revenu-retraite\" value=\"35000\" min=\"0\" step=\"1000\"\/>\n<\/div>\n\n<div class=\"regimes-field\">\n<label for=\"reg-cotisation\">Savings by year <span class=\"rg-info\" data-tip=\"How much you can save each year. The simulator automatically applies the limits: RRSP $32,490, TFSA $7,000, FHSA $8,000, RESP $2,500 for full grants.\" tabindex=\"0\">i<\/span><\/label>\n<input type=\"number\" id=\"reg-cotisation\" value=\"6000\" min=\"0\" step=\"500\"\/>\n<\/div>\n\n<div class=\"regimes-field\">\n<label for=\"reg-horizon\">Accumulation horizon (years) <span class=\"rg-info\" data-tip=\"How many years you will save before starting to withdraw. For retirement: target age \u2212 current age. For 1st property: 3-7 years. For child studies: 18 \u2212 current age.\" tabindex=\"0\">i<\/span><\/label>\n<input type=\"number\" id=\"reg-horizon\" value=\"25\" min=\"1\" max=\"60\" step=\"1\"\/>\n<\/div>\n\n<div class=\"regimes-field\">\n<label for=\"reg-decaissement\">Duration disbursement (years) <span class=\"rg-info\" data-tip=\"How many years you will withdraw your savings after accumulation. For retirement: life expectancy \u2212 retirement age (typically 25-30 years). Enter 0 if no disbursement phase (e.g., savings for property).\" tabindex=\"0\">i<\/span><\/label>\n<input type=\"number\" id=\"reg-decaissement\" value=\"25\" min=\"0\" max=\"50\" step=\"1\"\/>\n<\/div>\n\n<div class=\"regimes-field\">\n<label>Marital status <span class=\"rg-info\" data-tip=\"Main impact on the FHSA: as a couple, each opens their FHSA = $16,000\/year combined ($80,000 lifetime). Also relevant for spousal RRSP (income splitting in retirement).\" tabindex=\"0\">i<\/span><\/label>\n<div class=\"regimes-radios\" data-group=\"conjoint\">\n<button type=\"button\" data-val=\"seul\" class=\"active\">Alone<\/button>\n<button type=\"button\" data-val=\"couple\">As a couple<\/button>\n<\/div>\n<\/div>\n\n<\/div>\n\n<h3 class=\"sub\">\ud83d\udcc8 Risk Profile &#038; Return<\/h3>\n<div class=\"regimes-grid-3\">\n\n<div class=\"regimes-field\">\n<label>Investor profile <span class=\"rg-info\" data-tip=\"Determines expected return and volatility. CAUTIOUS: 60% bonds, ~4% return, low variation. BALANCED: 60% stocks, ~5.5%, moderate. AGGRESSIVE: 80% stocks, ~7.5%, high variation. The longer the horizon, the more aggressive one can be.\" tabindex=\"0\">i<\/span><\/label>\n<div class=\"regimes-radios\" data-group=\"risque\">\n<button type=\"button\" data-val=\"prudent\">Cautious<\/button>\n<button type=\"button\" data-val=\"equilibre\" class=\"active\">Balanced<\/button>\n<button type=\"button\" data-val=\"agressif\">Aggressive<\/button>\n<\/div>\n<\/div>\n\n<div class=\"regimes-field\">\n<label for=\"reg-frais\">Management fees (%) <span class=\"rg-info\" data-tip=\"The MER (Management Expense Ratio) is what your fund charges each year. Benchmarks: index ETF 0.1-0.3% \/ bank index fund 0.5-1% \/ typical mutual fund 1.5-2.5%. Over 30 years, 1% more in fees = ~25% less final capital.\" tabindex=\"0\">i<\/span> <span class=\"hint\">MER fund + advisory<\/span><\/label>\n<input type=\"number\" id=\"reg-frais\" value=\"1.2\" min=\"0\" max=\"3\" step=\"0.05\"\/>\n<\/div>\n\n<div class=\"regimes-field\">\n<label for=\"reg-inflation\">Expected inflation (%) <span class=\"rg-info\" data-tip=\"Inflation erodes the purchasing power of your money. Bank of Canada target: 2%. Historical average over 30 years: 2.1%. To be used to convert your future $ into today's $ (display option on the right).\" tabindex=\"0\">i<\/span><\/label>\n<input type=\"number\" id=\"reg-inflation\" value=\"2.1\" min=\"0\" max=\"6\" step=\"0.1\"\/>\n<\/div>\n\n<div class=\"regimes-field\">\n<label>Investment Income Type <span class=\"rg-info\" data-tip=\"Affects ONLY the non-registered account. INTERESTS (GICs, bonds): 100% taxable. DIVIDENDS: tax credit, ~72% of the MTR. CAPITAL GAIN: 50% taxable only. In RRSP\/TFSA\/etc. everything is sheltered, regardless of type.\" tabindex=\"0\">i<\/span> <span class=\"hint\">(Non-Registered Impacted)<\/span><\/label>\n<div class=\"regimes-radios\" data-group=\"type\">\n<button type=\"button\" data-val=\"interet\">Interests<\/button>\n<button type=\"button\" data-val=\"dividendes\">Dividends<\/button>\n<button type=\"button\" data-val=\"capital\">Capital<\/button>\n gain<button type=\"button\" data-val=\"mixte\" class=\"active\">Mixed<\/button>\n<\/div>\n<\/div>\n\n<div class=\"regimes-field\">\n<label>Display of the amounts <span class=\"rg-info\" data-tip=\"NOMINAL: amounts as they will appear on your future statement (e.g., $1M in 25 years). REAL: these same amounts converted into today's purchasing power (e.g., $1M in 25 years = ~600,000 today at 2.1% inflation). To plan for retirement, look at the REAL.\" tabindex=\"0\">i<\/span><\/label>\n<div class=\"regimes-radios\" data-group=\"affichage\">\n<button type=\"button\" data-val=\"nominal\" class=\"active\">Nominal ($ future)<\/button>\n<button type=\"button\" data-val=\"reel\">Real ($today)<\/button>\n<\/div>\n<\/div>\n\n<\/div>\n\n<h3 class=\"sub\">\ud83c\udfaf Objective &#038; strategy <span class=\"rg-info\" data-tip=\"Your main objective determines the recommended regime. The combined strategy allows testing RRSP alone vs TFSA alone vs realistic combinations (50\/50, RRSP then TFSA, auto optimize).\" tabindex=\"0\">i<\/span><\/h3>\n&#8220;&#8220;&#8220;html\n<div class=\"regimes-grid-3\">\n\n<div class=\"regimes-field\">\n<label>Main objective<\/label>\n<div class=\"regimes-radios\" data-group=\"objectif\">\n<button type=\"button\" data-val=\"retraite\" class=\"active\">Retirement<\/button>\n<button type=\"button\" data-val=\"propriete\">1st property<\/button>\n<button type=\"button\" data-val=\"etudes\">Children&#8217;s<\/button>\n studies<button type=\"button\" data-val=\"flexible\">Flexible savings<\/button>\n<\/div>\n<\/div>\n\n<div class=\"regimes-field\">\n<label>Combined strategy to test <span class=\"rg-info\" data-tip=\"COMPARE: each plan alone (default). 50\/50: half RRSP, half TFSA. MAX RRSP \u2192 TFSA: maximize RRSP first then surplus in TFSA. AUTO OPTIM: the algorithm chooses according to your TMM. Most real financial plans combine several regimes.\" tabindex=\"0\">i<\/span><\/label>\n<div class=\"regimes-radios\" data-group=\"strategie\">\n<button type=\"button\" data-val=\"comparer\" class=\"active\">Compare each plan<\/button>\n<button type=\"button\" data-val=\"50_50\">50% RRSP \/ 50% TFSA<\/button>\n<button type=\"button\" data-val=\"reer_puis_celi\">RRSP max \u2192 TFSA<\/button>\n<button type=\"button\" data-val=\"auto\">Auto Optim (according to TMM)<\/button>\n<\/div>\n<\/div>\n\n<\/div>\n\n<\/div>\n\n<div class=\"regimes-result\" id=\"reg-result-box\">\n\n<div class=\"regimes-recommend\" id=\"reg-reco\">\n<div class=\"reco-title\">Priority recommendation <span class=\"rg-info\" data-tip=\"The regime best suited to your main situation. But it is not mandatory to put everything there: most real financial plans combine 2-3 regimes. See the Combined Strategies section below.\" tabindex=\"0\">i<\/span><\/div>\n<div class=\"reco-name\" id=\"reg-reco-name\">\u2014<\/div>\n<p class=\"reco-why\" id=\"reg-reco-why\">Fill in your settings to get a recommendation.<\/p>\n<div class=\"nuance\" id=\"reg-reco-nuance\" style=\"display:none\">\n<strong>Borderline cases to consider<\/strong>\n<span id=\"reg-reco-nuance-text\"><\/span>\n<\/div>\n<\/div>\n\n<div class=\"regimes-mc-stats\" id=\"reg-mc-stats\" style=\"display:none\">\n<div class=\"regimes-mc-stat pess\"><div class=\"v\" id=\"reg-mc-p10\">\u2014<\/div><div class=\"l\">Pessimistic (P10) <span class=\"rg-info\" data-tip=\"Out of 500 Monte Carlo simulations, P10 = the value below which the 10% worst results are located. In other words: 90% of scenarios give at least this amount. A cautious reference for planning.\" tabindex=\"0\">i<\/span><\/div><\/div>\n<div class=\"regimes-mc-stat med\"><div class=\"v\" id=\"reg-mc-p50\">\u2014<\/div><div class=\"l\">Median (P50) <span class=\"rg-info\" data-tip=\"The central value of the distribution: 50% of simulations are below, 50% above. More representative than the average as it is insensitive to extremes. This is the most likely scenario.\" tabindex=\"0\">i<\/span><\/div><\/div>\n<div class=\"regimes-mc-stat opt\"><div class=\"v\" id=\"reg-mc-p90\">\u2014<\/div><div class=\"l\">Optimistic (P90) <span class=\"rg-info\" data-tip=\"Out of 500 simulations, P90 = the value above which the 10% best results are located. Very favorable markets. DO NOT use for planning \u2014 just serves to know the high potential.\" tabindex=\"0\">i<\/span><\/div><\/div>\n<\/div>\n\n<div class=\"regimes-charts\">\n<div class=\"regimes-chart-box\">\n<h4>Final net value by plan \u2014 3 scenarios<\/h4>\n<div class=\"reg-legend\">\n  <div class=\"grp\"><span class=\"leg-label\">Diets<\/span>\n    <span class=\"leg-item\"><span class=\"leg-chip\" style=\"background:#10c4c7\"><\/span>RRSP<\/span>\n    <span class=\"leg-item\"><span class=\"leg-chip\" style=\"background:#0e7490\"><\/span>TFSA<\/span>\n    <span class=\"leg-item\"><span class=\"leg-chip\" style=\"background:#7c3aed\"><\/span>FHSA<\/span>\n    <span class=\"leg-item\"><span class=\"leg-chip\" style=\"background:#f59e0b\"><\/span>RESP<\/span>\n    <span class=\"leg-item\"><span class=\"leg-chip\" style=\"background:#0891b2\"><\/span>VRSP<\/span>\n    <span class=\"leg-item\"><span class=\"leg-chip\" style=\"background:#94a3b8\"><\/span>Not registered<\/span>\n  <\/div>\n  <div class=\"grp\"><span class=\"leg-label\">Scenarios<\/span>\n    <span class=\"leg-item\"><span class=\"leg-chip\" style=\"background:#fca5a5\"><\/span>Pessimistic<\/span>\n    <span class=\"leg-item\"><span class=\"leg-chip\" style=\"background:#10c4c7\"><\/span>Realist<\/span>\n    <span class=\"leg-item\"><span class=\"leg-chip\" style=\"background:#86efac\"><\/span>Optimist<\/span>\n  <\/div>\n<\/div>\n\n<canvas id=\"reg-chart-bar\"><\/canvas>\n<\/div>\n<div class=\"regimes-chart-box\">\n<h4>Growth over time (realistic)<\/h4>\n<canvas id=\"reg-chart-line\"><\/canvas>\n<\/div>\n<div class=\"regimes-chart-box regimes-chart-full\">\n<h4>Monte Carlo Distribution \u2014 Winning Regime<\/h4>\n<canvas id=\"reg-chart-mc\"><\/canvas>\n<\/div>\n<\/div>\n\n<div class=\"regimes-table-wrap\">\n<table class=\"regimes-table\" id=\"reg-table\">\n<thead>\n<tr>\n<th>Diet<\/th>\n<th class=\"num\">Total Contribution<\/th>\n<th class=\"num\">Credit\/subv.<\/th>\n<th class=\"num\">Accrued Fees<\/th>\n<th class=\"num\">Pessimistic<\/th>\n<th class=\"num\">Realistic<\/th>\n<th class=\"num\">Optimistic<\/th>\n<\/tr>\n<\/thead>\n<tbody><\/tbody>\n<\/table>\n<\/div>\n\n<div class=\"regimes-decaiss\" id=\"reg-decaiss-box\">\n<h4>\ud83d\udce4 Disbursement phase (winning plan + other assets)<\/h4>\n<div class=\"regimes-decaiss-grid\">\n<div class=\"regimes-decaiss-card\"><div class=\"v\" id=\"reg-dec-annuel\">\u2014<\/div><div class=\"l\">Annual withdrawal <span class=\"rg-info\" data-tip=\"Calculated by actuarial annuity: how much you can withdraw each year to exactly deplete your capital over the chosen duration, assuming net real return (return \u2212 fees \u2212 inflation). More cautious than the 4% rule.\" tabindex=\"0\">possible i<\/span><\/div><\/div>\n<div class=\"regimes-decaiss-card\"><div class=\"v\" id=\"reg-dec-mensuel\">\u2014<\/div><div class=\"l\">Either per month (before tax) <span class=\"rg-info\" data-tip=\"Annual withdrawal \u00f7 12. For RRSP\/RRIF, tax will be withheld at your retirement TMM. For TFSA\/TFSA APP\/RESP, no tax. For the non-registered account, tax on gains only.\" tabindex=\"0\">i<\/span><\/div><\/div>\n<div class=\"regimes-decaiss-card\"><div class=\"v\" id=\"reg-dec-duree\">\u2014<\/div><div class=\"l\">Duration held (95% success) <span class=\"rg-info\" data-tip=\"How many years your savings last if you withdraw the amount next to it, in 95% of Monte Carlo scenarios. This is the duration you choose above, validated by the simulations.\" tabindex=\"0\">i<\/span><\/div><\/div>\n<\/div>\n<div class=\"order\"><strong>Recommended Smart Order:<\/strong><span id=\"reg-dec-ordre\">\u2014<\/span><\/div>\n<\/div>\n\n<div class=\"regimes-hypotheses\">\n<h4>\ud83d\udd0d Assumptions used (full transparency)<\/h4>\n<ul id=\"reg-hypotheses\">\n<li>Fill in your parameters to see the assumptions applied.<\/li>\n<\/ul>\n<\/div>\n\n<\/div>\n\n<\/div>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@4.4.0\/dist\/chart.umd.min.js\"><\/script>\n<script>\n(function(){\n'use strict';\n\n\/\/ ============================================================\n\/\/ TAX PARAMETERS 2026 \u2014 Quebec + federal\n\/\/ ============================================================\nconst TMM_QC = [\n  {cap: 18571,  taux: 0.00},\n  {cap: 53359,  taux: 0.2753},\n  {cap: 57375,  taux: 0.3253},\n  {cap: 106717, taux: 0.3712},\n  {cap: 114750, taux: 0.4112},\n  {cap: 165430, taux: 0.4571},\n  {cap: 235675, taux: 0.4746},\n  {cap: Infinity, taux: 0.5331}\n];\n\nconst PLAFONDS = {\n  reer:    32490, rver: 32490,\n  celi:    7000,\n  celiapp: 8000, celiappVie: 40000,\n  reee:    50000,\n  scee:    500, iqee: 250,\n  sceeVie: 7200, iqeeVie: 3600,\n  reei:    200000\n};\n\n\/\/ Risk profiles: expected nominal return + standard deviation (volatility)\nconst PROFILS = {\n  prudent:   {rdmt: 0.040, vol: 0.04, label: 'Prudent (60% fixed income \/ 40% equities)'},\n  equilibre: {rdmt: 0.055, vol: 0.08, label: 'Balanced (40% fixed income \/ 60% equities)'},\n  agressif:  {rdmt: 0.075, vol: 0.14, label: 'Aggressive (20% fixed income \/ 80% equities)'}\n};\n\n\/\/ 6 presets life situations\nconst PRESETS = {\n  acheteur:           {revenu:65000, revenuR:30000, cotis:7000, horizon:5,  decaiss:0,  conjoint:'seul',     risque:'equilibre', frais:1.2, type:'mixte', objectif:'propriete', strategie:'comparer'},\n  'retraite-classique':{revenu:75000, revenuR:35000, co\n``````html\ntis:6000, horizon:25, decaiss:25, conjoint:'couple',   risque:'equilibre', frais:1.2, type:'mixte', objectif:'retirement',  strategie:'compare'},\n  autonome:           {revenu:90000, revenuR:25000, cotis:12000,horizon:25, decaiss:25, conjoint:'single',     risque:'equilibre', frais:1.0, type:'mixte', objectif:'retirement',  strategie:'rrsp_then_tfsa'},\n  anticipee:          {revenu:110000,revenuR:40000, cotis:18000,horizon:10, decaiss:30, conjoint:'couple',   risque:'equilibre', frais:1.0, type:'mixte', objectif:'retirement',  strategie:'auto'},\n  parent:             {revenu:70000, revenuR:30000, cotis:2500, horizon:18, decaiss:0,  conjoint:'couple',   risque:'equilibre', frais:1.5, type:'mixte', objectif:'studies',    strategie:'compare'},\n  'haut-revenu':      {revenu:160000,revenuR:60000, cotis:25000,horizon:20, decaiss:25, conjoint:'couple',   risque:'aggressive',  frais:0.8, type:'mixte', objectif:'retirement',  strategie:'rrsp_then_tfsa'}\n};\n\n\/\/ ============================================================\n\/\/ HELPERS\n\/\/ ============================================================\nfunction tmmFromRevenu(rev){\n  for (const t of TMM_QC) if (rev < t.cap) return t.taux;\n  return 0.5331;\n}\n\nfunction tauxImposPlacement(type, tmm){\n  switch(type){\n    case 'interest':    return tmm;\n    case 'dividends': return tmm * 0.72;\n    case 'capital':    return tmm * 0.50;\n    case 'mixed':      return tmm * (1 + 0.72 + 0.50) \/ 3;\n    default: return tmm;\n  }\n}\n\n\/\/ Bo\u00eete-M\u00fcller pour distribution normale (Monte Carlo)\nfunction gaussRand(){\n  let u = 0, v = 0;\n  while(u === 0) u = Math.random();\n  while(v === 0) v = Math.random();\n  return Math.sqrt(-2 * Math.log(u)) * Math.cos(2 * Math.PI * v);\n}\n\n\/\/ Croissance compos\u00e9e avec d\u00e9p\u00f4t annuel et frais d\u00e9duits chaque ann\u00e9e\nfunction valeurFutureAvecFrais(depot, taux, annees, frais){\n  let v = 0;\n  const tauxNet = taux - frais;\n  for (let i = 0; i < annees; i++){\n    v = (v + depot) * (1 + tauxNet);\n  }\n  return v;\n}\n\n\/\/ Trajectoire ann\u00e9e par ann\u00e9e (avec frais d\u00e9duits)\nfunction trajectoire(depot, taux, annees, frais){\n  let v = 0;\n  const arr = [0];\n  const tauxNet = taux - frais;\n  for (let i = 0; i < annees; i++){\n    v = (v + depot) * (1 + tauxNet);\n    arr.push(v);\n  }\n  return arr;\n}\n\n\/\/ Trajectoire compte non enregistr\u00e9 (revenu placement impos\u00e9 chaque ann\u00e9e)\nfunction trajectoireNonReg(depot, taux, annees, frais, tauxImpot){\n  let v = 0;\n  const arr = [0];\n  for (let i = 0; i < annees; i++){\n    v += depot;\n    const rendementBrut = v * (taux - frais);\n    const impot = Math.max(0, rendementBrut * tauxImpot);\n    v += rendementBrut - impot;\n    arr.push(v);\n  }\n  return arr;\n}\n\n\/\/ Monte Carlo : retourne {p10, p50, p90} pour un r\u00e9gime\nfunction monteCarlo(depot, rdmtMoy, vol, annees, frais, tauxImpotPlacement, isNonReg){\n  const SIMS = 500;\n  const results = new Array(SIMS);\n  for (let s = 0; s < SIMS; s++){\n    let v = 0;\n    for (let i = 0; i < annees; i++){\n      const rdmt = rdmtMoy + vol * gaussRand();\n      const tauxNet = rdmt - frais;\n      v += depot;\n      if (isNonReg){\n        const rendBrut = v * tauxNet;\n        const impot = Math.max(0, rendBrut * tauxImpotPlacement);\n        v += rendBrut - impot;\n      } else {\n        v *= (1 + tauxNet);\n      }\n    }\n    results[s] = v;\n  }\n  results.sort((a,b)=>a-b);\n  return {\n    p10: results[Math.floor(SIMS * 0.10)],\n    p50: results[Math.floor(SIMS * 0.50)],\n    p90: results[Math.floor(SIMS * 0.90)]\n  };\n}\n\n\/\/ Calcul retrait annuel soutenable (m\u00e9thode 4% adapt\u00e9e \u00e0 dur\u00e9e)\nfunction retraitSoutenable(capital, annees, rdmtNet){\n  if (annees <= 0) return 0;\n  \/\/ Annuit\u00e9 : PMT = PV \u00d7 r \/ (1 \u2212 (1+r)^\u2212n)\n  if (rdmtNet < 0.001) return capital \/ annees;\n  return capital * rdmtNet \/ (1 - Math.pow(1 + rdmtNet, -annees));\n}\n\n\/\/ ============================================================\n\/\/ CALCUL PRINCIPAL\n\/\/ ============================================================\nlet chartBar = null, chartLine = null, chartMc = null;\n\nfunction calculer(){\n  const inp = lireInputs();\n  const profil = PROFILS[inp.risque];\n  const tmm = tmmFromRevenu(inp.revenu);\n  const tmmRetrait = tmmFromRevenu(inp.revenuRetraite);\n  const tauxImpotPlacement = tauxImposPlacement(inp.type, tmm);\n  const fraisDec = inp.frais \/ 100;\n  const inflation = inp.inflation \/ 100;\n\n  \/\/ Cotisations cap\u00e9es par plafonds\n  const cotMax = {\n    rrsp:    Math.min(inp.cotis, PLAFONDS.rrsp, inp.revenu * 0.18),\n    tfsa:    Math.min(inp.cotis, PLAFONDS.tfsa),\n    tfsaapp: Math.min(inp.cotis, PLAFONDS.tfsaapp),\n    resp:    Math.min(inp.cotis, 2500),\n    nonreg:  inp.cotis\n  };\n\n  \/\/ Trois sc\u00e9narios : pessimiste = rdmt - vol, r\u00e9aliste = rdmt, optimiste = rdmt + vol\n  const scenarios = {\n    pess: profil.rdmt - profil.vol * 0.7,\n    real: profil.rdmt,\n    opt:  profil.rdmt + profil.vol * 0.7\n  };\n\n  const calcRegime = (key, rdmt) => {\n    const cot = cotMax[key] || 0;\n    const ans = inp.horizon;\n\n    if (key === 'rrsp' || key === 'tfsa'){\n      const total = cot * ans;\n      const credit = total * tmm;\n      const brut = valeurFutureAvecFrais(cot, rdmt, ans, fraisDec);\n      const impotRetrait = brut * tmmRetrait;\n      return {cot:total, sub:credit, brut, impot:impotRetrait, net: brut - impotRetrait + credit};\n    }\n    if (key === 'tfsa'){\n      const total = cot * ans;\n      const brut = valeurFutureAvecFrais(cot, rdmt, ans, fraisDec);\n      return {cot:total, sub:0, brut, impot:0, net: brut};\n    }\n    if (key === 'tfsaapp'){\n      const ansMax = Math.min(ans, 5);\n      const total = Math.min(cot * ansMax, PLAFONDS.tfsaappVie);\n      const credit = total * tmm;\n      let v = 0;\n      for (let i = 0; i < ans; i++){\n        if (i < ansMax) v += cot;\n        v *= (1 + rdmt - fraisDec);\n      }\n      return {cot:total, sub:credit, brut:v, impot:0, net: v + credit};\n    }\n    if (key === 'resp'){\n      const total = cot * ans;\n      const subvAn = Math.min(cot * 0.30, PLAFONDS.scee + PLAFONDS.iqee);\n      const subvTot = Math.min(subvAn * ans, PLAFONDS.sceeVie + PLAFONDS.iqeeVie);\n      let v = 0, sc = 0;\n      for (let i = 0; i < ans; i++){\n        v += cot;\n        const sub = sc < (PLAFONDS.sceeVie + PLAFONDS.iqeeVie) ? Math.min(subvAn, (PLAFONDS.sceeVie + PLAFONDS.iqeeVie) - sc) : 0;\n        v += sub; sc += sub;\n        v *= (1 + rdmt - fraisDec);\n      }\n      const revenus = v - total - subvTot;\n      const impot = Math.max(0, (revenus + subvTot) * 0.15);\n      return {cot:total, sub:subvTot, brut:v, impot, net: v - impot};\n    }\n    if (key === 'nonreg'){\n      const total = cot * ans;\n      const traj = trajectoireNonReg(cot, rdmt, ans, fraisDec, tauxImpotPlacement);\n      const v = traj[traj.length - 1];\n      return {cot:total, sub:0, brut:v, impot:0, net: v};\n    }\n  };\n\n  const regs = ['rrsp','tfsa','tfsaapp','resp','nonreg'].map(key => {\n    const result = {\n      key,\n      name: nomRegime(key),\n      color: couleurRegime(key),\n      pess: calcRegime(key, scenarios.pess),\n      real: calcRegime(key, scenarios.real),\n      opt:  calcRegime(key, scenarios.opt)\n    };\n    \/\/ Frais cumul\u00e9s approximatifs\n    const fraisAn = inp.cotis * fraisDec * inp.horizon * 0.5; \/\/ approximation moyenne\n    result.frais = fraisAn;\n    return result;\n  });\n\n  \/\/ Recommandation\n  const reco = recommander(regs, inp, tmm);\n\n  \/\/ Monte Carlo sur le r\u00e9gime gagnant\n  const winnerKey = reco.reg.key;\n  const winnerCot = cotMax[winnerKey] || inp.cotis;\n  const isNonReg = winnerKey === 'nonreg';\n  const mc = monteCarlo(winnerCot, profil.rdmt, profil.vol, inp.horizon, fraisDec, tauxImpotPlacement, isNonReg);\n\n  \/\/ Phase d\u00e9caissement (sur m\u00e9diane Monte Carlo du r\u00e9gime gagnant)\n  const decaiss = inp.decaissement > 0 ? {\n    annuel: retraitSoutenable(mc.p50, inp.decaissement, scenarios.real - fraisDec - inflation),\n    duree: inp.decaissement,\n    ordre: ordreRetrait(reco.reg.key, tmm, tmmRetrait)\n  } : null;\n\n  rendreUI(regs, reco, mc, decaiss, inp, profil, tmm, tmmRetrait,\n``````html\nfraisDec, inflation);\n}\n\nfunction lireInputs(){\n  return {\n    revenu:        +document.getElementById('reg-revenu').value || 0,\n    revenuRetraite:+document.getElementById('reg-revenu-retraite').value || 0,\n    cotis:         +document.getElementById('reg-cotisation').value || 0,\n    horizon:       +document.getElementById('reg-horizon').value || 0,\n    decaissement:  +document.getElementById('reg-decaissement').value || 0,\n    frais:         +document.getElementById('reg-frais').value || 0,\n    inflation:     +document.getElementById('reg-inflation').value || 0,\n    risque:        activeVal('risque'),\n    type:          activeVal('type'),\n    objectif:      activeVal('objectif'),\n    conjoint:      activeVal('conjoint'),\n    strategie:     activeVal('strategie'),\n    affichage:     activeVal('affichage')\n  };\n}\n\nfunction nomRegime(k){\n  return {reer:'RRSP', celi:'TFSA', celiapp:'HBP', reee:'RESP', rver:'RPP', nonreg:'Non-registered'}[k];\n}\nfunction couleurRegime(k){\n  return {reer:'#10c4c7', celi:'#0e7490', celiapp:'#7c3aed', reee:'#f59e0b', rver:'#0891b2', nonreg:'#94a3b8'}[k];\n}\n\n\/\/ ============================================================\n\/\/ RECOMMENDATION (nuanced, educational)\n\/\/ ============================================================\nfunction recommander(regs, inp, tmm){\n  const get = (k) => regs.find(r => r.key === k);\n  let reg = null, why = '', nuance = '';\n\n  if (inp.objectif === 'propriete'){\n    reg = get('celiapp');\n    const bonus = inp.conjoint === 'couple' ? ' As a couple, each opens their HBP: $16,000\/year, up to $80,000 combined.' : '';\n    why = `With a goal of 1st property, the HBP is unbeatable: immediate tax deduction (~${(tmm*100).toFixed(1)}% return) AND tax-free withdrawals.${bonus}`;\n    nuance = `<strong>HBP advantageous if you buy in 15 years. <\/strong><strong>Otherwise: transfer RRSP without taxation, but you lose the advantage of tax-free withdrawals. <\/strong><strong>If property is uncertain: TFSA alone remains more flexible.`;\n  } else if (inp.objectif === 'etudes'){\n    reg = get('reee');\n    why = `The RESP generates 30% in automatic grants (20% federal + 10% Quebec) on the first $2,500\/year. No other vehicle offers such a high guaranteed return.`;\n    nuance = `<\/strong><strong>RESP advantageous if the child will pursue post-secondary studies. <\/strong><strong>If studies are uncertain: 20% tax on earnings + recovery of grants. Parental TFSA can be a more flexible Plan B.`;\n  } else if (inp.objectif === 'flexible'){\n    reg = get('celi');\n    why = `The TFSA allows free withdrawals at any time without any tax, and unused contribution room carries forward. The most versatile plan for accessible savings.`;\n    nuance = `<\/strong><strong>TFSA advantageous if you want flexibility. <\/strong><strong>However: withdrawals and recontributions in the same year can incur a 1%\/month penalty \u2014 a common trap.`;\n  } else {\n    \/\/ Retirement: RRSP vs TFSA decision based on current vs retirement marginal tax rate\n    const tmmR = tmmFromRevenu(inp.revenuRetraite);\n    if (tmm >= 0.37 && tmmR <= tmm - 0.05){\n      reg = get('reer');\n      why = `Your current MTR (${(tmm*100).toFixed(1)}%) is high, and your estimated MTR at retirement (${(tmmR*100).toFixed(1)}%) will be lower. The RRSP captures the difference: maximum deduction today, lower tax later. Combine with TFSA for flexibility.`;\n      nuance = `<\/strong><strong>RRSP advantageous if your retirement MTR remains lower. <\/strong><strong>If retirement MTR rises (splitting income, large RRSP): TFSA takes over. <\/strong><strong>Always reinvest the RRSP tax credit to capture the full advantage.`;\n    } else if (tmm <= 0.28){\n      reg = get('celi');\n      why = `Your current MTR (${(tmm*100).toFixed(1)}%) is moderate: the RRSP deduction is worth little, and you risk paying more tax on withdrawal. The TFSA avoids any tax on withdrawal and keeps you flexible.`;\n      nuance = `<\/strong><strong>TFSA advantageous if your MTR is \u2264 28%. <\/strong><strong>Keep your RRSP contribution room to use later when your income (and MTR) have increased. <\/strong><strong>If bonus\/promotion: switch to RRSP.`;\n    } else {\n      reg = get('reer');\n      why = `At your MTR (${(tmm*100).toFixed(1)}%), RRSP and TFSA are competitive. The RRSP prevails if your retirement MTR (${(tmmR*100).toFixed(1)}%) remains lower. A 50\/50 strategy or \u201cRRSP \u2192 TFSA\u201d is often optimal.`;\n      nuance = `<\/strong><strong>Mixed case: test the 50\/50 strategy or \u201cmax RRSP \u2192 TFSA\u201d in the options above. <\/strong><strong>Review every 5 years based on career, family, debts, projects evolution.`;\n    }\n  }\n  return {reg, why, nuance};\n}\n\n\/\/ Intelligent withdrawal order at retirement\nfunction ordreRetrait(winnerKey, tmm, tmmR){\n  if (tmmR <= tmm - 0.10){\n    return 'Withdraw the <\/strong><strong>RRSP first (up to filling the 27% MTR bracket), then the <\/strong><strong>TFSA next (tax-free). Keep the TFSA advantage for as long as possible.';\n  }\n  if (winnerKey === 'celi'){\n    return 'Withdraw the <\/strong><strong>non-registered first (low-tax capital gain), then <\/strong><strong>RRSP while smoothing to stay in the low bracket, and <\/strong><strong>TFSA last (prolonged tax-sheltered growth).';\n  }\n  return '\u201cBracket filling\u201d strategy: withdraw enough RRSP each year to <\/strong><strong>fill your lowest tax bracket (\u2264 $53,359), then complete with <\/strong><strong>TFSA tax-free. Optimizes total tax on withdrawal.';\n}\n\n\/\/ ============================================================\n\/\/ UI RENDERING\n\/\/ ============================================================\nfunction rendreUI(regs, reco, mc, decaiss, inp, profil, tmm, tmmR, fraisDec, inflation){\n  \/\/ Recommendation\n  document.getElementById('reg-reco-name').textContent = reco.reg.name;\n  document.getElementById('reg-reco-why').innerHTML = reco.why;\n  if (reco.nuance){\n    document.getElementById('reg-reco-nuance').style.display = 'block';\n    document.getElementById('reg-reco-nuance-text').innerHTML = reco.nuance;\n  }\n\n  \/\/ Nominal \u2192 real conversion if requested\n  const ajust = (n) => inp.affichage === 'reel' ? n \/ Math.pow(1 + inflation, inp.horizon) : n;\n\n  \/\/ Monte Carlo stats\n  document.getElementById('reg-mc-stats').style.display = 'grid';\n  document.getElementById('reg-mc-p10').textContent = fmt(ajust(mc.p10));\n  document.getElementById('reg-mc-p50').textContent = fmt(ajust(mc.p50));\n  document.getElementById('reg-mc-p90').textContent = fmt(ajust(mc.p90));\n\n  \/\/ Bar chart: 3 scenarios per regime\n  if (chartBar) chartBar.destroy();\n  const sortedReal = [...regs].sort((a,b) => b.real.net - a.real.net);\n  chartBar = new Chart(document.getElementById('reg-chart-bar'), {\n    type:'bar',\n    data:{\n      labels: sortedReal.map(r => r.name),\n      datasets:[\n        {label:'Pessimistic', data: sortedReal.map(r => Math.round(ajust(r.pess.net))), backgroundColor:'#fca5a5', borderRadius:4},\n        {label:'Realistic',   data: sortedReal.map(r => Math.round(ajust(r.real.net))), backgroundColor: sortedReal.map(r => r.color), borderRadius:4},\n        {label:'Optimistic',  data: sortedReal.map(r => Math.round(ajust(r.opt.net))),  backgroundColor:'#86efac', borderRadius:4}\n      ]\n    },\n    options:{\n      responsive:true, maintainAspectRatio:false,\n      plugins:{\n        legend:{position:'bottom', labels:{color:'#fff', font:{size:11}, boxWidth:12}},\n        tooltip:{callbacks:{label: c => c.dataset.label + ': $ ' + c.parsed.y.toLocaleString('en-US')}}\n      },\n      scales:{\n        y:{ticks:{callback: v => '$' + (v\/1000).toFixed(0) + 'k', color:'#94a3b8'}, grid:{color:'#1e3a52'}},\n        x:{grid:{display:false}, ticks:{color:'#fff', font:{size:11, weight:'600'}}}\n      }\n    }\n  });\n\n  \/\/ Line chart: realistic trajectory with fees\n  const labels = Array.from({length: inp.horizon + 1}, (_,i) => 'Year ' + i);\n``````html\n  const tauxImpotPlacement = tauxImposPlacement(inp.type, tmm);\n  const datasets = regs.filter(r => r.key !== 'rver').map(r => {\n    let traj;\n    if (r.key === 'nonreg'){\n      traj = trajectoireNonReg(inp.cotis, profil.rdmt, inp.horizon, fraisDec, tauxImpotPlacement);\n    } else if (r.key === 'celiapp'){\n      const ansMax = Math.min(inp.horizon, 5);\n      let v = 0; const arr = [0];\n      for (let i = 0; i < inp.horizon; i++){\n        if (i < ansMax) v += Math.min(inp.cotis, PLAFONDS.celiapp);\n        v *= (1 + profil.rdmt - fraisDec);\n        arr.push(v);\n      }\n      traj = arr;\n    } else if (r.key === 'reee'){\n      const cot = Math.min(inp.cotis, 2500);\n      let v = 0, sc = 0; const arr = [0];\n      for (let i = 0; i < inp.horizon; i++){\n        v += cot;\n        const sub = sc < (PLAFONDS.sceeVie + PLAFONDS.iqeeVie) ? Math.min(cot * 0.30, (PLAFONDS.sceeVie + PLAFONDS.iqeeVie) - sc) : 0;\n        v += sub; sc += sub;\n        v *= (1 + profil.rdmt - fraisDec);\n        arr.push(v);\n      }\n      traj = arr;\n    } else {\n      const cot = (r.key === 'reer') ? Math.min(inp.cotis, PLAFONDS.reer, inp.revenu * 0.18) : Math.min(inp.cotis, PLAFONDS.celi);\n      traj = trajectoire(cot, profil.rdmt, inp.horizon, fraisDec);\n    }\n    return {\n      label: r.name,\n      data: traj.map(v => Math.round(ajust(v))),\n      borderColor: r.color,\n      backgroundColor: r.color + '20',\n      fill:false, tension:.3, pointRadius:0, borderWidth:2.5\n    };\n  });\n  if (chartLine) chartLine.destroy();\n  chartLine = new Chart(document.getElementById('reg-chart-line'), {\n    type:'line', data:{labels, datasets},\n    options:{\n      responsive:true, maintainAspectRatio:false,\n      plugins:{legend:{position:'bottom', labels:{color:'#fff', font:{size:11}, boxWidth:14}}, tooltip:{callbacks:{label: c => c.dataset.label + ': $ ' + c.parsed.y.toLocaleString('en-US')}}},\n      scales:{\n        y:{ticks:{callback: v => '$' + (v\/1000).toFixed(0) + 'k', color:'#94a3b8'}, grid:{color:'#1e3a52'}},\n        x:{grid:{display:false}, ticks:{color:'#94a3b8', maxTicksLimit:8}}\n      }\n    }\n  });\n\n  \/\/ Monte Carlo histogram (on the winning regime)\n  const buckets = monteCarloHist(reco.reg, inp, profil, fraisDec, tauxImpotPlacement);\n  if (chartMc) chartMc.destroy();\n  chartMc = new Chart(document.getElementById('reg-chart-mc'), {\n    type:'bar',\n    data:{\n      labels: buckets.map(b => '$' + (b.min\/1000).toFixed(0) + 'k\u2013' + (b.max\/1000).toFixed(0) + 'k'),\n      datasets:[{\n        data: buckets.map(b => b.count),\n        backgroundColor: buckets.map(b => b.median ? '#10c4c7' : '#475569'),\n        borderRadius:3\n      }]\n    },\n    options:{\n      responsive:true, maintainAspectRatio:false,\n      plugins:{legend:{display:false}, tooltip:{callbacks:{label: c => c.parsed.y + ' simulations out of 500'}}},\n      scales:{\n        y:{ticks:{color:'#94a3b8', stepSize:20}, grid:{color:'#1e3a52'}, title:{display:true, text:'Number of simulations', color:'#94a3b8', font:{size:11}}},\n        x:{grid:{display:false}, ticks:{color:'#94a3b8', font:{size:10}, maxRotation:45, minRotation:45}}\n      }\n    }\n  });\n\n  \/\/ Table\n  const fraisCum = (inp.cotis * inp.horizon) * fraisDec * (inp.horizon \/ 2);\n  const tbody = document.querySelector('#reg-table tbody');\n  tbody.innerHTML = sortedReal.map((r,i) => `\n    <tr class=\"${i===0 ? 'reg-best' : ''}\">\n      <td class=\"reg-name\">${r.name}${i===0 ? ' \ud83c\udfc6' : ''}\n      <\/td><td class=\"num\">${fmt(ajust(r.real.cot))}\n      <\/td><td class=\"num\">${r.real.sub > 0 ? fmt(ajust(r.real.sub)) : '\u2014'}\n      <\/td><td class=\"num\" style=\"color:#dc2626\">\u2212${fmt(fraisCum)}\n      <\/td><td class=\"num\" style=\"color:#ef4444\">${fmt(ajust(r.pess.net))}\n      <\/td><td class=\"num\"><strong>${fmt(ajust(r.real.net))}\n      <td class=\"num\" style=\"color:#16a34a\">${fmt(ajust(r.opt.net))}\n    `).join('');\n\n  \/\/ Decumulation phase\n  if (decaiss && inp.decaissement > 0){\n    document.getElementById('reg-decaiss-box').style.display = 'block';\n    document.getElementById('reg-dec-annuel').textContent = fmt(decaiss.annuel);\n    document.getElementById('reg-dec-mensuel').textContent = fmt(decaiss.annuel \/ 12);\n    document.getElementById('reg-dec-duree').textContent = decaiss.duree + ' years';\n    document.getElementById('reg-dec-ordre').innerHTML = decaiss.ordre;\n  } else {\n    document.getElementById('reg-decaiss-box').style.display = 'none';\n  }\n\n  \/\/ Transparent assumptions\n  const hyp = document.getElementById('reg-hypotheses');\n  hyp.innerHTML = `\n    <li><strong>Profile ${inp.risque} : ${profil.label} \u2192 average nominal return <\/strong><strong>${(profil.rdmt*100).toFixed(1)} %, volatility \u00b1${(profil.vol*100).toFixed(1)} %\n    <li><strong>Management fees : ${(fraisDec*100).toFixed(2)} % per year, deducted each year from the return (compound impact over the horizon)\n    <li><strong>Inflation : ${(inflation*100).toFixed(1)} % per year \u2014 current display: <\/strong><strong>${inp.affichage === 'reel' ? '$ today (inflation-adjusted)' : '$ future (nominal)'}\n    <li><strong>Current TMM : ${(tmm*100).toFixed(2)} % (income ${fmt(inp.revenu)}) \u2014 <\/strong><strong>Withdrawal TMM : ${(tmmR*100).toFixed(2)} % (retirement income ${fmt(inp.revenuRetraite)})\n    <li><strong>2026 limits applied: RRSP ${(inp.revenu*0.18).toFixed(0) > PLAFONDS.reer ? PLAFONDS.reer : (inp.revenu*0.18).toFixed(0)} $ \/ TFSA 7,000 $ \/ TFSA APP 8,000 $\/year \/ RESP 2,500 $\/year for full grants\n    <li><strong>RESP grants: SCEE 20 % + IQEE 10 % = 30 % on the first 2,500 $\/year (max 750 $\/year, 10,800 $ lifetime)\n    <li><strong>Monte Carlo: 500 simulations, normal distribution around expected return, percentiles 10\/50\/90\n    <li><strong>Decumulation: actuarial annuity (net real return = return \u2212 fees \u2212 inflation)\n    <li><strong>RRSP\/RVER exit: full tax at retirement TMM \u2014 <\/strong><strong>TFSA\/TFSA APP\/RESP: tax-free exit (for contributor)\n  `;\n}\n\n\/\/ Monte Carlo histogram (10 buckets)\nfunction monteCarloHist(reg, inp, profil, fraisDec, tauxImpotPlacement){\n  const SIMS = 500;\n  const cot = inp.cotis;\n  const isNonReg = reg.key === 'nonreg';\n  const results = [];\n  for (let s = 0; s < SIMS; s++){\n    let v = 0;\n    for (let i = 0; i < inp.horizon; i++){\n      const rdmt = profil.rdmt + profil.vol * gaussRand();\n      v += cot;\n      if (isNonReg){\n        const rendBrut = v * (rdmt - fraisDec);\n        v += rendBrut - Math.max(0, rendBrut * tauxImpotPlacement);\n      } else {\n        v *= (1 + rdmt - fraisDec);\n      }\n    }\n    results.push(v);\n  }\n  results.sort((a,b)=>a-b);\n  const min = results[0], max = results[results.length-1];\n  const median = results[Math.floor(SIMS*0.5)];\n  const N = 12;\n  const step = (max - min) \/ N;\n  const buckets = [];\n  for (let i = 0; i < N; i++){\n    const lo = min + i*step;\n    const hi = min + (i+1)*step;\n    const count = results.filter(v => v >= lo && (i === N-1 ? v <= hi : v < hi)).length;\n    buckets.push({min:lo, max:hi, count, median: median >= lo && median < hi});\n  }\n  return buckets;\n}\n\nfunction fmt(n){\n  if (Math.abs(n) >= 1e6) return '$ ' + (n\/1e6).toFixed(2) + ' M';\n  return '$ ' + Math.round(n).toLocaleString('en-US');\n}\nfunction activeVal(group){\n  const btn = document.querySelector(`.regimes-radios[data-group=\"${group}\"] button.active`);\n  return btn ? btn.dataset.val : null;\n}\n\n\/\/ ============================================================\n\/\/ PRESETS\n\/\/ ============================================================\nfunction appliquerPreset(key){\n  const p = PRESETS[key]; if (!p) return;\n  document.getElementById('reg-revenu').value = p.revenu;\n  document.getElementById('reg-revenu-retraite').value = p.revenuR;\n  document.getElementById('reg-cotisation').value = p.cotis;\n  document.getElementById('reg-horizon').value = p.horizon;\n  document.getElementById('reg-decaissement').value = p.decaiss;\n  document.getElementById('reg-frais').value = p.frais;\n  ['conjoint','risque','type','objectif','strategie'].forEach(g => {\n    const wantVal = p[g];\n    document.querySelector(`.regimes-radios[data-group=\"${g}\"] button[data-val=\"${wantVal}\"]`).click();\n  });\n}\n``````html\nelectorAll(`.regimes-radios[data-group=\"${g}\"] button`).forEach(b => {\n      b.classList.toggle('active', b.dataset.val === wantVal);\n    });\n  });\n  calculer();\n}\n\n\/\/ ============================================================\n\/\/ BIND EVENTS\n\/\/ ============================================================\ndocument.querySelectorAll('.regimes-radios').forEach(g => {\n  g.addEventListener('click', e => {\n    if (e.target.tagName !== 'BUTTON') return;\n    g.querySelectorAll('button').forEach(b => b.classList.remove('active'));\n    e.target.classList.add('active');\n    calculer();\n  });\n});\n['reg-revenu','reg-revenu-retraite','reg-cotisation','reg-horizon','reg-decaissement','reg-frais','reg-inflation'].forEach(id => {\n  document.getElementById(id).addEventListener('input', calculer);\n});\ndocument.querySelectorAll('.regimes-preset').forEach(b => {\n  b.addEventListener('click', () => appliquerPreset(b.dataset.preset));\n});\n\n\/\/ First calculation\ncalculer();\n})();\n<\/strong><\/li><\/strong><\/li><\/strong><\/li><\/strong><\/li><\/strong><\/li><\/strong><\/li><\/strong><\/li><\/strong><\/li><\/strong><\/li><\/td><\/strong><\/td><\/tr><\/strong><\/script>\n<!-- rg-info-tap-handler -->\n\n<script>\n(function(){\n  \/\/ Tap mobile = toggle tooltip (no hover on mobile)\n  document.addEventListener('click', e => {\n    const tip = e.target.closest('.rg-info');\n    if (tip){\n      e.preventDefault();\n      document.querySelectorAll('.rg-info.rg-active').forEach(el => { if(el !== tip) el.classList.remove('rg-active'); });\n      tip.classList.toggle('rg-active');\n    } else {\n      document.querySelectorAll('.rg-info.rg-active').forEach(el => el.classList.remove('rg-active'));\n    }\n  });\n})();\n<\/script>\n\n\n\n\n<div class=\"regimes-section\">\n<h2><span class=\"ez-toc-section\" id=\"Why-the-chosen-diet-changes-everything\"><\/span>Why the chosen diet changes everything<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"lead\">Investments earn three types of income: <strong>interest, dividends and capital gains<\/strong>. In Quebec, this income is not taxed in the same way. But within a registered plan (RRSP, TFSA, FSASA, RESP, VRSP), <strong>this distinction disappears<\/strong> : everything grows tax-free.  <\/p>\n\n<table class=\"regimes-tax-table\">\n<thead><tr><th>Type of income<\/th><th>Taxable inclusion<\/th><th>Effective MMR rate 50%<\/th><\/tr><\/thead>\n<tbody>\n<tr><td><strong>Interest<\/strong> (GICs, bonds, savings accounts)<\/td><td>100%<\/td><td>\u2248 50%<\/td><\/tr>\n<tr><td><strong>Eligible dividends<\/strong> (large Canadian corporations)<\/td><td>~ 138% gross, with tax credit<\/td><td>\u2248 36%<\/td><\/tr>\n<tr><td><strong>Non-eligible dividends<\/strong> (SMEs)<\/td><td>~ 115% gross, reduced credit<\/td><td>\u2248 47%<\/td><\/tr>\n<tr><td><strong>Capital gain<\/strong> (shares, resold funds)<\/td><td>50%<\/td><td>\u2248 25%<\/td><\/tr>\n<\/tbody>\n<\/table>\n\n<p style=\"margin-top:14px;color:#475569;font-size:14.5px\">Within an RRSP, TFSA, FHSA, RESP, VRSP or RDSP, <strong>the type of income is no longer of tax importance<\/strong>. This is the major advantage of these vehicles. <\/p>\n<\/div>\n\n<div class=\"regimes-section\">\n<h2><span class=\"ez-toc-section\" id=\"The-silent-impact-of-management-fees\"><\/span>The silent impact of management fees<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"lead\">Over 30 years, a management fee of 2% vs. 0.5% can cost you <strong>more than $100,000<\/strong> on a $200,000 portfolio. This is the most expensive blind spot in financial planning. <\/p>\n\n<table class=\"regimes-tax-table\">\n<thead><tr><th>Annual Fee<\/th><th>Typical Product Type<\/th><th>Final Capital $200K \u00d7 30 Years @ 6% Gross<\/th><th>Total Cost of Fees<\/th><\/tr><\/thead>\n<tbody>\n<tr><td><strong>0.25%<\/strong><\/td><td>Index ETF (XAW, VEQT, ZGRO)<\/td><td>$1,026,000<\/td><td>$50,000<\/td><\/tr>\n<tr><td><strong>0.75%<\/strong><\/td><td>Bank Index Fund (Tangerine)<\/td><td>$934,000<\/td><td>$142,000<\/td><\/tr>\n<tr><td><strong>1.50%<\/strong><\/td><td>Mutual Fund (median MER)<\/td><td>$807,000<\/td><td>$269,000<\/td><\/tr>\n<tr><td><strong>2.25%<\/strong><\/td><td>Back-end sales charge fund<\/td><td>$695,000<\/td><td>$381,000<\/td><\/tr>\n<\/tbody>\n<\/table>\n<p style=\"margin-top:12px;color:#475569;font-size:14.5px\">The fees add up: the fund&#8217;s MER (0.1% to 2.5%) + advisor fees (0% to 1.5%) + transaction fees. Always ask for the <strong>total MER<\/strong> and <strong>consulting fee<\/strong> before signing. The simulator above includes a fresh field \u2014 test the actual impact on your case.  <\/p>\n<\/div>\n\n<div class=\"regimes-section\">\n<h2><span class=\"ez-toc-section\" id=\"Risk-what-the-%E2%80%9Caverage%E2%80%9D-numbers-hide\"><\/span>Risk: what the &#8220;average&#8221; numbers hide<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"lead\">An average return of 6% does not mean 6% every year. The markets are -20% one year, +30% the next. This volatility changes everything, especially when you cash out.  <\/p>\n\n<div class=\"regimes-cards3\">\n<div class=\"regimes-card\">\n<h3>Cautious profile<\/h3>\n<p><strong>60% bonds \/ 40% equities<\/strong><\/p>\n<ul>\n<li>Expected return: <strong>~ 4%<\/strong><\/li>\n<li>Volatility (standard deviation): \u00b1 4%<\/li>\n<li>Worst year ever: ~ \u221210%<\/li>\n<li>Suitable: short horizon (< 7 years), strong risk aversion<\/li>\n<\/ul>\n<\/div>\n<div class=\"regimes-card\">\n<h3>Balanced profile<\/h3>\n<p><strong>40% bonds \/ 60% equities<\/strong><\/p>\n<ul>\n<li>Expected return: <strong>~5.5%<\/strong><\/li>\n<li>Volatility: \u00b1 8%<\/li>\n<li>Worst year ever: ~ \u221220%<\/li>\n<li>Suitable: 7-15 year horizon, moderate tolerance<\/li>\n<\/ul>\n<\/div>\n<div class=\"regimes-card\">\n<h3>Aggressive profile<\/h3>\n<p><strong>20% bonds \/ 80% equities<\/strong><\/p>\n<ul>\n<li>Expected return: <strong>~7.5%<\/strong><\/li>\n<li>Volatility: \u00b1 14%<\/li>\n<li>Worst year ever: ~ \u221235%<\/li>\n<li>Suitable: 15+ year horizon, high tolerance<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n<div class=\"regimes-tip\">\n<strong>\ud83d\udca1 Why 500 simulations?<\/strong> Our Monte Carlo does not give a single figure, but a <strong>distribution<\/strong>. The P10 (worst 10%), P50 (median), and P90 (best 10%) give you a realistic range. If the gap between P10 and P90 is huge, your profile is too risky for your horizon \u2014 adjust.  \n<\/div>\n<\/div>\n\n<div class=\"regimes-section\">\n<h2><span class=\"ez-toc-section\" id=\"Disbursement-phase-the-great-forgotten-one\"><\/span>Disbursement phase: the great forgotten one<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"lead\">Accumulating $1 million is useless if you deplete it in 12 years. The <strong>withdrawal sequence<\/strong> and <strong>smart order<\/strong> between your accounts can double the length of your savings. <\/p>\n\n<table class=\"regimes-tax-table\">\n<thead><tr><th>Strategy<\/th><th>Advantage<\/th><th>When to use<\/th><\/tr><\/thead>\n<tbody>\n<tr><td><strong>RRSP first, TFSA second<\/strong><\/td><td>Avoid high MMR on large RRSP later<\/td><td>retirement MMT < current MMR, no employer pension<\/td><\/tr>\n<tr><td><strong>Bracket filling<\/strong><\/td><td>Fills the bottom 27% each year with a Standard RRSP<\/td><td>recommended by financial planners<\/td><\/tr>\n<tr><td><strong>TFSA first<\/strong><\/td><td>RRSP custody for inheritance, tax deferral<\/td><td>If large estate expected (RRSP 100% taxable at death)<\/td><\/tr>\n<tr><td><strong>Non-registered first<\/strong><\/td><td>Realizes low-taxed capital gains early<\/td><td>If large non-registered account + taxed RRSP\/TFSA<\/td><\/tr>\n<\/tbody>\n<\/table>\n<p style=\"margin-top:12px;color:#475569;font-size:14.5px\"><strong>The simulator above<\/strong> calculates the sustainable annual withdrawal based on an actuarial annuity (net return after inflation \u00d7 fees), and recommends the smart order based on your current MMR vs. retirement.<\/p>\n<\/div>\n\n<div class=\"regimes-section\">\n<h2><span class=\"ez-toc-section\" id=\"The-6-diets-in-detail\"><\/span>The 6 diets in detail<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"lead\">Each plan has a goal. Understanding how they work prevents you from using the wrong vehicle. <\/p>\n\n<div class=\"regimes-cards2\">\n\n<div class=\"regimes-card\">\n<h3>RRSP \u2014 Retirement<\/h3>\n<p>The <strong>Registered Retirement Savings Plan<\/strong> allows you to invest while saving on taxes, most often in anticipation of retirement.<\/p>\n<ul>\n<li>Contribute <strong>reduces your tax<\/strong> immediately (to your MMR)<\/li>\n<li>Investment <strong>grows tax-free<\/strong><\/li>\n<li>You pay tax on the amounts <strong>withdrawn<\/strong> (at the MMR of the moment)<\/li>\n<li>2026 Cap: <strong>18% of Revenue, max $32,490<\/strong><\/li>\n<li>Contribution deadline: <strong>March 1, 2027<\/strong> for the year 2026<\/li>\n<\/ul>\n<\/div>\n\n<div class=\"regimes-card\">\n<h3>TFSA \u2014 Full flexibility<\/h3>\n<p>The <strong>Tax-Free Savings Account<\/strong>\n&#8220;&#8220;&#8220;html\nt<\/strong> grows your investments <strong>tax-free at the end<\/strong>.<\/p>\n<ul>\n<li>Contributing does <strong>NOT<\/strong> reduce your taxes<\/li>\n<li>Investment grows tax-free<\/li>\n<li><strong>No tax<\/strong> on withdrawals<\/li>\n<li>2026 limit: <strong>$7,000\/year<\/strong>, entitlements accruing for 18 years<\/li>\n<li>Maximum life for 2026 (born in 1991 or earlier): <strong>$102,000<\/strong><\/li>\n<\/ul>\n<\/div>\n\n<div class=\"regimes-card\">\n<h3>FHSA \u2014 1st property<\/h3>\n<p>The <strong>Tax-Free First Home Savings Account<\/strong> combines RRSP + TFSA benefits.<\/p>\n<ul>\n<li><strong>Tax-deductible<\/strong> contributions (such as RRSPs)<\/li>\n<li>Tax-deferred growth<\/li>\n<li><strong>Tax-free withdrawals<\/strong> for a 1st home (such as a TFSA)<\/li>\n<li>Cap: <strong>$8,000\/year, $40,000 lifetime<\/strong><\/li>\n<li>As a couple: each spouse can contribute \u2192 <strong>$16,000\/year, $80,000 for life<\/strong><\/li>\n<li>Must be used within <strong>15 years<\/strong> of opening<\/li>\n<\/ul>\n<\/div>\n\n<div class=\"regimes-card\">\n<h3>RESP \u2014 Child&#8217;s Education<\/h3>\n<p>The <strong>Registered Education Savings Plan<\/strong> attracts up to <strong>30% government grants<\/strong> (CESG + QESI).<\/p>\n<ul>\n<li>Contributing does not reduce your taxes<\/li>\n<li><strong>Federal CESG 20%<\/strong> on the first $2,500\/year (max $500\/year, $7,200 lifetime)<\/li>\n<li><strong>QESI Quebec 10%<\/strong> on the first $2,500\/year (max $250\/year, $3,600 lifetime)<\/li>\n<li>Tax-deferred growth<\/li>\n<li>Withdrawals: <strong>Your contributions<\/strong> come out tax-free; <strong>the student<\/strong> pays income tax + subsidies (at his MMT, often ~15%)<\/li>\n<li>Life limit: <strong>$50,000 per child<\/strong><\/li>\n<\/ul>\n<\/div>\n\n<div class=\"regimes-card\">\n<h3>VRSP \u2014 Employer Plan<\/h3>\n<p>The <strong>Voluntary Retirement Savings Plan<\/strong> is a retirement vehicle offered by certain employers in Quebec, based on payroll deductions.<\/p>\n<ul>\n<li>Payroll <strong>deductions reduce taxes<\/strong> at source<\/li>\n<li>Tax-deferred growth (such as RRSPs)<\/li>\n<li>Taxed withdrawals (such as RRSPs)<\/li>\n<li><strong>Voluntary<\/strong> participation, you can opt out<\/li>\n<li>Management fees are often <strong>lower<\/strong> than an individual RRSP (employer-negotiated benefit)<\/li>\n<\/ul>\n<\/div>\n\n<div class=\"regimes-card\">\n<h3>RDSP \u2014 Safety of a person with a disability<\/h3>\n<p>The <strong>Registered Disability Savings Plan provides long-term<\/strong> financial security for a person who is eligible for the Disability Credit.<\/p>\n<ul>\n<li>Contributing does not reduce your taxes<\/li>\n<li>The government is adding the <strong>CDSG<\/strong> (grant) up to $3,500\/year and the <strong>CDSG<\/strong> (bond) up to $1,000\/year for low incomes<\/li>\n<li>Tax-deferred growth<\/li>\n<li>Your contributions come out tax-free; the person pays income tax + subsidies<\/li>\n<li>Life ceiling: <strong>$200,000<\/strong><\/li>\n<li>Grants available up to <strong>age 49<\/strong> of the beneficiary<\/li>\n<\/ul>\n<\/div>\n\n<\/div>\n<\/div>\n\n<div class=\"regimes-section\">\n<h2><span class=\"ez-toc-section\" id=\"Combined-strategies-tested-in-the-simulator\"><\/span>Combined strategies (tested in the simulator)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"lead\">No diet alone is optimal for the majority. Real strategies combine several diets depending on the profile. <\/p>\n\n<table class=\"regimes-tax-table\">\n<thead><tr><th>Logical Strategy<\/th><th><\/th><th>Ideal Profile<\/th><\/tr><\/thead>\n<tbody>\n<tr><td><strong>50% RRSP \/ 50% TFSA<\/strong><\/td><td>Balance immediate deduction + long-term flexibility<\/td><td>Employee 30-50 years old, MMR 30-37%, retirement horizon<\/td><\/tr>\n<tr><td><strong>RRSP max \u2192 TFSA<\/strong><\/td><td>Maximizes RRSP First Deduction (limits), High Income TFSA Surplus<\/td><td>, MMR\u2265 37%, Savings Capacity \u2265 $12,000\/year<\/td><\/tr>\n<tr><td><strong>FHSA \u2192 RRSP<\/strong><\/td><td>FHSA $8,000\/year for 5 years ($40,000), then RRSP then<\/td><td>1st Home Buyer 25-35 years<\/td><\/tr>\n<tr><td><strong>RESP 2500 + RRSP + TFSA<\/strong><\/td><td>RESP for subv 30%, RRSP for deduction, TFSA for the rest Parent,<\/td><td>young child + savings capacity\u2265 $8,000\/year<\/td><\/tr>\n<tr><td><strong>Auto Optim (according to MMR)<\/strong><\/td><td>The algorithm chooses the best ratio according to your current MMR vs retirement<\/td><td>All profiles, to be validated with a F.Pl. <\/td><\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<div class=\"regimes-section\">\n<h2><span class=\"ez-toc-section\" id=\"2026-Limits-and-Fees-%E2%80%94-Summary\"><\/span>2026 Limits and Fees \u2014 Summary<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<table class=\"regimes-tax-table\">\n<thead><tr><th>Plan<\/th><th>Maximum annual contribution<\/th><th>Lifetime limit<\/th><th>Deadline<\/th><\/tr><\/thead>\n<tbody>\n<tr><td><strong>RRSP<\/strong><\/td><td>18% of income, max $32,490None<\/td><td> <\/td><td>March 1, 2027<\/td><\/tr>\n<tr><td><strong>TFSA<\/strong><\/td><td>$7,000Cumulative<\/td> <td>for 18 years ($102,000 for those born in 1991)<\/td><td>December 31, 2026<\/td><\/tr>\n<tr><td><strong>FHSA $<\/strong><\/td><td>8,000<\/td>$<td>40,000December<\/td> <td>31, 2026<\/td><\/tr>\n<tr><td><strong>RESP<\/strong><\/td><td>None, but Full CESG on $2,500<\/td>$<td>50,000\/child<\/td><td>December 31, 2026<\/td><\/tr>\n<tr><td><strong>CESG + QESI<\/strong><\/td><td>$500 + $250\/year<\/td><td>$7,200 + $3,600December<\/td> <td>31, 2026<\/td><\/tr>\n<tr><td><strong>RDSP<\/strong><\/td><td>None<\/td><td>$200,000December<\/td> <td>31, 2026<\/td><\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<div class=\"regimes-section\">\n<h2><span class=\"ez-toc-section\" id=\"Frequently-Asked-Questions\"><\/span>Frequently Asked Questions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"regimes-faq\">\n\n<details><summary>Is it better to contribute to an RRSP or TFSA in 2026?<\/summary>\n<div class=\"faq-body\"><strong>An advantageous RRSP if<\/strong> your current MMR \u2265 30% AND you plan to exit at a lower MMR. <strong>TFSA is advantageous if<\/strong> your MMR is \u2264 28% OR your retirement MMR may be higher (large RRSP, employer pension, inheritance). In both cases, <strong>combining<\/strong> the two is almost always optimal \u2014 test the &#8220;50\/50&#8221; or &#8220;RRSP max \u2192 TFSA&#8221; strategy in the simulator. <\/div><\/details>\n\n<details><summary>Why do my calculations show 3 different results?<\/summary>\n<div class=\"faq-body\">Because the markets do not give a constant return. The <strong>3 scenarios<\/strong> (pessimistic, realistic, optimistic) reflect the real volatility of your risk profile. The <strong>pessimistic<\/strong> scenario = expected return \u2212 0.7 \u00d7 standard deviation; <strong>optimistic<\/strong> = yield + 0.7 \u00d7 standard deviation. The <strong>Monte Carlo simulation (500 iterations)<\/strong> also gives the complete distribution of possible results. If the gap between P10 and P90 is too wide for your tolerance, adjust your risk profile.    <\/div><\/details>\n\n<details><summary>How do management fees impact my bottom line?<\/summary>\n<div class=\"faq-body\">A lot. Over 30 years with $200,000 of capital, going from <strong>2% to 0.5% in fees<\/strong> can save <strong>more than $200,000<\/strong>. Fees are deducted from the return each year, so the compounding effect is massive. The &#8220;Management Fees&#8221; field in the simulator incorporates your actual MER \u2014 test 0.25% (index ETFs), 0.75% (bank index funds) and 2% (typical mutual funds).   <\/div><\/details>\n\n<details><summary>What is the difference between nominal and real return?<\/summary>\n<div class=\"faq-body\">The <strong>nominal return<\/strong> is the gross return posted (e.g. 6%). The <strong>real return<\/strong> is the return after inflation (e.g. 6% \u2212 2.1% inflation = 3.9%). The simulator allows you to switch the display between <strong>&#8220;future $&#8221;<\/strong> (nominal, like your bank statement in 25 years) and <strong>&#8220;today&#8217;s $&#8221;<\/strong> (real, what you&#8217;ll actually be able to buy). To plan for retirement, <strong>look at today&#8217;s $<\/strong>s.   <\/div><\/details>\n\n<details><summary>What happens if I exceed the contribution limits?<\/summary>\n<div class=\"faq-body\"><strong>Penalty of 1% per month<\/strong> on the excess (TFSA, FHSA, RRSP over $2,000 in line of credit). That&#8217;s 12% per year. For the TFSA, the CRA has a poor tolerance for withdrawals and recontributions in the same year \u2014 a common pitfall. Check your entitlements on <strong>My CRA Account<\/strong> before each major assessment.   <\/div><\/details>\n\n<details><summary>How does the spousal RRSP work?<\/summary>\n&#8220;&#8220;&#8220;html\n<summary>\n<div class=\"faq-body\">The higher-income spouse contributes to the RRSP on behalf of the lower-income spouse. The <strong>tax deduction<\/strong> goes to the contributor (high MMR), but the <strong>withdrawal<\/strong> will be taxed on the beneficiary (low MMR). Classic retirement income splitting strategy. The amounts must remain in the spousal RRSP for <strong>a full 3 years<\/strong> before withdrawal, otherwise they are allocated to the contributor.   <\/div><\/details>\n\n<details><summary>What is the optimal order to withdraw in retirement?<\/summary>\n<div class=\"faq-body\">Standard case: <strong>bracket filling<\/strong> \u2014 each year, withdraw from the RRSP until you fill the 27% MMR bracket (up to $53,359 of income in 2026), then top up with the tax-free TFSA. If the MMR is very low (< current MMR \u221210%),   <strong>empty the RRSP faster<\/strong>. If large inheritance is expected, <strong>empty non-registered + TFSA first<\/strong> to defer the tax on the RRSP at death. A F. Pl. can refine the sequence.    <\/div>\n\n<details><summary>Is the FHSA really better for buying my first home?<\/summary>\n<div class=\"faq-body\">Yes \u2014 it&#8217;s the only plan that combines <strong>tax-deductible contributions<\/strong> (like RRSPs) AND <strong>tax-free withdrawals<\/strong> for the purchase (like TFSAs). As a couple, each spouse can contribute up to $8,000\/year ($16,000 combined). The FHSA must be used within 15 years of opening, otherwise the balance is transferred to your RRSP (tax-free).  <\/div><\/details>\n\n<details><summary>How much does the RESP earn in grants?<\/summary>\n<div class=\"faq-body\">On the first <strong>$2,500\/year contributed<\/strong> : <strong>30%<\/strong> automatic = 20% federal CESG ($500\/year, $7,200 life) + QESI Quebec 10% ($250\/year, $3,600 life). Possible total per child: <strong>$10,800<\/strong> in grants. For low-income families, the CEB adds up to $2,000 more.  <\/div><\/details>\n\n<details><summary>Who can help me validate my strategy?<\/summary>\n<div class=\"faq-body\">In Quebec, investment advice is regulated by the <strong>AMF (Autorit\u00e9 des march\u00e9s financiers).<\/strong> Talk to a <strong>registered financial planner (F. Pl.), investment advisor or mutual fund representative<\/strong> . Check the <a href=\"https:\/\/lautorite.qc.ca\/grand-public\/registres\" target=\"_blank\" rel=\"nofollow\">AMF register<\/a>. Beware of unsupervised advice: a poor choice of strategy can cost tens of thousands of dollars over 30 years.   <\/div><\/details>\n\n<\/details><\/div>\n<\/div>\n\n<div class=\"regimes-eeat\">\n<div class=\"item\"><div class=\"check\">\u2713<\/div><p><strong>2026 Settings Verified<\/strong>Up-to-date RRSP, TFSA, FHSA, RESP and combined Quebec + federal MMT brackets.<\/p><\/div>\n<div class=\"item\"><div class=\"check\">\u2713<\/div><p><strong>Transparent methodology<\/strong>Assumptions displayed (yield, fees, inflation, MMR) \u2014 no black boxes.<\/p><\/div>\n<div class=\"item\"><div class=\"check\">\u2713<\/div><p><strong>Neutral tool<\/strong>No hidden commissions, no collection of personal data, open calculation code in the page.<\/p><\/div>\n<\/div>\n\n<div class=\"regimes-section\">\n<h2><span class=\"ez-toc-section\" id=\"Other-Assur360-simulators\"><\/span>Other Assur360 simulators<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"regimes-cross\">\n<a href=\"https:\/\/www.assur360.ca\/en\/assur360-simulators-free-tools-for-your-financial-decisions\/quebec-emergency-fund-calculator-2026-how-much-to-save-to-protect-yourself\/\"><strong>Emergency Fund Calculator<\/strong><span>How Much to Save to Protect Yourself from the Unexpected<\/span><\/a>\n<a href=\"\/simulation\/courbes-cqff\/\"><strong>CQFF Curves \u2014 TEMI 2025<\/strong><span>View Your Marginal Effective Tax<\/span><\/a>\n<a href=\"https:\/\/www.assur360.ca\/en\/assur360-simulators-free-tools-for-your-financial-decisions\/disability-insurance-needs-calculator-2026-optimal-waiting-period-assur360\/\"><strong>Rate Disability Insurance<\/strong><span>Calculator Optimal Waiting Period for Your Emergency<\/span><\/a>\n<a href=\"https:\/\/www.assur360.ca\/en\/assur360-simulators-free-tools-for-your-financial-decisions\/mortgage-insurance-calculator-bank-vs-personal-life-insurance\/\"><strong>Fund Mortgage Insurance: Bank vs. Personal<\/strong><span>Life Compare the two coverages and save<\/span><\/a>\n<\/div>\n<\/div>\n\n<div class=\"regimes-cta-final\">\n<h2><span class=\"ez-toc-section\" id=\"Need-a-human-opinion-to-validate-your-strategy\"><\/span>Need a human opinion to validate your strategy?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A financial planner or investment advisor registered with the AMF can analyze your entire situation (income, debts, plans, taxation, estate) and build an optimized plan.  <strong>First consultation, often free.<\/strong><\/p>\n<div class=\"btns\">\n<a class=\"btn-primary\" href=\"\/soumission\/\">Get a free<\/a>\n quote<a class=\"btn-outline\" href=\"tel:18663574451\">\ud83d\udcde 1-866-357-4451<\/a>\n<\/div>\n<\/div>\n\n<script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@graph\": [{\"@type\": \"InsuranceAgency\", \"@id\": \"https:\/\/www.assur360.ca\/#agency\", \"name\": \"Assur360\", \"url\": \"https:\/\/www.assur360.ca\/\", \"telephone\": \"1-866-357-4451\", \"areaServed\": {\"@type\": \"AdministrativeArea\", \"name\": \"Qu\u00e9bec\"}}, {\"@type\": \"WebApplication\", \"name\": \"Comparateur r\u00e9gimes d'\u00e9pargne fiscaux Qu\u00e9bec 2026\", \"url\": \"https:\/\/www.assur360.ca\/simulation\/comparer-regimes-epargne-fiscaux\/\", \"applicationCategory\": \"FinanceApplication\", \"operatingSystem\": \"Web\", \"browserRequirements\": \"JavaScript activ\u00e9\", \"offers\": {\"@type\": \"Offer\", \"price\": \"0\", \"priceCurrency\": \"CAD\"}, \"description\": \"Decision tool: compare RRSP, TFSA, FHSA, RESP, RVER with 3 scenarios, actual fees, withdrawal phase, risk profile and 500 Monte Carlo simulations.\"}, {\"@type\": \"FAQPage\", \"mainEntity\": [{\"@type\": \"Question\", \"name\": \"Is it better to contribute to the RRSP or TFSA in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"RRSP is advantageous if current MMR \u2265 30% and withdrawal at lower MMR. TFSA is advantageous if MMR \u2264 28% or retirement MMR is likely to be higher. Combining both is almost always optimal.\"}}, {\"@type\": \"Question\", \"name\": \"Why 3 different scenarios?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Markets do not provide a constant return. The 3 scenarios reflect the actual volatility of the risk profile: pessimistic = return \u2212 0.7 \u00d7 standard deviation, optimistic = return + 0.7 \u00d7 standard deviation. The Monte Carlo simulation with 500 iterations provides the complete distribution.\"}}, {\"@type\": \"Question\", \"name\": \"How do management fees impact my results?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"A lot. Over 30 years with $200,000, going from 2% to 0.5% can earn over $200,000 more. Fees are deducted each year from the return, so the compounding effect is massive.\"}}, {\"@type\": \"Question\", \"name\": \"Difference between nominal and real return?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Nominal = gross return displayed. Real = after inflation. To plan for retirement, look at today's dollars (real), not future dollars (nominal).\"}}, {\"@type\": \"Question\", \"name\": \"What happens if I exceed the limits?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"1%\/month penalty on the excess (TFSA, FHSA, RRSP beyond $2,000 margin). That\u2019s 12%\/year. Check your rights on My CRA Account before significant contributions.\"}}, {\"@type\": \"Question\", \"name\": \"What is the optimal order to withdraw?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Standard: bracket filling \u2014 withdraw from the RRSP to fill the 27% MMR bracket each year, then TFSA tax-free. If retirement MMR is very low, empty RRSP faster. If inheritance is expected, defer RRSP until death.\"}}, {\"@type\": \"Question\", \"name\": \"Is the FHSA better for first property?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Yes, it's the only plan combining deductible contributions (RRSP) and non-taxable withdrawals (TFSA). As a couple: $16,000\/year combined, $80,000 lifetime. Must be used within 15 years, otherwise transferred to RRSP tax-free.\"}}, {\"@type\": \"Question\", \"name\": \"How much does the RESP earn in grants?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"30% automatic on $2,500\/year contributed: 20% federal CESG ($500\/year, $7,200 lifetime) + 10% QESI Quebec ($250\/year, $3,600 lifetime).\"}}]}\n``````html\n00 $ life). Total possible: $10,800 per child.\"}}, {\"@type\": \"Question\", \"name\": \"Who can validate my strategy?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Financial planner (Pl. Fin.), investment advisor, or registered mutual fund representative with the AMF. Check registration on the AMF registry.\"}}]}, {\"@type\": \"HowTo\", \"name\": \"How to choose the right tax savings plan in 5 steps\", \"step\": [{\"@type\": \"HowToStep\", \"position\": 1, \"name\": \"Choose a preset situation\", \"text\": \"Click the preset corresponding to your profile: first-time homebuyer, retirement at 65, self-employed, early retirement, parent, or high income.\"}, {\"@type\": \"HowToStep\", \"position\": 2, \"name\": \"Adjust your actual parameters\", \"text\": \"Modify current income, estimated retirement income, savings capacity, horizon, risk profile, management fees, and inflation.\"}, {\"@type\": \"HowToStep\", \"position\": 3, \"name\": \"Read the 3 scenarios\", \"text\": \"The graph displays pessimistic, realistic, and optimistic. If the gap is too wide for your tolerance, adjust your risk profile.\"}, {\"@type\": \"HowToStep\", \"position\": 4, \"name\": \"Test a combined strategy\", \"text\": \"Compare each plan, 50\/50, RRSP \u2192 TFSA, or auto optimize. Choose the one that fits your situation.\"}, {\"@type\": \"HowToStep\", \"position\": 5, \"name\": \"Validate with an AMF Pl. Fin.\", \"text\": \"The simulator is a decision-making tool, not advice. Validate with a professional registered with the AMF before taking action.\"}]}, {\"@type\": \"BreadcrumbList\", \"itemListElement\": [{\"@type\": \"ListItem\", \"position\": 1, \"name\": \"Home\", \"item\": \"https:\/\/www.assur360.ca\/\"}, {\"@type\": \"ListItem\", \"position\": 2, \"name\": \"Simulators\", \"item\": \"https:\/\/www.assur360.ca\/simulation\/\"}, {\"@type\": \"ListItem\", \"position\": 3, \"name\": \"Tax savings plan comparator\", \"item\": \"https:\/\/www.assur360.ca\/simulation\/comparer-regimes-epargne-fiscaux\/\"}]}]}<\/script>\n\n&#8220;`","protected":false},"excerpt":{"rendered":"<p>Decision tool: compare RRSP, TFSA, FSASA, RESP and VRSP with 3 scenarios, actual fees, withdrawal phase and risk profile. Monte Carlo 500 simulations. <\/p>\n","protected":false},"author":1,"featured_media":62940,"parent":58627,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_seopress_titles_title":"Quebec Tax Savings Plan Comparator 2026 \u2014 RRSP, TFSA, FHSA, RESP, VRSP","_seopress_titles_desc":"Decision tool: compare RRSP, TFSA, FSASA, RESP and VRSP with 3 scenarios, actual fees, withdrawal phase and risk profile. Monte Carlo 500 simulations. ","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","yasr_pro_reviews_in_comment_enabled":0,"footnotes":""},"class_list":["post-61104","page","type-page","status-publish","has-post-thumbnail","hentry"],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"_links":{"self":[{"href":"https:\/\/www.assur360.ca\/en\/wp-json\/wp\/v2\/pages\/61104","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.assur360.ca\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.assur360.ca\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.assur360.ca\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.assur360.ca\/en\/wp-json\/wp\/v2\/comments?post=61104"}],"version-history":[{"count":7,"href":"https:\/\/www.assur360.ca\/en\/wp-json\/wp\/v2\/pages\/61104\/revisions"}],"predecessor-version":[{"id":61209,"href":"https:\/\/www.assur360.ca\/en\/wp-json\/wp\/v2\/pages\/61104\/revisions\/61209"}],"up":[{"embeddable":true,"href":"https:\/\/www.assur360.ca\/en\/wp-json\/wp\/v2\/pages\/58627"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.assur360.ca\/en\/wp-json\/wp\/v2\/media\/62940"}],"wp:attachment":[{"href":"https:\/\/www.assur360.ca\/en\/wp-json\/wp\/v2\/media?parent=61104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}