Monte Carlo schedule risk analysis (and what a P80 date is)
How simulating a schedule thousands of times turns a single deterministic finish date into an honest probability distribution you can commit to.
Last updated: July 2026
A Monte Carlo schedule risk analysis (SRA) replaces the single, deterministic finish date on a Gantt chart with a probability distribution of finish dates. Instead of one number that pretends the future is certain, you get a curve that answers the question your board actually cares about: how likely are we to hit this date, and what date can we commit to with 80% confidence?
The method works by running the schedule thousands of times. On each run, every task's duration is drawn at random from a range you supply, and uncertain risk events are switched on or off according to their probability. Each run produces one possible finish date; ten thousand runs produce a distribution of ten thousand finish dates. From that distribution you read confidence levels — the P50, P80, and P90 — and you learn which tasks and risks are actually driving the outcome.
Why a single-date schedule is a lie
A deterministic schedule assigns one duration to every task and reports one finish date. But every task duration is really a range, and the project finish is the sum of dependent ranges along the longest path. Because delays accumulate down a chain while early finishes rarely get passed forward, the deterministic date is almost always optimistic — it behaves like a best case, not a most-likely case.
Worse, parallel paths create merge bias: when two or more chains feed one milestone, the milestone waits for the slowest, so the more paths you merge, the more likely at least one is late. A deterministic plan ignores this entirely. Monte Carlo simulation captures both effects, which is why its P50 is frequently later than the deterministic date.
Three-point estimates and the PERT-Beta distribution
Monte Carlo needs a duration range for each task, not a point. The standard input is a three-point estimate: an optimistic (best-case) duration, a most-likely duration, and a pessimistic (worst-case) duration. These three numbers define a distribution the simulation samples from.
The most common choice is the PERT-Beta distribution. It is bounded by the optimistic and pessimistic values, peaks at the most-likely value, and is skewed — which matches how real tasks behave, since they can run far over but only modestly under. Triangular and uniform distributions are simpler alternatives; PERT-Beta is preferred because its smoother shape and tunable skew better reflect estimation reality.
- Optimistic — the duration if almost everything goes right.
- Most likely — the single best guess (the mode of the distribution).
- Pessimistic — the duration if things go badly but not catastrophically.
Injecting discrete risk events
Task-duration uncertainty is only half the picture. The other half is discrete risk events: a CMC vendor slips, an assay fails and has to be repeated, a long-lead part is back-ordered, a gate review demands extra work. Each such risk has a probability of occurring and an impact (extra days, or a multiplier on affected tasks).
On every iteration the simulation rolls each risk: with probability p the event fires and its impact is applied to the relevant tasks; otherwise it does not. Across thousands of iterations a 30%-likely, 20-day risk shows up in roughly 30% of runs, lengthening the tail of the distribution exactly as much as it should. This is what separates true schedule risk analysis from simply sampling task ranges.
From iterations to a finish-date distribution
Each iteration is one complete, internally consistent version of the project: every task gets a sampled duration, every risk is resolved, and the critical path is recomputed for that specific scenario. The result is a single finish date for that run. Repeat thousands of times and you accumulate a histogram of finish dates — the project's outcome distribution.
The histogram is usually summarized as an S-curve (cumulative probability). The S-curve reads directly: pick any date on the x-axis and the curve tells you the probability of finishing on or before it. Pick any confidence level on the y-axis and it tells you the date that delivers it.
Reading P50, P80, and P90
A P-value is a percentile of the finish-date distribution. The P50 is the date by which the project finishes in 50% of simulations — a true coin-flip median, and a far more honest internal target than the deterministic date. The P80 is the date hit in 80% of runs: late enough to absorb most realistic variation, which is why it is the common choice for external commitments and board dates. The P90 is more conservative still, reserved for high-stakes regulatory or contractual deadlines.
The gap between P50 and P80 is the cost of confidence — the extra calendar time you are buying to raise your odds from a coin flip to a near-certainty. That gap is also the rigorous basis for sizing a project buffer: rather than guessing, you set the buffer to the P50-to-P80 spread the simulation actually produced.
- P50 — median; a realistic internal target, not a promise.
- P80 — the typical committed date for sponsors and boards.
- P90 — conservative; for regulatory or contractual deadlines.
Criticality index vs. the critical path
In a deterministic plan the critical path is fixed. In simulation it is not: because durations vary run to run, different paths become critical in different iterations. The criticality index of a task is the percentage of iterations in which it lands on the critical path. A task that is critical in 95% of runs deserves your attention far more than one that is critical in 10%.
This is one of the most useful outputs of an SRA. A deterministic Gantt can hide a near-critical path that is critical most of the time once uncertainty is modeled — and the criticality index surfaces exactly those tasks the static plan underrates.
Tornado sensitivity — which tasks drive the risk
A tornado chart ranks tasks and risk events by how strongly each one drives the variation in the finish date, measured by the correlation between an input's sampled duration and the project outcome across all iterations. Bars are sorted longest-to-shortest, producing the tornado shape.
The value is focus. Of hundreds of tasks, typically a handful dominate the spread of outcomes. Tightening estimates, adding mitigation, or buying down risk on those few items moves the P80 more than touching everything else combined — so the tornado chart tells you where management attention pays off.
Sizing buffers from the distribution
Monte Carlo output feeds directly into Critical Chain buffer sizing. Instead of the rule-of-thumb 50%-of-removed-safety method, you size the project buffer from the simulated distribution: the buffer equals the gap between your aggressive median (P50) plan and the confidence level you are committing to (commonly P80). Feeding buffers are sized the same way from the distributions of their supporting chains.
Buffers derived this way are defensible. They reflect the actual modeled uncertainty of your specific program — its merge points, its risk register, its task ranges — rather than a generic percentage, which is what AACE RP 132R-23 Level 4 risk-driven scheduling expects.
How CritPath AI runs Monte Carlo
CritPath AI runs 10,000-plus vectorized iterations on a NumPy/SciPy engine, so a full schedule simulation completes in seconds rather than the minutes a row-by-row desktop tool takes. It samples PERT-Beta (or triangular) task durations, injects discrete risk events by probability and impact, optionally applies duration correlation between related tasks, and runs a forward pass across the network each iteration to derive each task's criticality index — how often it finishes at and drives the project end (a simplified, finish-to-start-focused determination rather than a full per-iteration CPM honoring every dependency type).
The outputs are first-class objects in the product: the P50/P80/P90 S-curve, per-task criticality index, a tornado sensitivity chart, and buffer sizes fed straight into Critical Chain and Drum-Buffer-Rope. A Claude + Gemini copilot, grounded in your real dependency graph, explains in plain language which tasks dominate the tornado and what a change does to your P80. It is $10 per user per month, with AI usage billed separately by metered usage — versus legacy schedule-risk tools at roughly $10K-plus per seat or quote-only.
Frequently asked questions
What is a P80 date?
A P80 date is the finish date a project hits in 80% of Monte Carlo simulation runs — there is an 80% probability of finishing on or before it. It is the common choice for external commitments and board dates because it absorbs most realistic variation, sitting later than the optimistic P50 (median) but earlier than the very conservative P90.
Why is the deterministic schedule date earlier than the P50?
Because delays accumulate down a chain while early finishes rarely get passed forward, and because merge bias means a milestone waits for the slowest of its parallel feeders. A single-point schedule ignores both, so its date behaves like a best case. Monte Carlo captures them, which is why its median (P50) is frequently later.
What is the difference between the critical path and the criticality index?
The critical path is the longest dependent chain in one fixed scenario. The criticality index is the percentage of simulation iterations in which a task lands on the critical path once durations vary. It reveals near-critical tasks a static plan underrates — a task critical in 90% of runs needs attention a deterministic Gantt may hide.
What does a tornado chart tell me?
A tornado chart ranks tasks and risk events by how strongly each drives the variation in the finish date, sorted longest bar first. Usually a handful of inputs dominate the spread, so it tells you where mitigation and tighter estimates will move your P80 date the most.
How many iterations does CritPath AI run?
CritPath AI runs 10,000-plus vectorized iterations on a NumPy/SciPy engine, sampling PERT-Beta durations, injecting discrete risk events, and optionally applying duration correlation. A full schedule simulation finishes in seconds and produces a P50/P80/P90 S-curve, criticality index, tornado chart, and Critical Chain buffer sizes.
Related
See the math on your own schedule
CritPath AI is $10/user/month — real Monte Carlo, CCPM, decision gates, and a schedule-aware AI copilot. Join the waitlist for beta access.
Join the waitlist