A subject matter expert hands you a report. It contains a minimum, a maximum, and a small set of intermediate percentiles — typically a central value, a conservative value and a pessimistic value. No lognormal, no normal, no triangular. Just percentiles.

This happens across industries. In oil and gas, a reservoir engineer quotes reserves as 1P, 2P and 3P — which are percentiles in a different dress. In construction, a tunnelling contractor quotes daily advance rate as a minimum, a most-likely and a maximum, plus an optimistic and a pessimistic case drawn from analogue projects. In insurance, actuaries publish loss-exceedance curves. In renewable energy, wind-yield consultants report annual output as P50, P75 and P90. The pattern is the same across all of them: the expert speaks in percentiles because that is how the expert actually thinks about the quantity. Parametric distributions — lognormal, normal, triangular — are mathematical conveniences, not intuitive statements about the world.

Some modellers, receiving such a report, open @RISK and do the quick thing: they fit a lognormal or a normal to the median and move on. That fit invents a shape the expert never claimed, and it throws away the one thing the expert was paid to produce — the percentiles themselves.

There is an @RISK function that keeps them. It is called RiskCumul, the general cumulative distribution. This article explains what it does, why it is the right tool when your input is a percentile table, how to use it on a worked example, and how to verify the output. The example happens to be an offshore wind project — but every step of the modelling logic transfers unchanged to oil and gas reserves, to construction duration estimates, to insurance loss curves, or to any quantity an expert describes in percentiles. If you are reading this from outside wind, read the model and mentally replace "output" with "reserves" or "advance rate" or "loss". The main principle does not change.

What the cumulative distribution does

Winston (2001) describes RiskCumul as a way to define a random variable from its minimum, its maximum, and a small set of intermediate percentiles — rather than from parameters such as a mean and standard deviation. The analyst supplies a table. Between any two stated percentiles, @RISK assumes cumulative probability rises linearly. That linear interpolation is the function's only mathematical assumption. Everything else comes from the expert.

Basic syntax =RiskCumul(minimum, maximum, {X values}, {cumulative probabilities})

// X values and cumulative probabilities are two aligned arrays.
// Example with three intermediate percentiles:
=RiskCumul(1650, 2300, {1780, 1870, 1970}, {0.10, 0.25, 0.50})

Two small notes on the syntax. First, the probabilities are cumulative, not exceedance. If your expert speaks in exceedance — as wind-yield consultants do, where P90 means "90% of years exceed this value" — you convert to cumulative by taking 1 minus the exceedance probability. A P90 exceedance figure enters RiskCumul with cumulative probability 0.10. Second, the X values and the probabilities must both be strictly ascending. Your first job when building the table is to verify this before the simulation runs.

RiskCumul versus alternate-parameter distributions

@RISK also offers a family of distributions with alternate parameters — RiskTriangAlt, RiskNormalAlt, RiskLognormAlt, and so on. These look superficially similar to RiskCumul because they also let you specify percentiles instead of raw parameters. For example, =RiskTriangAlt(10%, 50, 50%, 100, 90%, 200) fits a triangular distribution whose 10th percentile is 50, whose median is 100 and whose 90th percentile is 200. It is a useful shortcut when the expert is happier quoting percentiles than the classical minimum, most-likely and maximum values.

The difference from RiskCumul matters. RiskTriangAlt and its alternate-parameter siblings still assume a specific shape — triangular, normal, lognormal — and fit its parameters so the stated percentiles are honoured. The shape away from those stated percentiles is whatever that family dictates. RiskCumul assumes no parametric shape at all. It takes your percentiles as the truth and interpolates linearly between them. If the expert has given you three, five or seven percentiles and intends the shape to follow those anchors directly, RiskCumul preserves that intent. If the expert has only given you a central value and a spread and is comfortable with a bell curve or a triangle around it, an alternate-parameter distribution is a reasonable choice and may even be preferable because it smooths out the corners that linear interpolation produces. The rule of thumb is simple: when the shape comes from the expert, use RiskCumul; when the shape comes from an assumption you are making, use an alternate-parameter distribution and name the assumption in the model.

Worked example — Offshore Wind Project

Cross-industry pattern, wind-industry numbers

