Using RetireOdds

Healthcare in RetireOdds: A Complete Guide

Healthcare is the biggest cost most early retirees forget to plan for — and the one most tightly wired to your tax picture. Here's exactly how RetireOdds models it.

By · Updated July 25, 2026
4

If you retire before 65, you lose employer coverage and Medicare eligibility at the same time — you have to buy your own insurance for however many years stand between retirement and Medicare. That gap can run a decade or more for an early retiree, and unlike most other retirement costs, it is directly coupled to your taxable income: the subsidy that makes ACA marketplace coverage affordable shrinks as your income rises, and after 65, higher income triggers a Medicare surcharge on a two-year delay. RetireOdds models healthcare separately from generic “lifestyle spending” precisely because it behaves so differently: it inflates faster than everything else, it changes shape entirely at age 65, and it reacts to decisions — like a Roth conversion — you might make on an entirely different page.

Why healthcare gets its own engine

Two things make healthcare unlike every other line in your budget. First, it is age-shaped: the cost and the coverage mechanism both change hard at 65, when ACA/marketplace coverage gives way to Medicare Part B and D. Second, it is income-shaped: your pre-65 premium is net of an ACA premium tax credit that depends on your Modified Adjusted Gross Income (MAGI), and your post-65 premium carries an IRMAA surcharge that also depends on MAGI. A big Roth conversion, an RMD, or a large capital gain doesn't just move your tax bill — it can move your healthcare bill too, sometimes by thousands of dollars. Because that interaction matters so much, RetireOdds computes healthcare as a standalone cost stream — visible on its own page, plottable on its own chart — rather than a number buried inside a generic spending total.

Setting it up, step by step

The Healthcare page reads your Profile (current age, retirement age, life expectancy, filing status, state, and destination country) automatically, then lets you refine the assumptions that drive the projection. Here is every control, in the order you meet it on the page:

  • Healthcare inflation. A slider from 0–10%/yr, defaulting to 5.5% — deliberately higher than general inflation, because medical costs have historically outpaced the broader CPI. Leave it at the default unless you have a specific reason to expect faster or slower medical cost growth; raising it doesn't just scale your bill up, it changes how much of your future cost outpaces general inflation in today's-dollar terms.
  • Covered — Just me / Couple. Defaults to Couple only when your Profile filing status is Married (not Married Filing Separately). Each person in a couple moves to Medicare on their own 65th birthday, not a shared date.
  • Spouse's age (couples only). If your household spouse age is already saved in Profile, it prefills as a placeholder; enter it explicitly here to use it in this projection. A younger spouse keeps costing ACA-bridge premiums for longer after you turn 65; leaving this blank assumes the spouse is the same age as you.
  • ACA family size (pre-65 only). The tax-family size used for the subsidy calculation — it can differ from the number of people actually enrolled in the marketplace plan, since it should include tax dependents who aren't on the policy. Defaults to your Covered selection (1 or 2).
  • Retirement MAGI. The single input that matters most. For a new U.S. projection, RetireOdds waits for you to enter expected annual retirement MAGI and click Preview healthcare costs. It does not silently treat current salary as retirement income. If your Profile contains current income, a separate button lets you use it as a clearly labeled rough estimate; the page keeps warning that it is often too high and should be replaced with expected retirement income, Roth conversions, and required distributions.
  • Premiums tracked ($/mo) and Other healthcare ($/mo) (non-expat plans on the older spending model only). These tell the model how much of your current tracked spending is already insurance premiums versus everything else (copays, prescriptions, dental). The tracked premium amount is subtracted from the modeled premium so the same dollar isn't counted twice — the “other healthcare” amount stays in lifestyle spending and is never touched by the ACA/Medicare model. Leave both at zero if you don't yet track healthcare separately from the rest of your budget; the modeled premium then applies on top of your existing spending total, which will double-count if some of that total was already healthcare. Plans on the newer “separated spending” contract (set in Profile → Spending) don't see these two fields at all — the current premium and out-of-pocket amounts are read from Profile → Spending instead, and this page just shows them read-only.
  • Local monthly cost (expat destinations only). Prefilled from a private/international insurance estimate for your chosen destination country, in today's dollars; override it with a real quote if you have one.
  • Include Medigap toggle (non-expat only). Adds an estimated Medicare Supplement (Plan G-style) premium on top of Part B/D once you're on Medicare. On by default.
  • ACA eligibility details (an expandable section, non-expat only). A set of checkboxes for edge cases the subsidy math genuinely depends on: Married-Filing-Separately domestic-abuse/spousal-abandonment exceptions to the general MFS credit ban (capped at three years of use), whether you lived apart from a spouse all year (which selects the individual, rather than joint, IRMAA threshold table — it does not itself grant ACA eligibility), the below-100%-FPL reconciliation safe harbor, an immigration-status-based below-FPL eligibility rule, an optional flat annual Medicaid-cost assumption for income under roughly 138% of the poverty line, and a one-time mid-year household-size change for the monthly premium-credit recalculation. None of these are assumed for you automatically — each one is an explicit, unchecked-by-default box you tick only if it genuinely applies.

