Excel add-in · Desktop Excel on Windows · 32- and 64-bit

Monte Carlo simulation inside the spreadsheet you already have

SimuXL is an Excel add-in for cost, schedule and engineering risk. Some of the numbers you typed are not really single numbers — write them as what they are, run your model thousands of times, and read the range of answers it produces.

10→=SXL.Triangular(8, 10, 14)

New to SimuXL? Your first simulation in five minutes →

Already licensed? Extend your updates →

Latest release: loading…
A SimuXL output histogram with its cumulative distribution, from the HTML report
An output's distribution from the SimuXL HTML Report — the probability of each bin and the cumulative curve, with the percentile convention stated on the chart.

Three steps, and everything else is detail

SimuXL does not need to understand your formulas to run them, so anything Excel can compute, it can put a range around. Your SUMs, lookups and escalation factors stay exactly as they are.

1

Turn assumptions into distributions

A cell that held 10 becomes =SXL.Triangular(8, 10, 14). Type it — Excel offers the list as soon as you type =SXL. — or use the Input dialog, which can also take the percentiles you know or fit a distribution to your data. When nothing is running the cell shows its average, so the model still reads as it always did.

2

Define your outputs

Select the cells whose answer you care about — a total, a finish date, a clearance — and press Output once. A risk register is one formula per row: =SXL.YesNo(0.05) * SXL.Triangular(10, 20, 50).

3

Run, and read

Press Run Simulation, then look at the distribution of each output and at which inputs drove it. Every run is reproducible under a seed you choose, and every number it reports can be traced back to the sample that produced it.

What it's for

The questions a single-number estimate cannot answer. SimuXL never looks inside your formulas, so anything Excel can compute, it can put a range around.

“How much do I need to be 70% confident?”

Cost risk. Leave the structure of your estimate alone: replace each uncertain quantity or unit rate with a distribution — =SXL.BetaPert(380, 420, 510) for a rate you can bracket — and keep every SUM, lookup and escalation factor as it is. The histogram of the total is your answer: the marker's value is the number you would quote, and the shaded area above it is the contingency.

“What is the chance we finish by the date we promised?”

Schedule risk. Durations as ranges and the finish date as an output. Its cumulative curve gives the chance of finishing on or before any date you name.

“How often do we meet the budget and the date?”

Cost and schedule together. One model, a cost and a finish date as its outputs. Joint Outcome counts the trials that meet both, each one alone, and neither.

“What is the whole risk register worth, and which entries drive it?”

Risk registers. One row per risk, and the whole row is one formula: =SXL.YesNo(0.05) * SXL.Triangular(10, 20, 50) — a 5% chance of an impact between 10 and 50. Make the register's total the output, then read Impact as well as the Tornado — here is why.

“How often does this design fall outside spec?”

Engineering and design. Each toleranced dimension becomes =SXL.Normal(nominal, sigma) or =SXL.Uniform(low, high), and your stack-up arithmetic is untouched. The percentile table and the Minimum say how often the clearance goes out of spec, and the Tornado says which dimension to tighten first.

“All I have is an expert's percentiles, or past data.”

Either is enough. An expert's “one chance in ten under 80, even odds under 100, one in ten over 130” goes in as it was given — =SXL.Triangular(80, 100, 130,, "P10,P50,P90") — and SimuXL works out the Triangular. With observations, press Fit… and point it at the range.

A rare risk ranks low on a tornado. SimuXL shows you why, and what to read instead.

The User Guide calls this the most important thing in it.

Take =SXL.YesNo(0.05) * 100 + SXL.Triangular(10, 20, 50). The 5% risk produces the entire upper tail of that output and owns about 87% of its variance. A tornado scores it around 15% and puts the triangle first — a near-perfect inversion. That is arithmetic, not a fault: an input that takes the same value in 95% of trials has 95% of its ranks tied, and that caps its rank correlation with anything at about 0.38, however much of the outcome it drives.

