How to Set Bid Contingency with Monte Carlo

A cost estimator's guide to replacing gut-feel percentages with a defensible number — no statistics degree required.

Cost Estimating Guide · BidRisk Analyzer

Every estimator has been asked the question in a bid review: "How much contingency are we carrying, and why that number?" And most of the time, the honest answer is some version of "it felt about right." Ten percent. Maybe fifteen if the job looks hairy. The number is defensible only until someone asks a hard question about it.

There is a better way to arrive at contingency — one that produces a number you can actually explain, line by line. It's called Monte Carlo simulation, and despite the intimidating name, the idea underneath it is something every estimator already understands intuitively. This guide walks through it in plain language: what it is, how to read the output, and how to turn it into a contingency figure that holds up under scrutiny.

Why a single-number estimate hides your real risk

When you total a bid, you produce one number. But you know perfectly well that number isn't certain. Your steel line could come in under budget or blow past it. Your sitework could hit rock. Every line item you price has a realistic range — a best case, a worst case, and a most-likely figure in between.

A single-number estimate throws all of that away. It collapses a range of possibilities into one point and presents it with false confidence. The question a bid review actually cares about — "how confident are we?" — can't be answered by a point. It can only be answered by a distribution.

What Monte Carlo simulation actually does

Here's the whole idea. Instead of pricing your estimate once, a Monte Carlo simulation prices it thousands of times. On each pass, it randomly draws a cost for every line item from within that item's range, then adds everything up for a total. Run it ten thousand times and you don't get one total — you get ten thousand possible totals.

Plotted together, those totals form a distribution: a picture of every way the job could realistically land, and how likely each outcome is. That picture is the difference between guessing and knowing your odds. And it's the foundation everything else is built on.

The mechanics sound complex, but the input is simple: your existing line-item estimate, plus a low and high for each item. The simulation does the rest.

Reading the results: P10, P50, and P90

Once you have a distribution of ten thousand outcomes, percentiles tell you where any given cost falls in the pile. Three of them do most of the work:

PercentileWhat it meansHow to use it
P1010% of outcomes come in at or below this costAn optimistic figure. The job only beats it one time in ten — don't bank on it.
P50The median — half above, half belowYour best single "expected" cost.
P9090% of outcomes come in at or below this costA conservative, defensible number you can stand behind in a review.

Many estimators also watch P80 as a middle checkpoint — safer than the median, without reaching for the most conservative figure. Where you price depends on how much risk you're willing to carry to stay competitive.

Contingency, finally defined

Here's the payoff. The gap between your P50 (expected cost) and your chosen confidence level (say P80 or P90) is your contingency. Not a round percentage pulled from habit — a measured figure the simulation actually earned.

If your P50 is \$12.7M and your P90 is \$13.6M, then carrying the job to a P90 confidence means roughly \$900K of contingency. And you can say exactly what that buys you: nine times out of ten, if your ranges were honest, the job lands at or under that number. That's a sentence you can say out loud in a review and defend.

This reframes contingency from a cost buffer you hope is enough into a stated probability. "We're priced at P80" means something specific and checkable. "We added 10%" does not.

The mistake that makes your P90 too low

There's one trap that quietly undermines most simulations, and it's worth understanding because it's the difference between a defensible P90 and a dangerous one.

A naive simulation treats every line item as independent — as if a steel price spike has no bearing on whether your rebar or your envelope also runs over. In the real world, that's false. Overruns cluster. The same crew falls behind on multiple trades at once. One supplier's price increase hits everything they sell you. A tight labor market pressures every labor-heavy line simultaneously.

When a model ignores this, the highs and lows partially cancel out across items, and your P90 comes out artificially tight. The model looks confident. It's actually just blind to the scenario where several things go wrong together — which is exactly the scenario that blows up a bid.

The fix is correlation: telling the simulation which items share a risk driver — same crew, same supplier, same commodity index — so they move together. Grouping them doesn't shift your P50 much, but it widens your P90 to reflect real, correlated risk you were carrying either way. It just makes that risk visible before the bid instead of after.

Where do the ranges come from? Anchor to AACE class

Every simulation needs a low and high for each line item. Rather than guess, anchor them to how well the project is actually defined. The AACE International cost estimate classification maps definition maturity to an expected accuracy range:

AACE ClassProject definitionTypical accuracy range
Class 5Concept screening (0–2%)−50% / +100%
Class 4Feasibility (1–15%)−30% / +50%
Class 3Budget authorization (10–40%)−20% / +30%
Class 2Control / bid (30–75%)−15% / +20%

The logic is intuitive: a rough concept could land far from your estimate, so its ranges spread wide; a nearly complete design is well understood, so its ranges sit tight. Pick the class that matches your current level of definition and it sets a sensible starting range across every line — which you then tighten or widen per trade based on what you actually know. (Ranges per AACE Recommended Practice 18R-97.)

One caution: a screening-level estimate that reports the tight band of a finished design isn't being confident. It's wrong. Match your ranges to your definition maturity, and let the simulation tell you the rest.

From cost to price: the last step

Knowing what a job will cost is only half the question. The other half is what to charge. Once you have a cost distribution, you can set a target gross profit and a proposed bid price, and ask: what's the probability this bid actually clears my margin? It's the share of simulated outcomes where price minus cost meets your target.

That turns bidding into a visible decision instead of a coin flip. Bid lower and you win more often, at lower odds of hitting margin. Bid higher and you protect margin, at lower odds of winning. Either way, you're choosing a point on a curve you can see — not guessing in the dark.

Run this on your own estimate

BidRisk Analyzer does everything in this guide — paste your line items, set ranges, read your P-levels and contingency in minutes. Free for 14 days.

Start free trial