Event Types Reference
Events are declared in your scenario TOML as [[events]] array entries. Each event has a type that determines its property schema and how it affects the model.
Common Properties
Section titled “Common Properties”All events share these properties:
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
enabled |
bool | Yes | — | Set to false to disable without deleting |
type |
string | Yes | — | Determines the event behavior |
label |
string | No | — | Display label on chart annotations |
year |
int | Varies | — | The year the event occurs (required for most types) |
Event Types
Section titled “Event Types”Retire
Section titled “Retire”Permanent from the specified year. Stops earned income for that person.
[[events]]enabled = truetype = "Retire"person = "person1" # Required: "person1" or "person2"year = 2038The event year is the source of truth for retirement timing. Create this event explicitly; the legacy person-level retirement field is only a compatibility fallback.
EndOfPlan
Section titled “EndOfPlan”Marks a person’s modeled plan boundary and starts survivor behavior in a couple plan from the following year. It is a planning horizon, not a life prediction.
[[events]]enabled = truetype = "EndOfPlan"person = "person1"age = 90year = 2062SocialSecurity
Section titled “SocialSecurity”Permanent from the specified year. Adds monthly Social Security income.
[[events]]enabled = truetype = "SocialSecurity"person = "person1" # Requiredyear = 2035The event’s year determines claiming timing. NWN resolves the monthly benefit live from [personX].social_security_benefits at the resolved age; do not add monthly_benefit to the event.
Expense
Section titled “Expense”One-time cash outflow. Can be recurring.
[[events]]enabled = truetype = "Expense"label = "Kitchen remodel"year = 2028amount = -45000 # Negative = cash outflowfunding = "cash_reserve_first" # Optional: let expense tap cash reserverepeat_every_years = 5 # Optional: recurrence intervalrepeat_until_year = 2048 # Optional: last recurrence yearrepeat_count = 3 # Alternative to repeat_until_yearchart_first_occurrence_only = true # Optional: show only first annotationIncome
Section titled “Income”Adds income for a period (or a single year).
[[events]]enabled = truetype = "Income"label = "Side consulting"year = 2027amount = 15000 # Positive = cash inflowend_year = 2029 # Optional: last year of incomeBuyHome
Section titled “BuyHome”Records a property purchase and down payment. Create a named liability separately if the purchase is financed.
[[events]]enabled = truetype = "BuyHome"label = "Beach house"year = 2032down_payment = -80000 # Cash outflow at purchaseprice = 450000 # Total purchase priceproperty = "Beach House" # Optional: name for trackingSellHome
Section titled “SellHome”Converts a named property to cash, net of fees and mortgage payoff.
[[events]]enabled = truetype = "SellHome"label = "Sell current home"year = 2032property = "Primary Residence" # Required: must match BuyHome or property namesale_fee_rate = 0.06 # Optional: realtor fees (default 6%)liability_names = ["Home Mortgage"] # Optional: liabilities to pay off at salereinvest_to = "taxable" # Optional: bucket to deposit proceeds intoreinvest_fraction = 0.5 # Optional: fraction to reinvest (rest stays cash)NewJob
Section titled “NewJob”Replaces a person’s income from the specified year.
[[events]]enabled = truetype = "NewJob"person = "person2"year = 2026annual_income = 85000CareerBreak
Section titled “CareerBreak”Zeroes a person’s earned income for a period.
[[events]]enabled = truetype = "CareerBreak"person = "person1"start_year = 2030 # First year of breakend_year = 2031 # Last year of break (inclusive)Education
Section titled “Education”Subtracts annual cost for a period.
[[events]]enabled = truetype = "Education"start_year = 2027end_year = 2030annual_cost = 15000Marriage
Section titled “Marriage”Currently informational. Future: tax filing status change.
[[events]]enabled = truetype = "Marriage"year = 2027SpendingShift
Section titled “SpendingShift”Changes baseline retirement spending from a specified year.
[[events]]enabled = truetype = "SpendingShift"label = "Downsize lifestyle"year = 2040mode = "replace" # Only mode currently supportedretirement_annual = 65000 # New retirement spending levelsurvivor_percent_of_retirement = 0.70 # New survivor %end_year = 2050 # Optional: revert after this yearContributionChange
Section titled “ContributionChange”Overrides selected contribution settings for one person from a specified year. Later changes override only the fields they supply.
[[events]]enabled = truetype = "ContributionChange"person = "person1"year = 2030annual_401k_contribution_delta = 6000Common optional fields include annual_401k_contribution, annual_ira_contribution, their _delta variants, gross_income, and percent-of-gross contribution/match settings.
Recurring Event Fields
Section titled “Recurring Event Fields”Events that support recurrence (currently Expense and Income):
| Field | What It Does |
|---|---|
repeat_every_years |
How many years between each repeat |
repeat_until_year |
The last year the event occurs (mutually exclusive with repeat_count) |
repeat_count |
Total number of occurrences (including the first) |