So SimuXL does not stop at the tornado. The tornado's own Highest |ρ| possible column tells you when you are looking at that limit, and Impact — the swing in your output's own units — ranks the same model risk-first, by a factor of two and a half. Neither is wrong: they answer different questions, and a risk model needs both.

The question you are askingThe analysisWhat it ignoresTrust it when
“Which input do I most reliably move the answer with?”TornadoSize. It scores consistency, not magnitude.Inputs vary on most trials. It systematically under-rates a rare risk.
“Which input could move the answer furthest?”ImpactLikelihood. A one-in-a-thousand catastrophe scores its full swing.You want to know where to spend design or mitigation effort. It needs no run at all.
“What actually went wrong in my bad cases?”Tail DriversEverything outside the tail. It reads only the trials in the tail you named.You have enough trials in that tail. Rows marked ~ are inside the noise floor and read as “not established”.
“Have I run this long enough to quote it?”ConvergenceWhether the model is right. It measures sampling noise and nothing else.Always, before quoting a tail percentile. A settled mean says nothing about a settled P90.

On a risk register the Tornado and Impact disagreeing is the normal case, not the exception: a likely nuisance leads the tornado and an unlikely catastrophe leads Impact. Each sheet names the other and says what it answers.

What SimuXL does

An auditable probabilistic tool for engineers, estimators and cost and schedule risk analysts — built to be checked, not just believed.

01

Eight distributions as worksheet functions

Triangular, Beta-PERT, Uniform, Discrete Uniform, Normal, Lognormal, Custom Discrete and Yes-No. Every one is an ordinary formula with in-cell IntelliSense; parameters can themselves be formulas or cell references.

02

Enter an input by its percentiles

When what you know is a judgment — a value at P10, one at P50, one at P90 — choose that set in the Input dialog's Parameters list and type them. The formula keeps them as you gave them, =SXL.Triangular(80, 100, 130,, "P10,P50,P90"), and SimuXL works the Triangular out from them every time the cell calculates.

03

Fit a distribution to your data, or to percentiles

Point Fit… at a range of observations and it tries Normal, Lognormal, Uniform, Triangular and Beta-PERT side by side, with Anderson-Darling and Kolmogorov-Smirnov statistics, a histogram and a Q-Q plot — described, never ranked for you. Have only an expert's percentiles? Choose Percentiles you know and every family is fitted to them side by side, each saying whether it matches them exactly or as closely as it can. The fit you use is kept on an SXL Fit sheet, and Find Inputs and the reports say which inputs were fitted.

04

Joint Outcome

How often do you meet the budget and the date? Pick any two outputs and a threshold for each: SimuXL counts the trials in which both are met, either one, or neither — from the same trials, never multiplied from two separate chances — and draws them on a scatter chart. The reports carry it.

05

Reproducible under a seed

Same model, same seed, same SimuXL release — same numbers. The run record carries the seed, the trial count and the sampling method, so a reviewer can reproduce your run rather than take your word for it.

06

Histogram and View Results

The distribution of each output with its cumulative curve, percentile markers and the contingency above any marker you choose — on a sheet, or in a window that writes nothing to your workbook.

07

Tornado

Which inputs drive each output, ranked by signed rank correlation — and an honest note when an input sits at the ceiling its own shape imposes, so a rare risk is never mistaken for an unimportant one.

08

Impact

How far each input can move each output, measured in the output's own units by swinging it across its range while everything else holds its base value.

09

Tail Drivers

What actually ran atypically in the trials at each end of the range — the inputs that were unusual when the answer was, ranked by standardized shift. The question a tornado cannot answer.

10

Convergence

Was this run long enough? The mean and the percentiles you quote, plotted as the trials accumulate, so you can see them settle — or see that they have not.

11

Correlation

Declare rank correlations between inputs, one-to-one or one-to-many; SimuXL induces them through a copula and reports what was achieved against what was asked.

12

Latin Hypercube sampling

Spread the draws evenly across each distribution for tighter percentiles from fewer trials. The guide says what it buys, what it costs, and why a seed alone no longer identifies a run.

13

Input Summary and Find Inputs

What each input actually drew against what it should have, and a listing of everything SimuXL found in the workbook — including what it could not account for, rather than guessing.

