Formulas
A formula replaces a fixed number with an expression FinZot recomputes each year from the plan’s
live state, such as net worth, age, balances, or the year’s return. Travel spending set to
net_worth * 1% then rises and falls with the portfolio instead of holding a preset figure.
The plan can also decide when and how much for itself, keyed to conditions it reaches
rather than dates you set. A milestone that fires on invested_assets > FUTURE_DOLLARS(2_000_000)
retires the household the first year invested assets clear an inflation-adjusted $2M, rather than
in a year you picked. Everything timed to that milestone moves with it. A withdrawal wrapped in
IF(PCT_CHANGE(invested_assets, 1) < -0.20, ...) cuts spending only after a down year.
Different in every trial
Section titled “Different in every trial”Each trial reaches those conditions differently. It draws its own slice of market history, so
invested_assets, portfolio_return, and the values LAG and ROLLING_* read back all differ.
Retirement triggers in a different year in each trial, and in some it never triggers. That changes
what the Monte Carlo reports. It no longer reports how often one fixed schedule
survives. It reports how often a plan that adjusts survives, with its milestones and spending
policies tested trial by trial rather than assumed to hold.
These pages cover the language, meaning syntax, operators, and functions, and the planner context, meaning the variables a formula reads.
- Formula Language — The spreadsheet-style syntax, operators, and functions used to customize FinZot’s calculations.
- Planner Context — The live variables and helper functions a formula can read, such as net worth, age, balances, income, and returns.