The first U.S. projection requires the explicit Preview healthcare costs action above. After that first preview, changing an assumption reruns the projection automatically after a short pause. Nothing is saved to your plan until you choose Save assumptions. Expat projections can start from the destination's local-cost estimate because they do not use U.S. MAGI, ACA, or IRMAA.

How the pre-65 years are modeled

For each year before Medicare, RetireOdds prices a benchmark ACA silver plan (a today's-dollar national-average premium, pinned to the app's tax year and scaled by how many household members are pre-65) and then applies the premium tax credit math from the tax code (IRC §36B), using coverage-year applicable-percentage bands. The plan cost you actually pay is the benchmark premium minus that credit.

The credit depends on where your MAGI falls relative to the federal poverty line (FPL) for your household size and state region (the 48 contiguous states use one FPL table; Alaska and Hawaii use their own, higher tables). Below 100% of FPL there is generally no marketplace credit at all — that's Medicaid territory in expansion states, and the app lets you substitute an explicit Medicaid cost assumption instead of a marketplace premium. From 100% up through 400% of FPL, the required household contribution rises smoothly through a series of statutory percentage bands, and the subsidy covers the rest of the benchmark premium.

The 400% cliff

Because the enhanced pandemic-era subsidies expired at the end of 2025, the original 400%-of-FPL cliff is back in the 2026 rules this model uses: cross 400% of FPL and the subsidy doesn't taper — it disappears entirely, and the household is billed the full benchmark premium. Practically, that means one extra dollar of MAGI, at exactly the wrong spot, can cost a household thousands of dollars a year in lost subsidy. RetireOdds follows the statutory boundary: 400.0% itself can still qualify; income above 400% does not. The Healthcare page's warning and MAGI explanation call this out directly, and the yearly chart makes the effect visible as a step up in the ACA-bridge cost rather than a gradual slope.

One subtlety worth internalizing: for a subsidized household under the cliff, the app's own comments note that medical inflation mostly grows the subsidy, not your net premium — because your required contribution is a percentage of MAGI, and MAGI and the poverty line both drift with general inflation over time, your real out-of-pocket cost stays close to flat as long as you remain under 400% FPL. It's crossing the cliff — not medical inflation on its own — that causes the big jumps in what you actually pay pre-65.

The age-65 transition

The chart splits visibly at the Medicare start age (65): an orange “ACA bridge” segment before it, and the app's accent color for the Medicare segment after, joined at a dashed vertical marker labeled “MEDICARE AT 65.” In a couple with different ages, each person crosses into Medicare on their own birthday — so the middle of the chart can show a “mixed” phase where one spouse is still on the ACA bridge and the other is already on Medicare, each priced under their own system in the same year.