14

HTML and Word reports

The whole run as one shareable file: run record, outputs, convergence, drivers, impact, tail drivers, the last Joint Outcome you counted and every input, with the ones fitted named — and a section saying what the report does not cover.

15

Control variables and the Alternative Table

Cells that hold a decision rather than a chance. Type alternatives into a table and run the whole table: every alternative runs against the same random numbers, so a difference between two alternatives is caused by the alternatives, not by chance. Compare the distributions each decision produces — a cumulative chart, a histogram of each alternative and violins, each alternative's mitigation cost if you add it, and how often each meets two targets you set. Hold at Base keeps a control at its base value while you compare the others, without deleting what you typed for it, and a colleague can read the comparison without SimuXL installed.

16

Name, Freeze and Correlate

Name an input in its own formula, hold one at its base value for a run without editing the model, and correlate it with others — the three things you can attach to an Uncertain Input.

17

Make one input from several

A risk on a register is usually two inputs in one cell — whether it happens and what it costs. Mark the cell with Make Input and the Tornado, Tail Drivers and Impact rank the risk as one input, and Find Inputs lists what it is made of.

18

Export the raw trials

Every trial's draw for every input and output, so you can check any figure in any report with your own arithmetic.

19

Signed, and silent

Every release is code-signed. SimuXL runs without an internet connection. Apart from activating a code once, which sends the code, this machine's id and SimuXL's version number, and the optional update check, which sends the version number, it sends nothing about your work anywhere.

20

Rules it enforces, and says so

The things that stop a run are named before the run, with the reason and what to do instead — a cell that draws more than its formula shows, an argument left empty, a call that never fired.

Steer a run, or run it from your own code

For long runs, large models and anyone who builds on top of a simulation.

Step, Pause, Resume

Step starts a run that holds after every trial, with the sheet on screen, so you can watch your model take each draw. Pause holds between two trials so you can look at the sheet, and Resume carries on exactly where it stopped — nothing is lost and nothing is re-drawn, so a paused run that finishes is an ordinary complete run. Stop keeps every trial completed so far.

A histogram that builds during the run

One output's distribution drawn in the progress window and kept up to date while the run goes past, so a distribution that is obviously wrong shows itself in the first few hundred trials instead of at the end. It changes no number.

Scoped recalculation for large models

Recalculates only the sheets between your inputs and your outputs on each trial, instead of the whole workbook. SimuXL works those sheets out from your formulas, refuses to scope if it cannot prove the answer, and checks itself against a full recalculation on a sample of trials while the run goes. Runs of 1 to 1,000,000 trials.

SXL.RunSimulationArray

Runs a simulation from your own VBA and hands the run record back to your code — no Run dialog, no summary window to dismiss: Application.Run("SXL.RunSimulationArray", 10000, 12345).

=SXL.Result("Total Cost", "P90")

Puts a figure from the last run into a cell of your own, so a summary block or a dashboard is built from formulas rather than copied numbers — and is right again after the next run without anybody remembering to update it.

SXL.Live and SXL.Version

SXL.Live answers from the run in progress, over the trials finished so far (tick Watch the run with a hold of at least 1 ms to see it climb on screen). =SXL.Version() reports the build you are running — the health check a script wants.

The eight distributions

Every one is an ordinary worksheet function. Start typing =SXL. and Excel offers the list, or use the Input dialog. Each takes an optional Name after its parameters. Triangular, Beta-PERT, Uniform, Normal and Lognormal can also be entered by percentiles — the set is written after the name.

