Configuration Reference
Scenario settings live in scenarios/*.toml files. Each file is a complete self-contained financial plan.
All config keys use snake_case (lowercase with underscores). Section headers are also lowercase or snake_case.
Top-Level Sections
Section titled “Top-Level Sections”[scenario]
Section titled “[scenario]”[scenario]name = "My Retirement Plan" # Human-readable nameslug = "myplan" # URL-friendly ID (used in --scenario flag)description = "A comfortable retirement with regular travel."household_type = "couple" # "single" or "couple" (inferred from [person2] if absent)is_default = false # Marks this as the default scenariois_template = true # Hidden from UI dropdown (for starter templates only)[simulation]
Section titled “[simulation]”[simulation]start_year = 2026end_year = 2060render_modes = ["deterministic", "historical", "monte_carlo"]num_runs = 1000 # Monte Carlo simulation countseed = 42 # Random seed for reproducible MC resultsportfolio_return_volatility = 0.12 # Annual return volatility for MC samplinghistorical_returns_path = "config/return_sequences/us_balanced_returns.csv"value_basis = "both" # "nominal" (default), "real", or "both"value_basis — Controls how monetary figures are displayed. "nominal" (default) shows projected future-year dollars, single chart pass. "real" deflates all values to start-year purchasing power (e.g. 2026 dollars), single chart pass. "both" renders both views with a toggle pill (💰 Real | 📊 Nominal) below the KPI strip — your preference is saved across page reloads — but uses two chart passes. For backward compatibility, the old real_dollar_basis = true maps to value_basis = "both".
[data_source]
Section titled “[data_source]”[data_source]mode = "synthetic" # "monarch", "synthetic", or "csv_import"[synthetic_start]
Section titled “[synthetic_start]”Used only when [data_source].mode = "synthetic":
[synthetic_start]taxable = 120000trad_ira = 380000roth = 95000cash = 45000home_value = 620000vehicles = 0taxable_cost_basis = 0roth_contribution_basis = 0[person1] / [person2]
Section titled “[person1] / [person2]”[person1]name = "Alex"dob = "1972-06-15" # YYYY-MM-DD format
# Incomeannual_take_home = 130000 # Net (take-home) incomeannual_take_home_real_raise = 0.01 # Annual real raise above inflationgross_income = 180000 # Gross income (for contribution calculations)contribution_method = "percent_of_gross"retirement_contribution_percent = 0.24annual_401k_contribution_split = { trad_ira = 0.70, roth = 0.30 }annual_ira_contribution = 0rmd_trad_ira_share = 0.50 # Person's share for RMD mathroth_share = 0.50 # Fallback share of pooled Roth balances
# Social Security (age-keyed monthly amounts)[person1.social_security_benefits]67 = 260070 = 3200Timeline settings are event-driven in v2. Add Retire, SocialSecurity, and EndOfPlan records under [[events]]; see Event Types. Person-level retirement_year and life_expectancy remain only as legacy compatibility fallbacks.
[spending]
Section titled “[spending]”[spending]retirement_annual = 82000 # Annual spending in retirement (both alive)survivor_percent_of_retirement = 0.70 # Survivor phase spending as % of retirementsurvivor_annual = 60000 # Optional absolute survivor target; takes precedencedebt_service_handling = "auto_reduce" # "auto_reduce" or "included_in_target"[withdrawal_policy]
Section titled “[withdrawal_policy]”[withdrawal_policy]accumulation_cash_target = 40000retirement_cash_target = 50000survivor_cash_target = 30000
accumulation_withdrawal_order = ["cash_above_target", "taxable", "roth", "trad_ira", "cash_below_target"]retirement_withdrawal_order = ["cash_above_target", "trad_ira", "taxable", "roth", "cash_below_target"]survivor_withdrawal_order = ["cash_above_target", "trad_ira", "taxable", "roth", "cash_below_target"]
accumulation_surplus_order = ["roth", "taxable"]retirement_surplus_order = ["roth", "taxable"]survivor_surplus_order = ["roth", "taxable"][assumptions]
Section titled “[assumptions]”[assumptions]stock_return = 0.07bond_return = 0.035inflation = 0.03equity_allocation = 0.70[[liabilities]]
Section titled “[[liabilities]]”[[liabilities]]name = "Home Mortgage"annual_rate = 0.065monthly_base = 1675monthly_escrow = 420 # Property tax + insurance (subtracted from freed cash)monthly_extra = 0type = "mortgage"
[[liabilities]]name = "RAV4 Hybrid Auto Loan"annual_rate = 0.049monthly_base = 495monthly_extra = 0type = "auto"[[events]]
Section titled “[[events]]”See the Event Types page for the full schema of each event type.
[accounts]
Section titled “[accounts]”Used only in Monarch or CSV Import mode:
[accounts]disabled = ["Account Name A", "Account Name B"]
"Vanguard Traditional IRA" = { category = "trad_ira", owner = "person1" }"Vanguard Roth IRA" = { category = "roth", owner = "person2" }"Checking" = "cash"