A ModelRisk alternative that opens your ModelRisk workbooks
xellstorm runs Monte Carlo simulations of Excel models in the browser, and it opens a workbook built for ModelRisk as it is: it reads 62 of ModelRisk’s distribution functions, with their parameters still linked to your cells, along with VoseOutput, VoseSimTable, VoseXBounds and VoseAggregateMC. It needs neither ModelRisk nor Excel, on Windows, macOS or Linux.
Your workbook is not changed, so the model still opens in ModelRisk. Before you run, the import lists what it converted and every formula it left, with the reason. One thing to know first: ModelRisk correlates inputs through copulas, which do not convert, so a correlated model needs its correlations entered again.
ModelRisk and xellstorm side by side
| ModelRisk | xellstorm | |
|---|---|---|
| Where it runs | Inside Excel for Windows | In a browser on Windows, macOS or Linux; Chrome and Edge recommended |
| Installation | An add-in on every computer that runs the model | None, and no admin rights |
| Your workbook | Vose functions in the cells; without ModelRisk they do not calculate | Read as it is: xellstorm writes nothing into it |
| Colleagues | Need ModelRisk to rerun the model | Open it in the browser; report readers need no license |
| Correlation | Copulas | Rank correlations, with a normal or Student’s t copula |
What the table says about ModelRisk follows its vendor’s published system requirements as of October 2026; check the current requirements with the vendor.
Which ModelRisk functions convert
The tables are generated from the importer’s own rule list, so they are exactly what it converts. Each function maps to the distribution it describes, with its parameters translated as ModelRisk documents them, and each mapping is tested against the equivalent scipy distribution. † marks the functions that convert with numbers only.
| Distribution (xellstorm name) | ModelRisk |
|---|---|
Bernoullibern | VoseBernoulli |
Betabeta | VoseBetaVoseBeta4VoseBetaSubj† |
Binomialbinom | VoseBinomial |
Burr III (Dagum)burr | VoseDagum |
Cauchycauchy | VoseCauchy |
Chi-squaredchi2 | VoseChiSq |
Chi, Maxwellchi | VoseChiVoseMaxwell |
Compound (frequency × severity)compound | VoseAggregateMC |
Cumulativecumul | VoseCumulAVoseCumulD†VoseOgive† |
Discretecustom | VoseDiscreteVoseDUniform |
Exponentialexpon | VoseExponVoseExponential |
Extreme value (max, Gumbel)gumbel_r | VoseExtValueMax |
Ff | VoseF |
Fatigue life (Birnbaum–Saunders)fatiguelife | VoseFatigue |
Gamma, Erlanggamma | VoseGammaVoseErlang |
General (relative weights)general | VoseRelative |
Generalized Paretogenpareto | VoseGPD |
Histogramhistogram | VoseHistogram |
Hyperbolic secanthypsecant | VoseHS |
Hypergeometrichypergeom | VoseHypergeo |
Integer uniformrandint | VoseIntUniformVoseStepUniform† |
Inverse Gaussianinvgauss | VoseInvGauss |
Johnson SBjohnsonsb | VoseJohnsonB |
Johnson SUjohnsonsu | VoseJohnsonU |
Kumaraswamykumaraswamy | VoseKumaraswamyVoseKumaraswamy4 |
Laplacelaplace | VoseLaplace |
Lévylevy | VoseLevy |
Log-logisticfisk | VoseLogLogistic |
Logisticlogistic | VoseLogistic |
Lognormallognorm | VoseLognormalVoseLognormalE |
Negative binomial, geometricnbinom | VoseGeometricVoseNegBinVoseNegBinomVosePolya† |
Normalnorm | VoseNormalVoseErf† |
Paretopareto | VosePareto |
Pareto II (Lomax)lomax | VosePareto2 |
Pearson V (inverse gamma)invgamma | VosePearson5 |
Pearson VI (beta prime)betaprime | VosePearson6 |
PERTpert | VosePERTVoseModPERT |
Poissonpoiss | VosePoisson |
Rayleighrayleigh | VoseRayleigh |
Reciprocal (log-uniform)loguniform | VoseReciprocal |
Student’s tt | VoseStudentVoseStudent3† |
Triangulartriang | VoseTriangle |
Triangular from percentilestrigen | VoseTriangleAlt |
Uniformunif | VoseUniform |
Weibullweibull_min | VoseWeibullVoseWeibull3 |
A distribution can stand alone or carry one positive multiplier and at most one added or subtracted offset, as in VoseNormal(B1*1.1,B2)*C1+5; its arguments can use numbers, single-cell references and arithmetic, and stay linked to those cells. VoseAggregateMC(n, VoseLognormalObject(mean, sd)) becomes one compound input: a count, then that many amounts added up. The property functions and markers:
| Function | Becomes in xellstorm |
|---|---|
VoseXBounds | Truncation: truncate_min, truncate_max (before any shift) |
VosePBounds | Truncation: truncate_pmin, truncate_pmax (percentiles of the distribution) |
VoseShift | Shift: shift |
VoseInput | Name: the input's name |
VoseSimTable | One value per simulation: a fixed cell in the base run, one scenario per further simulation |
VoseOutput | Output: an output, with the name it gives |
What does not convert from ModelRisk
- Copulas and the U argument. A distribution whose last argument is a percentile, such as
VoseNormal(0,1,0.5)or one driven by a copula, is left with its reason. Enter the correlations in xellstorm as rank correlations, in a matrix or as pairs, or estimate them from historical data. A Student’s t copula makes extremes come together more often at the same rank correlations. - Functions with no exact equivalent. ModelRisk’s time-series functions and any Vose function not in the tables above. Time series can be set up in xellstorm itself (random walk, AR(1), geometric Brownian motion, mean reversion, jump diffusion).
- Formulas the import cannot rewrite. Several distributions in one cell, a distribution inside another function or in a denominator, and arithmetic that would have to be reordered. Split them into cells, one distribution each.
- Some compound distributions.
VoseAggregateMCconverts, but not with a deductible, a severity that can be negative (unless it is truncated at 0) or a severity in another cell. - The workbook around the model. VBA macros, user-defined functions and links to other workbooks, as in any workbook xellstorm opens.
Each formula that does not convert is listed with its reason, and the compatibility check names every cell the engine cannot calculate, before you run. Moving a model from an add-in goes through a whole example, with what to do about each formula left.
Moving a ModelRisk model, step by step
- Open the workbook. Drop the .xlsx or .xlsm file into xellstorm; save an .xlsb workbook as .xlsx first. It is read and calculated in your browser tab.
- Import the Vose functions. Import from workbook on the Distributions step lists what becomes an input, an output or a scenario, and every formula left, with the reason.
- Add the correlations. If the model correlates inputs, set the same pairs in xellstorm as rank correlations.
- Check what is left. The compatibility check compares the formulas with the values Excel saved and names any cell the engine cannot calculate. Replace those before you rely on the results.
- Run and compare. Once everything converts and the check is clean, means and percentiles differ from ModelRisk’s only by sampling noise. Save the setup as a project file next to the workbook to rerun it later.
Questions
Do I need ModelRisk or Excel installed?
Neither. xellstorm reads the formulas from the workbook file itself and calculates the model with its own engine in your browser, on Windows, macOS or Linux.
What happens to a correlated ModelRisk model?
The distributions convert, but the copulas that correlate them do not: a distribution driven by a copula through its U argument is listed with its reason. Set the correlations again in xellstorm as rank correlations: a matrix that is not consistent is corrected to the nearest valid one, and a scatter plot shows the correlation you got. With a different way of pairing the draws, the tails of a correlated model can differ from ModelRisk’s more than sampling noise alone explains.
Will I get the same results as ModelRisk?
The same model, not the same random numbers. Converted distributions keep their parameters. Once everything converts and the compatibility check is clean, means and percentiles differ from ModelRisk’s by sampling noise, which shrinks as you run more trials.
Can I keep using ModelRisk on the same workbook?
Yes. The import turns the formulas into inputs of xellstorm’s own setup and writes nothing into the file, so the workbook still opens and runs in ModelRisk.
ModelRisk is a trademark of its owner. xellstorm is not affiliated with it; its function names appear here only to say what xellstorm reads.
Related
- Guide
Moving a model from @RISK, ModelRisk or Analytic Solver
xellstorm reads 164 distribution functions of @RISK, ModelRisk and Analytic Solver and lists what it converted and why any formula was left. - Guide
An @RISK alternative that opens your @RISK workbooks
xellstorm opens workbooks built for @RISK without @RISK or Excel, converts 53 of its distribution functions with their cells still linked, and runs the model in a browser on Windows, macOS or Linux. - Guide
An Analytic Solver alternative for Monte Carlo simulation
xellstorm opens workbooks built for Analytic Solver’s simulation without the add-in or Excel, converts 49 of its Psi distribution functions with their cells still linked, and runs the model in a browser.
xellstorm is a browser-based Monte Carlo simulation tool for Excel models: no add-in, and the workbook never leaves your computer.