FunctionArgumentsUse it when
SXL.TriangularMinimum, MostLikely, MaximumYou can state a low, a high and a most likely. The workhorse of cost and schedule estimating.
SXL.BetaPertMinimum, MostLikely, Maximum, Lambda (optional)Same three numbers as Triangular, weighted towards the most likely value. The convention in use is stated in the guide.
SXL.UniformMinimum, MaximumAnything in the range is equally likely and you have no reason to prefer the middle.
SXL.DiscreteUniformMinimum, MaximumA whole number from Minimum to Maximum, each equally likely — a die, a count of units, a month.
SXL.NormalMean, StdDevA quantity that scatters symmetrically about a centre. It has no lower bound.
SXL.LognormalMean, StdDevA quantity that cannot go below zero and has a long upper tail. Arguments are of the values themselves.
SXL.DiscreteValues, ProbabilitiesA handful of specific outcomes with specific chances, as ranges or inline: =SXL.Discrete({10;20;30}, {0.25;0.5;0.25})
SXL.YesNoProbabilityOfYesSomething either happens or it does not. Returns 1 or 0, so multiply it by an impact.

What SimuXL will not do to your workbook

A risk model is already in your spreadsheet. SimuXL is written to leave it that way.

It does not change your model

No SimuXL command writes a value into a cell you did not ask it to. Inputs are formulas you typed; outputs are cells you selected. Freezing an input for a run does not edit it.

It comes off as cleanly as it went on

Erase takes SimuXL back off a cell and says first what the cell will become. An output goes back to the formula it wrapped; an input becomes its mean, written as live arithmetic — =SXL.Triangular(10, 20, 50) becomes =(10 + 20 + 50) / 3 — so a parameter in another cell goes on working.

It does not put its results among your cells

An analysis is written to a sheet of SimuXL's own — by default a new sheet in your workbook, replaced on the next run — and none of your cells is edited. If you would rather each analysis arrived in a workbook of its own, that is one setting away.

It works offline, and sends nothing about your work

Runs, analyses and reports happen entirely on your machine. Activating a code sends the code, this machine's id and SimuXL's version number, once. The optional update check reads one small signed file; its request carries SimuXL's version number and no machine id, licensee or workbook name — though, like any web request, it reaches the web host with your IP address.

See SimuXL's analyses

The SimuXL tab and its dialogs in Excel, and charts from a SimuXL HTML Report of a 2,000-trial run, the histogram and the Joint Outcome chart from the report of a 3,000-trial cost-and-schedule run, and one chart from a Comparison Report. Every one of them also lands on a worksheet, and the raw trials behind them can be exported.

The SimuXL tab in Excel

The SimuXL ribbon tab in Excel: Define, Simulation, Results, Comparison, Report and Help groups

The whole workflow on one tab: define inputs and outputs, run, read the results, compare alternatives, and write the report.

The Input dialog in Excel, defining a Beta-PERT

The Input dialog

Pick one of the eight distributions, fill in its parameters, and the curve redraws as you type — its mean, mode, standard deviation, P10 and P90 beneath it, and the formula SimuXL will write shown before it writes it.

The Fit dialog fitting five distributions to sixty values, with a histogram and a Q-Q plot

Fit… — five families against your data

Sixty past costs: Normal, Lognormal, Uniform, Triangular and Beta-PERT fitted side by side, each with its Anderson-Darling and Kolmogorov-Smirnov figures, the values it left out or flagged named, a histogram and a Q-Q plot. Described, never ranked for you.

The Correlation Editor warning that a 10% Yes-No cannot reach the requested correlation

The Correlation Editor

Two pairs declared, and a third that SimuXL warns cannot reach the 0.6 asked for: a 10% Yes-No caps the rank correlation near 0.52, and the run reports the ceiling rather than hiding it.

The View Results window in Excel

View Results

The Results Viewer after a run of the demo estimate: the output's histogram and cumulative curve, a percentile marker with the sentence that reads it — P70 = 1,620.6, 70% of trials at or below it and 30% above — and Tornado, Impact and Tail Drivers one tab away. Write to sheet puts the view on a worksheet.

Tornado - rank correlation of each input with an output

Tornado — what drives each output

Signed rank correlation, ranked. The input shown in orange sits at its ceiling — a Yes-No with a small probability cannot correlate more strongly than its own shape allows, and SimuXL says so rather than ranking it last in silence.

Impact - how far each input can move an output

Impact — how far each input can move each output

Each input swung across its range with the rest of the model at base, measured in the output's own units.

Convergence of an output's statistics as trials accumulate

