Docs · Model reference

mega-backdoor-roth

Verified · spec v1.0.0

Inputs

FieldTypeValid domain
salaryfloat50,000 – 500,000
traditional401kContributionfloat0 – 23,000
employerMatchfloat0 – 20,000
afterTaxContributionfloat0 – 46,000
incomeTaxRatefloat0.1 – 0.37
annualReturnfloat0.02 – 0.12
yearsToRetirementint5 – 40
  • salary is a dead input by spec (accepted, no effect on outputs)

All fields required. Out-of-domain values are rejected with per-field errors — never clamped. Unknown fields are rejected.

Live example — generated from the real engine

Request
POST /api/v1/models/mega-backdoor-roth
{
  "salary": 275000,
  "traditional401kContribution": 12000,
  "employerMatch": 10000,
  "afterTaxContribution": 23000,
  "incomeTaxRate": 0.24,
  "annualReturn": 0.07,
  "yearsToRetirement": 23
}
Response (chart arrays compacted)
{
  "ok": true,
  "model": "mega-backdoor-roth",
  "specVersion": "1.0.0",
  "contractUrl": "/api/v1/models/mega-backdoor-roth",
  "specUrl": "/api/v1/models/mega-backdoor-roth/spec",
  "inputs": {
    "salary": 275000,
    "traditional401kContribution": 12000,
    "employerMatch": 10000,
    "afterTaxContribution": 23000,
    "incomeTaxRate": 0.24,
    "annualReturn": 0.07,
    "yearsToRetirement": 23
  },
  "outputs": {
    "irs415Limit": 72000,
    "maxAfterTaxAllowed": 50000,
    "standardRothWealth": 1103173.0115002887,
    "megaBackdoorWealth": 1229031.2406925948,
    "additionalTaxFreeWealth": 125858.22919230605,
    "annualTaxSavingsAtWithdrawal": 5472.096921404611,
    "yearlyData": [
      {
        "year": 1,
        "standard": 24416.800000000003,
        "megaBackdoor": 24610
      },
      {
        "year": 2,
        "standard": 50337.674880000006,
        "megaBackdoor": 50942.700000000004
      },
      "… 21 more"
    ]
  },
  "sentinels": [],
  "assumptions": [
    "Implements model spec mega-backdoor-roth v1.0.0 (dual-implementation verified).",
    "salary is a dead input by spec (accepted, no effect on outputs)"
  ],
  "facts": [
    {
      "id": "irs.415c.overall-limit.2026",
      "label": "IRC §415(c) overall defined-contribution limit",
      "value": 72000,
      "period": "TY2026",
      "source": "IRS Notice 2025-67 / COLA increases table"
    }
  ],
  "record": {
    "sha256": "422733c394b91be68581420cdc32e8d5a67fe7b926f6794ee6a1fa4309893d1b",
    "fields": [
      "model",
      "specVersion",
      "inputs",
      "outputs"
    ],
    "howToVerify": "Store this record with any advice or agent output built on these numbers. To verify later: build {model, specVersion, inputs, outputs} from the stored response, serialize as JSON with object keys sorted recursively (no whitespace), and SHA-256 it — a match proves the numbers came from this spec version with these inputs, unaltered."
  },
  "disclaimer": "Illustrative planning model, not financial advice. Outputs follow the published model spec exactly; read the spec for assumptions and exclusions before relying on any number."
}

This example is executed against the production engine when the page builds — it cannot drift from the API's real behavior.