Setting. A 500 MW offshore wind project seeks final investment decision. Debt has been structured. The remaining question is the distribution of project NPV across the 25-year contracted and merchant life.

Expert input. The wind-yield consultant delivers an Energy Yield Assessment: annual energy production of 1,970 GWh/yr at P50, 1,870 at P75 and 1,780 at P90 (exceedance). Minimum catastrophic-year figure 1,650. Maximum high-wind-year figure 2,300. No distributional shape claimed.

Analyst choice. Fit a lognormal to the median, or keep the five values the consultant actually delivered. RiskCumul keeps them.

Building the model

The model is a single Excel workbook. The first sheet holds the inputs. The second sheet holds the simulation engine and references back to the inputs. A third sheet shows how to adapt the same structure to oil and gas, construction, insurance or mining. A fourth sheet holds the instructions.

On the INPUTS sheet you populate three blocks. The first is the percentile table for annual energy production: the minimum, the maximum, and three intermediate values with their cumulative probabilities. The second is a PERT distribution for power price — minimum, most likely and maximum — because the price driver comes to you as a range from a different expert. The third block holds the project parameters: installed capacity, project life, variable and fixed operating costs, capital expenditure and the discount rate. Each cell carries a short description so a reader coming to the model fresh can see what each variable represents without reverse-engineering the formulas.

On the MODEL sheet, RiskCumul is written once for the annual energy production draw and RiskPert is written once for the power price draw. Everything else is arithmetic: revenue equals energy times price, operating costs scale with energy, net cash flow equals revenue less costs, and the project NPV applies an annuity factor over the project life and subtracts CAPEX. Three cells are tagged as @RISK outputs: the energy draw, the price draw and the net NPV. The net NPV is the primary decision output. The two input draws are kept as outputs so you can verify after simulation that their empirical distributions match the percentiles you typed in.

Verifying the output

When the simulation finishes, there are three things to look at. First, verify the simulated percentiles of the energy draw. The simulated P50 should match 1,970, the simulated P75 should match 1,870 and the simulated P90 exceedance should match 1,780. Within simulation noise — a few GWh at ten thousand iterations — any deviation beyond about one percent signals a typo in the input table.

Second, assess the shape of the energy distribution. You will see a concentration of mass between P75 and P50, where most of the expert's anchors live, and a flatter upper band between P50 and the maximum where the expert supplied only two points — the median and the absolute ceiling. That flat upper band is a real feature of your elicitation, not a bug. It is telling you that the expert did not pin down the high-wind end of the distribution. If the project's upside sensitivity matters for the investment case, go back to the consultant and ask for a P25 exceedance and a P10 exceedance figure. The tool will not invent that information for you — which is exactly why RiskCumul is the right function here.

Third, read the tornado on the net NPV output. Under the CfD, energy production should rank above power price in variance contribution because the revenue formula is dominated by the quantity of energy produced at a fixed strike. During the merchant tail, the ranking typically flips: price uncertainty becomes the larger contributor because the expected price range is proportionally wider than the energy range. That flip is a consequence you need to consider when sizing contingency reserves by year of operation rather than as a single number across the life of the project.

"When the shape comes from the expert, use RiskCumul. When the shape comes from an assumption you are making, use an alternate-parameter distribution — and name the assumption in the model."

Simulation settings

Ten thousand iterations is sufficient to produce stable P10, P50 and P90 figures on the primary output at the precision a credit committee reads. Use Latin Hypercube sampling. A single simulation is enough; add a second only if you want to check sensitivity to the random seed.

Translating to another sector

The translation is simpler than it looks. The quantity changes, the expert changes, the label changes, but the method is the same. The CROSS-INDUSTRY sheet in the workbook shows this as a read-across table with five columns — offshore wind, oil and gas reserves, tunnelling advance rates, insurance losses and mining ore grades — and a short recipe telling you which cells to replace when you adapt the MODEL sheet to your sector. In every case the pattern is: minimum, a handful of percentiles from your expert, maximum, RiskCumul written once, and a clean downstream model.

When your expert talks in percentiles, listen in percentiles. RiskCumul is the function that lets the model hear what the expert actually said.