Convergence — was this run long enough?

The mean and the quoted percentiles as the trials accumulate. If the lines are still moving at the right-hand edge, run more trials before quoting the number.

A SimuXL output histogram of Total cost with its cumulative curve

Histogram — the range of answers your model produced

Probability per bin and the cumulative curve. Whether P90 means the value 90% of trials fall at or below, or above, is a preference — and the chart states which is in force.

Tail drivers - lower tail

Tail Drivers — the lower tail

Which inputs ran atypically in the trials that produced the lowest answers, ranked by standardized shift.

Tail drivers - upper tail

Tail Drivers — the upper tail

The same question at the other end of the range. A tornado ranks inputs over every trial; the tails answer what happened when the answer was extreme.

Joint Outcome - a scatter of two outputs with a threshold line on each and the four outcomes' shares in the corners

Joint Outcome — how often both thresholds are met

Every trial is one point: the first output across, the second up. A line at each threshold splits the trials into four outcomes, and each corner gives its share and count, on a card the trials show through.

A comparison's histogram - each alternative's distribution of one output, side by side on one scale

Comparison — each alternative's distribution, side by side

From a SimuXL Comparison Report: one output's histogram for every alternative, on one scale, between the cumulative chart and the violins.

The contents page of a SimuXL HTML Report

The HTML Report — the whole run as one shareable file

From the run record to a closing section saying what the report does not cover — because a missing section and a section that found nothing must not look the same.

The User Guide describes every dialog.

Licensing

Start with a free 30-day trial — the full add-in, nothing to enter. Then choose a perpetual license that includes 12 months of updates, or a subscription that always runs the newest release. One license covers one machine.

Perpetual License

TBD
One machine, 12 months of releases, runs forever

Runs forever on every SimuXL release dated within your 12-month service period. After that your installed version keeps working; newer releases need an extension.

  • The full add-in: all eight distributions, every analysis, both reports
  • 12 months of free updates from the purchase date
  • Keep running your licensed version forever, offline
  • Extend whenever you like at the current price — there is no lapse penalty today
  • Email and phone support during your service period
Purchase — TBD

Delivered as an activation code you paste into Help › License.

Extend Updates

TBD
Another 12 months of releases, ≈45% of perpetual

Already own SimuXL? Move your license's Supported-Through Date another 12 months on, so the releases published in that window are yours to install.

  • Another 12 months of releases
  • Your existing version keeps working whether you extend or not
  • Extend at any time at the current price, even long after the period ended
  • No auto-renew — you decide when
  • Non-refundable, except for a duplicate or erroneous charge
  • Email and phone support during the extended period
Extend — TBD

Help › About shows the date your license currently runs through.

Annual Subscription

TBD
Always the newest release, 14-day grace

Every release, for as long as the subscription runs. When it ends, SimuXL keeps running for 14 days and says so at each run, then stops simulations until it is renewed.

  • Every release published while subscribed
  • The full add-in, every analysis, both reports
  • Email and phone support throughout
  • 14-day grace period after the paid-through date
  • Renewed by you — nothing charges automatically
Subscribe — TBD

Delivered as an activation code, the same way.

SimuXL is licensed for business, professional, academic and government use. Payments are processed by Stripe. Prices are in US dollars. See the License Agreement for the full terms, including the 30-day refund policy.

Frequently asked questions

What exactly am I buying?

A license to run SimuXL on one machine. A perpetual license never expires and runs every release dated on or before its Supported-Through Date — 12 months after purchase. A subscription runs every release until its paid-through date.

What happens when the service period ends?

Your installed SimuXL keeps working, forever. If a newer release is published and you want it, extend the service period, currently for TBD. If you do not care about new releases, do nothing. What’s New says what each release changed.

How does the license reach me?

By email, normally within 24 hours of payment, as a short activation code beginning SXLA-. Paste it into Help › License and press Activate, with the agreement ticked; SimuXL fetches its key once and never needs the internet again for it.

Does SimuXL phone home?