Once someone is on Medicare, their cost is Part B plus Part D (both pinned monthly premiums for the app's tax year), plus an optional Medigap supplement if you left that toggle on, plus any IRMAA surcharge their income triggers (below). There is no subsidy mechanism on the Medicare side — Part B/D premiums are a flat base cost regardless of income, with IRMAA layered on top only for higher earners.

IRMAA: the Medicare income surcharge

IRMAA (Income-Related Monthly Adjustment Amount) is a tiered surcharge added to Part B and Part D once your MAGI crosses set thresholds — five tiers above the base tier, with Part B and Part D moving in lockstep. The tiers are billed per person (each Medicare-age household member pays their own tier surcharge) and the thresholds double for a joint return relative to a single filer. A household filing Married Filing Separately (but living together) skips the middle tiers entirely: crossing the base threshold at all jumps straight to the second-highest tier — a genuinely punitive rule in the actual Medicare statute, which the model reproduces rather than smooths over.

The Healthcare page surfaces this with a dedicated warning banner whenever your entered MAGI clears the first IRMAA tier — “IRMAA surcharge applies… your income → IRMAA tier N, +$X/mo per person” — with a tooltip explaining that big Roth conversions or RMDs are the two most common ways retirees push themselves into a higher tier.

The two-year lookback

In reality, Medicare doesn't bill your IRMAA surcharge on this year's income — Social Security uses your tax return from two years earlier to set this year's premium (so a large Roth conversion or capital gain realized at, say, age 63 shows up as a higher Medicare bill at age 65). RetireOdds models that statutory lookback in Tax Analytics and in the full retirement simulation, using the recorded MAGI and filing status from two years prior. The standalone Healthcare page, by contrast, is a simpler, single-MAGI-forever model, so the two-year lag has no visible effect there. If you want to see the lookback's real bite — a conversion two years before a Medicare tier jump — Tax Analytics, not this standalone page, is where that shows up.

How healthcare interacts with the rest of the plan

Healthcare doesn't live only on its own page. Newer plans run under what the code calls the “separated spending contract”: healthcare premiums and non-premium healthcare are tracked as their own category, explicitly kept out of lifestyle spending, and added once as their own stream — the Healthcare page's action bar spells this out (“Healthcare is included in your retirement plan… lifestyle spending excludes healthcare; the current premium and out-of-pocket amounts above are modeled separately and added once”). Older plans instead use a “tracked premium/other healthcare” pair of manual offsets to avoid double-counting, described above.

On the newer separated-spending contract, healthcare is required in the plan and added once automatically; there is no off switch that would make the Ledger omit a required cost stream. Older plans still show an explicit Count in my Chance of Success toggle because their lifestyle baseline may already contain some healthcare. Inside the simulation, healthcare is not one static number carried through every random market path — the engine computes Medicare base premiums, gross ACA benchmark premiums, and non-premium costs, then derives the actual ACA subsidy and IRMAA tier from that path's own simulated MAGI and two-year MAGI history, year by year.

The other big interaction is with Roth conversions. Converting traditional retirement money to Roth is taxable income in the conversion year, which raises MAGI in that year — and MAGI is exactly the number that sets both your ACA subsidy (or the 400% cliff) pre-65, and your IRMAA tier two years later post-65. A conversion sized to “fill up” a tax bracket can look attractive on the tax side while quietly pushing a pre-65 household over the subsidy cliff, or setting up a post-65 IRMAA surcharge two years out. See the Roth conversions guide for how RetireOdds prices a conversion ladder against that same MAGI.

Reading the outputs

The chart plots nominal dollars per year by age — the actual number of dollars you'd expect to write a check for in that future year, inflated forward from today. Four headline figures sit above it:

  • Lifetime healthcare — the nominal sum of every projected year's cost, from your retirement age to your life expectancy.
  • Avg $/mo (today's $) — the same lifetime total, but discounted back to today's purchasing power and averaged per month. This is the “in today's dollars” framing: it strips out the inflation you'd expect just from prices rising generally, so it's the number to use when comparing against your current budget.
  • First-year monthly — the nominal monthly cost in the very first projected year, i.e. what you'd actually pay starting out.
  • IRMAA (or, for expat plans, “vs US Medicare”) — either “None” or the tier your entered MAGI currently triggers, with the monthly per-person surcharge; for expats, the equivalent Medicare cost the same household would face if they were in the U.S. at 65, for comparison against the local premium.

Below the chart, two summary cards break the total into its two eras: the ACA-bridge years (net of subsidy) and the Medicare years (Part B/D, plus Medigap and IRMAA if applicable) — each showing how the annual cost moves from its first to its last year in that phase.

Common workflows

  • Illustrative — “I retire at 58 and need coverage until 65.” Set your Profile retirement age to 58; the Healthcare page automatically starts its projection there and runs the ACA-bridge math for the seven years until Medicare eligibility, using whatever MAGI you enter as your realistic retirement income for those years — not your last working salary.
  • Illustrative — “I'm deciding whether a small Roth conversion in an ACA year is worth it.” Try a few Retirement MAGI values on this page (as a stand-in for “income including this year's conversion”) and watch the ACA-bridge segment of the chart, the subsidy figure, and the 400%-FPL proximity implied by the MAGI tooltip. To see the actual tax trade-off of a specific conversion schedule against this same MAGI-driven ACA/IRMAA machinery, use the Roth Conversions page, which prices the conversion and its downstream healthcare effect together.
  • Illustrative — “I'm moving abroad.” Setting a destination country switches the whole page into expat mode: Medicare, ACA, and IRMAA are all skipped, and the projection instead uses a prefilled local monthly cost estimate for that country (overridable with a real quote), plus a “vs US Medicare” comparison figure so you can see what the same household would have cost under the U.S. system at 65.

Honest limitations

What the Healthcare page does not do, verified directly against the engine:

  • No two-year IRMAA lookback on this page. This standalone projection assumes one constant MAGI for the whole horizon, so the statutory two-year billing lag has no effect here — it's a genuine simplification the page's own disclosure states outright. The lookback is modeled, on the Tax Analytics page and inside the Monte Carlo simulation.
  • No graduated ACA repayment cap. The underlying premium-credit reconciliation math (used by the simulation, not this static page) charges the full difference between an advance credit and the actual credit for households that land over the 400% cliff — which matches current law — but doesn't implement the separate statutory repayment cap for households that stay under 400% FPL; it charges the full amount there too, which the code documents as a mildly conservative simplification.
  • No long-term care. The page's own methodology disclosure states this explicitly — nursing-home, assisted-living, or in-home custodial care costs are out of scope.
  • No dental, vision, or out-of-pocket cost variability. Also disclosed directly on the page; the model prices premiums and IRMAA, not deductibles, coinsurance swings, or ancillary coverage.
  • Medicaid is an assumption, not a determination. The optional Medicaid-cost input substitutes a flat number you supply for income under the poverty-based threshold; the app is explicit that ticking the box is not itself an eligibility determination — state rules, immigration status, age, disability, and transition rules can all change the real answer.
  • MFS domestic-abuse/spousal-abandonment ACA eligibility is never assumed. Filing Married Filing Separately blocks the premium tax credit by statute unless this explicit, capped-at-three-years exception is checked — the model will not infer it from your filing status alone.

How the numbers are kept current

All dollar figures — the ACA benchmark premium, Part B and Part D base premiums, the Medigap estimate, the IRMAA tier thresholds and add-on amounts, the FPL tables, and the ACA applicable-percentage bands — are today's-dollar constants pinned to the app's tax year and dated with the source they were verified against (CMS's annual Part B/IRMAA fact sheet, KFF marketplace survey data, the relevant IRS revenue procedure for the applicable percentages, and HHS's federal poverty guidelines). When RetireOdds rolls forward to a new tax year, every one of those tables is meant to move together and get re-verified against those primary sources, not carried forward from memory.

Where to go next

Healthcare is one piece of a bigger, MAGI-linked picture. From here:

  • Roth conversions — how a conversion ladder is priced against the same MAGI that drives your ACA subsidy and IRMAA tier.
  • Tax Analytics — the year-by-year projection where the statutory two-year IRMAA lookback is actually modeled.
  • What-If scenarios — test a healthcare or MAGI assumption change against your Chance of Success without touching your saved plan.
  • Expat taxes — the tax side of the same destination-country modeling that drives the local healthcare estimate abroad.
  • Help center: Healthcare — the condensed reference version of this page.

Key takeaways

  • Healthcare gets its own engine because it is both age-shaped (a hard shift at Medicare age 65) and income-shaped (ACA subsidy and Medicare IRMAA both key off MAGI).
  • Pre-65, ACA cost is the benchmark premium minus a subsidy that shrinks as MAGI rises — and vanishes entirely above 400% of the federal poverty line, the subsidy cliff reinstated now that the enhanced pandemic-era credits have expired.
  • At 65, each household member moves to Medicare Part B/D (plus optional Medigap) on their own birthday; IRMAA adds a tiered, per-person surcharge for higher-income households, billed in reality (and in the Tax Analytics/simulation models) on a two-year MAGI lookback.
  • On newer separated-spending plans, healthcare is a required stream kept outside lifestyle spending and added once automatically; the opt-in toggle remains only on older plans whose baseline may already contain healthcare.
  • Roth conversions raise MAGI in the conversion year, which can shrink or eliminate an ACA subsidy pre-65 or set up a higher IRMAA tier two years later post-65 — plan the two pages together.
  • The standalone Healthcare page assumes one constant MAGI (no lookback lag) and excludes long-term care, dental/vision, and out-of-pocket variability by design — read the full limitations before treating its lifetime total as exhaustive.

See your own odds.

Put your real numbers in and run a 1,000-path Monte Carlo simulation — free to start.

Create your free account →

RetireOdds publishes educational content to help you make informed decisions. It is not financial, investment, or tax advice. Figures are illustrative. Consult a qualified professional about your situation.