• Jul 15, 2026
  • 4 min read

Scaled Block Bootstrap: How FinZot's Monte Carlo Works

A Monte Carlo run tests your plan against thousands of possible market futures. FinZot builds those futures by resampling blocks of consecutive years from real market history. You can rescale those returns to your own forward-looking assumptions.

A typical Monte Carlo draws each year at random from a bell curve built from an expected return and a volatility number. A block bootstrap samples real years in consecutive blocks instead. It has three advantages over the bell curve:

  • Runs of good and bad years. Crashes and recoveries arrive in sequences. A block keeps the sequence intact instead of shuffling it apart.
  • How assets move together. A sampled year carries what stocks, bonds, and inflation all did in that same year, so there is no correlation to estimate. A trial that samples the 1970s pays that decade’s high inflation in the same years it earns its low returns.
  • Extreme years. A bell curve makes years like 1931 rarer than history made them. Sampled years show up as often as they actually happened.

What a trial looks like

A trial is your plan run against one possible future. FinZot builds that future from blocks of consecutive years. Each block starts at a random point in the historical record. FinZot lays the blocks end to end until the plan’s last year is covered. A run does that 1,000 times by default.

Here are three trials with 10-year blocks and a 35-year plan:

Trial
Sampled years (plan years 1–35)
Outcome
1
1970-19791892-19011933-19421921-25
$17.8M left
2
1913-19221988-19971991-20001949-53
$25.6M left
3
1929-19382000-20091966-19751907-11
Fails in year 24
Illustrative trials. Each block is one run of consecutive real years. The last block is truncated to fit the plan.

Trials 1 and 2 stitch ordinary stretches of history together and end with money left over. Trial 3 draws the Depression, then the 2000s, then stagflation. Three bad decades arrive in a row, and the plan runs out in year 24.

Each trial runs your full plan, taxes and all. The success rate is the share of trials that stay solvent. With variable spending on, the trials also show how much you could spend in each one.

You can open any trial and see its whole projection. It shows what was sold, what taxes hit, and where the cash ran out.

The settings

  • Asset selection. Which funds you hold decides whose history gets sampled. The catalog covers stock, bond, and cash funds with annual return, distribution, and inflation data back to 1871. FinZot backfills funds that did not exist then from a closely related long-history asset. International stock data begins in 1970, and a trial can still sample the 1930s for it.
  • Block length. A block runs from 1 to 30 years, and the default is 10. Longer blocks keep longer stretches of real history intact, so a crash and the years that followed it stay together. Shorter blocks jump between eras more often. Set it to 1 and you have a classic year-by-year Monte Carlo, except every draw is a real year.
  • Trials and seed. A run has up to 10,000 trials. The same seed always gives the same trials, and a different seed draws a different set of histories.
  • Expected return and yield, per fund. This is the “scaled” in scaled block bootstrap. FinZot scales each sampled year by one constant so the compound average lands on your assumption. Crashes still crash and good years still beat the average. A custom inflation assumption is recentered the same way.
  • Volatility, per fund. Set a target standard deviation and every sampled year moves further from the average, good years up and bad years down, until the spread matches. The compound average still lands on your expected return, and no scaled year can lose more than 100%. The volatility dial reference has the formula.
Monte-carlo Block-bootstrap Simulation Retirement

Related articles