Only for the two things you can see. Runs, analyses and reports never leave your machine. Activating a code sends the code, this machine's id and SimuXL's version number, once. The optional weekly update check sends the version number — like any web request, it reaches the web host with your IP address — and you can turn it off.

Can I move my license to a new computer?

A key is bound to one machine. You may rehost once per rolling 24 months at no charge — email support with the new machine's id from Help › License and a key is issued for it.

Is there a refund policy?

Yes. Email simuraytics@gmail.com with your invoice or receipt number within 30 days of buying a new license or subscription for a full refund. Extensions and subscription renewals are non-refundable, except for duplicate or erroneous charges. The terms are in the License Agreement.

Which Excel does it need?

Desktop Excel on Windows, 32- or 64-bit; the installer reads which you have and installs the matching add-in, with no administrator rights. It is not for Excel on the web or on a Mac.

Windows warned me when I ran the installer.

SimuXL's files are signed with SimuXL's own certificate rather than one bought from a certificate authority, so a machine does not trust it until you say so: the installer offers to run the one-time trust step for you. Windows SmartScreen may still warn about a fresh release, because it judges a file by how many machines have run it, not by its certificate. Press More info: the publisher reads Simuraytics Software LLC on a machine that already trusts SimuXL's certificate, and may read Unknown publisher on one that does not yet. Either way, press Run anyway.

What happens when the trial ends?

A simulation needs a license key; everything else keeps working. You can still open a model, define inputs and outputs, and read the sheets a run already wrote. What a key buys is the trial loop itself — Run Simulation and Run Comparison.

Can colleagues without SimuXL open my model?

Yes. The workbook opens, and every sheet SimuXL wrote is ordinary cells and charts. A cell that calls a SimuXL function shows #NAME? once their Excel recalculates it, because the function is not there. The HTML and Word reports open in any browser or word processor, and a comparison can be read without SimuXL installed.

What does the trial leave out?

Nothing. The 30-day trial is the whole add-in, on each machine, with nothing to enter. Trial output is for evaluation rather than for commercial deliverables — see the license agreement.

Validation and quality assurance

SimuXL is built for people whose numbers get audited. Everything below is a property you can check yourself rather than a claim to accept.

Reproducible by construction

A run is identified by its seed, its trial count and its sampling method, all of which the run record carries. Rerun it and you get the same trials; export them and you can recompute any statistic the reports print with your own formulas.

The mathematics is stated

The User Guide gives the convention behind every distribution — which Beta-PERT, which percentile definition, what a cell shows at rest and why — and each analysis explains what it measures and what it cannot. Every chart states its convention on its face.

Tested before it ships

Every release passes an automated gate before it is published: the numerics are cross-checked against independent implementations, the eight inverse distributions are checked for monotonicity, every dialog is measured for clipping, and every report is rendered and read.

It tells you what it could not do

Find Inputs lists what SimuXL found and what it could not account for. A rule that stops a run names the cell and the reason. The report ends with the section that says what it does not cover.

Signed and verifiable

The installer and both add-in files are code-signed by Simuraytics Software LLC. Windows verifies the signature; Help › About shows the result.

Private by design

SimuXL runs entirely on your machine. It contacts the internet only to activate a code, once, and to check for updates when you press Check for Updates or leave the weekly check on — and an update check sends its version number and nothing about your work.

About SimuXL

SimuXL was created by Michael Smith following his retirement from the Federal Highway Administration in 2023, where he spent 32 years advancing quantitative risk assessment for highway infrastructure projects. It is the companion to CASTR, his standalone cost and schedule risk application: where CASTR gives you a complete risk-register workflow, SimuXL brings the same probabilistic thinking to a model you have already built in Excel. SimuXL is published by Simuraytics Software LLC.

The add-in is written for engineers, estimators and analysts who need an auditable result: reproducible runs, stated conventions, and reports that say what they do not cover. It is distributed as a signed installer, and runs entirely on your own computer.

Compatible with desktop Excel on Windows, 32-bit and 64-bit.

Contact and support

When reporting a problem, include the line Help › About prints under Build and, if a run is involved, the seed and the trial count.