Tutorials › VEE Accounting and Finance › Ranking Project Risks With Tornado Diagrams

VEE Accounting and Finance · Project Comparison and Uncertainty · Tutorial 497 of 996

Ranking Project Risks With Tornado Diagrams

Build a tornado diagram by converting low and high assumption values into NPV outcomes, then rank the assumptions by the spread in project value they produce.

Advanced 10 min read

What You'll Learn

  • Define a tornado diagram using low and high NPV outcomes around a base case.
  • Convert project assumptions into cash flows before recalculating NPV.
  • Calculate and rank NPV ranges even when an assumption’s higher value lowers NPV.
  • Interpret what a wide or narrow bar says about a project’s sensitivity.
  • Identify why a one-variable tornado diagram does not show joint effects or probabilities.

Why Rank Project Sensitivities?

A project estimate depends on assumptions: sales volume, operating costs, timing, salvage value, and the discount rate, among others. One-variable sensitivity analysis asks how NPV changes when one assumption changes while the others are held at their base-case values. A tornado diagram organizes those results so a decision-maker can quickly see which assumptions produce the widest range of NPV outcomes.

The diagram is a ranking tool, not a forecast. A wide bar means that the specified low-to-high range for an assumption creates a large NPV spread. It does not, by itself, say how likely either endpoint is, whether the assumption will vary across its entire range, or how assumptions move together.

Definition: A tornado diagram is a horizontal display of one-variable NPV sensitivities. For each assumption, the project NPV is calculated at a specified low value and a specified high value while all other assumptions are held at their base values. The assumption is ranked by the difference between its larger and smaller resulting NPV. The bars are commonly ordered from largest NPV range at the top to smallest at the bottom.

The word “low” in this method refers to the assumption value, not necessarily to the resulting NPV. For example, a higher discount rate usually reduces NPV, while a higher salvage value usually increases it. Record the NPV at each endpoint, identify which NPV is larger, and calculate the spread consistently:

$$ \text{NPV range for assumption } j = \max(\text{NPV}_{j,\text{low}},\text{NPV}_{j,\text{high}}) - \min(\text{NPV}_{j,\text{low}},\text{NPV}_{j,\text{high}}). $$

Build the Diagram From NPV Calculations

The base case is the project’s NPV at the central or best-estimate assumptions. Each sensitivity calculation changes only one assumption from that base. For every assumption, state the tested values, recalculate the project cash flows if necessary, discount those cash flows, and record the two endpoint NPVs. If the assumption is a cash flow, cost, or operating quantity, translate its tested values into cash flows before discounting. If it is the discount rate, hold the cash flows fixed and discount them at the tested rates.

A bar’s length represents an NPV range, not the numerical distance between the assumption’s endpoints. Thus a change of $100 in one input cannot be ranked directly against a change of 2 percentage points in another. Each input must first be translated into its effect on NPV.

1
Set the base case.
List the base assumptions, project cash flows, timing, and discount rate. Calculate the base NPV.
2
Choose a range for each assumption.
Use a stated low and high value for each input. Keep the ranges and units explicit.
3
Recalculate one input at a time.
For each endpoint, change that assumption only; retain all other assumptions at their base values.
4
Calculate and rank the NPV spreads.
Subtract the smaller endpoint NPV from the larger endpoint NPV, then order the assumptions from widest spread to narrowest.

Why the NPV Range Measures Sensitivity

For cash flows \(C_t\) received at the end of periods \(t=1,\ldots,n\), an initial outlay \(I_0\) at time 0, and an effective rate per period \(i\), the standard NPV calculation is:

$$ \operatorname{NPV}=-I_0+\sum_{t=1}^{n}\frac{C_t}{(1+i)^t}. $$

The model assumes that the cash flows occur at the stated times and that \(i\) is the appropriate rate per period. If \(i\) is an effective annual rate, the periods in this formula must be years. The formula does not adjust for uncertainty by itself; the sensitivity calculation comes from applying it to specified alternative assumptions.

For a fixed discount rate, suppose one assumption changes the cash flow at time \(t\) from \(C_{t,L}\) to \(C_{t,H}\), with all other cash flows unchanged. The difference between the two NPVs is:

$$ \operatorname{NPV}_H-\operatorname{NPV}_L = \left(-I_0+\sum_{s\ne t}\frac{C_s}{(1+i)^s}+\frac{C_{t,H}}{(1+i)^t}\right) - \left(-I_0+\sum_{s\ne t}\frac{C_s}{(1+i)^s}+\frac{C_{t,L}}{(1+i)^t}\right) = \frac{C_{t,H}-C_{t,L}}{(1+i)^t}. $$

The initial outlay and every unchanged cash flow cancel. What remains is the cash-flow difference discounted to the valuation date. More generally, the NPV range is the absolute difference between the endpoint NPVs, regardless of which input endpoint produces the larger value. This is why a cost input can be ranked with the same method as a revenue input even though its direction of effect is reversed.

Worked Example: Constructing and Ranking a Tornado Diagram

A hypothetical project requires an initial outlay of $1,000 and lasts three years. Annual cash flow before maintenance is $530, and annual maintenance cost is $80, giving base net cash flow of $450 at each year-end. The base discount rate is 10% effective annually. Test annual net cash flow from $400 to $500, initial outlay from $900 to $1,100, maintenance cost from $60 to $100, and discount rate from 8% to 12%. Calculate each NPV range and rank the inputs.

Method. Use one-variable-at-a-time NPV sensitivity. The three-year annuity factor at 10% is:

$$ a_{\overline{3}|}=\frac{1}{1.10}+\frac{1}{1.10^2}+\frac{1}{1.10^3} =2.486851991. $$

The base NPV is \(-1{,}000+450(2.486851991)=\$119.08\), rounded to cents. All endpoint NPVs below are calculated using unrounded factors; amounts are rounded to cents only for reporting.

Annual net cash flow. At $400 per year, NPV is \(-1{,}000+400(2.486851991)=-\$5.26\). At $500 per year, NPV is \(-1{,}000+500(2.486851991)=\$243.43\). The NPV range, calculated before rounding, is \(100(2.486851991)=\$248.69\).

Initial outlay. At an outlay of $900, NPV is \(-900+450(2.486851991)=\$219.08\). At an outlay of $1,100, NPV is \(-1{,}100+450(2.486851991)=\$19.08\). The range is \(\$219.0834-\$19.0834=\$200.00\). The larger outlay produces the lower NPV.

Maintenance cost. The $60 maintenance endpoint gives annual net cash flow of \(530-60=\$470\), and NPV \(-1{,}000+470(2.486851991)=\$168.82\). The $100 endpoint gives net cash flow of \(530-100=\$430\), and NPV \(-1{,}000+430(2.486851991)=\$69.35\). The range from unrounded endpoint NPVs is \(40(2.486851991)=\$99.47\).

Discount rate. At 8%, the three-year factor is \(1/1.08+1/1.08^2+1/1.08^3=2.577096987\). NPV is \(-1{,}000+450(2.577096987)=\$159.69\). At 12%, the factor is \(1/1.12+1/1.12^2+1/1.12^3=2.401831268\). NPV is \(-1{,}000+450(2.401831268)=\$80.82\). The range from unrounded NPVs is \(\$78.87\).

RankAssumptionEndpoint NPVsNPV range
1Annual net cash flow-$5.26 to $243.43$248.69
2Initial outlay$19.08 to $219.08$200.00
3Maintenance cost$69.35 to $168.82$99.47
4Discount rate$80.82 to $159.69$78.87

The ranking is based on the NPV spreads, not on the direction of the bars. The method avoids the common mistake of treating an input’s higher value as its higher NPV: higher maintenance cost and a higher discount rate both lower project value here.

Reading the Bars and Checking the Setup

A conventional tornado diagram places the base-case NPV on a common horizontal scale and draws one bar for each assumption, extending between that assumption’s two endpoint NPVs. The longest bar appears at the top. Bar position relative to the base-case NPV shows whether the tested outcomes fall below, above, or on both sides of the base case. Bar length shows the total NPV spread for the tested range.

The base value need not be exactly halfway between the two endpoint NPVs. A sensitivity can be nonlinear, and the selected endpoints need not be equally distant from the base assumption. The ranking still uses the difference between the two endpoint NPVs. If a diagram uses a horizontal axis that starts at zero rather than at the base NPV, check its scale carefully: the numerical endpoint NPVs, not the visual impression alone, determine the range.

Worked Example: Ranking a Terminal Value and a Discount-Rate Sensitivity

A hypothetical two-year project costs $1,500 initially and produces operating cash flow of $900 at each year-end. It also has a base salvage value of $150 at the end of year 2. The base effective annual discount rate is 10%. Compare the NPV ranges when annual operating cash flow is tested from $800 to $1,000, salvage value from $0 to $300, and the discount rate from 8% to 12%.

Method. Recalculate NPV at each stated endpoint while holding the other inputs at their base values. At 10%, the two-year annuity factor is \(1/1.10+1/1.10^2=1.735537190\), and the year-2 discount factor is \(1/1.10^2=0.826446281\). The base NPV is \(-1{,}500+900(1.735537190)+150(0.826446281)=\$185.95\).

Operating cash flow. At $800 per year, NPV is \(-1{,}500+800(1.735537190)+150(0.826446281)=\$12.40\). At $1,000 per year, NPV is \(-1{,}500+1{,}000(1.735537190)+150(0.826446281)=\$359.50\). The NPV range is \(200(1.735537190)=\$347.11\).

Salvage value. At $0 salvage, NPV is \(-1{,}500+900(1.735537190)=\$61.98\). At $300 salvage, NPV is \(-1{,}500+900(1.735537190)+300(0.826446281)=\$309.92\). The range is \(300(0.826446281)=\$247.93\). The salvage amount is received at the end of year 2, so it must be discounted for two years, not treated as a time-0 cash flow.

Discount rate. At 8%, the operating-cash-flow factor is \(1/1.08+1/1.08^2=1.783264746\), and the year-2 factor is \(0.857338820\). NPV is \(-1{,}500+900(1.783264746)+150(0.857338820)=\$233.54\). At 12%, the corresponding factors are \(1.690051021\) and \(0.797193878\); NPV is \(-1{,}500+900(1.690051021)+150(0.797193878)=\$140.63\). The range from unrounded endpoint NPVs is \(\$92.91\).

The ranking is operating cash flow (\$347.11), salvage value (\$247.93), then discount rate (\$92.91). A common mistake is to discount salvage value using the operating annuity factor. Salvage is a single cash flow at year 2; its correct present value uses \(1/(1+i)^2\).

What the Ranking Does—and Does Not—Show

The ordering answers a carefully limited question: given these chosen ranges and this base case, which single assumption produces the largest NPV spread when varied alone? A different range can change the ranking. If a tested range is unusually wide or narrow, the ranking may say more about that choice than about the project’s inherent exposure. Use ranges that are clearly stated and meaningful for the decision.

A tornado diagram does not assign probabilities to the endpoints, measure the chance that NPV will be negative, or account for dependencies between assumptions. For example, sales volume and operating cost may both change when activity changes. Varying one while holding the other fixed can be useful for isolating its individual effect, but it does not describe a joint outcome. Treat the diagram as a structured sensitivity summary, not as a probability distribution or a guarantee that all outcomes lie between the displayed endpoints.

Before interpreting a ranking, check that each NPV uses the same valuation date, cash-flow timing, and unit convention; that only one input changes per calculation; and that endpoint NPVs are compared rather than merely comparing input ranges. These checks prevent common errors such as using an annual cash flow as if it were a present value, overlooking the year in which salvage is received, or assuming that a higher input must produce a higher NPV.

Key takeaway: A tornado diagram ranks assumptions by the spread between their low-end and high-end NPVs. Calculate that spread in dollars, keep all non-tested assumptions at their base values, and interpret the ranking only in light of the ranges and one-variable-at-a-time method used.

Worked Example: Uneven Cash Flows and Three Sensitivities

A hypothetical project has an initial cost of $3,000 and expected year-end operating cash flows of $1,300, $1,500, and $1,700 over three years. The base effective annual discount rate is 10%, with no salvage value in the base case. Compare the NPV ranges for (a) a proportional change in all three operating cash flows from 90% to 110% of base, (b) salvage value from $0 to $500 at the end of year 3, and (c) a discount rate from 8% to 12%.

Method. First discount each dated cash flow. At 10%, the present values are \(1{,}300/1.10=\$1{,}181.82\), \(1{,}500/1.10^2=\$1{,}239.67\), and \(1{,}700/1.10^3=\$1{,}277.24\). Their unrounded sum is $3,698.72, so base NPV is \(\$698.72\).

Proportional cash-flow change. The present value of the operating cash flows is $3,698.72 before rounding. At 90%, NPV is \(-3{,}000+0.90(3{,}698.7228)=\$328.85\). At 110%, NPV is \(-3{,}000+1.10(3{,}698.7228)=\$1{,}068.60\). The range is \(0.20(3{,}698.7228)=\$739.74\).

Salvage value. The $0 endpoint leaves NPV at $698.72. At $500 received at the end of year 3, the added present value is \(500/1.10^3=\$375.66\), giving NPV of $1,074.38. Thus the range is $375.66.

Discount rate. At 8%, the discounted operating cash flows are \(1{,}300/1.08=\$1{,}203.70\), \(1{,}500/1.08^2=\$1{,}286.01\), and \(1{,}700/1.08^3=\$1{,}349.51\). NPV is $839.23. At 12%, the corresponding present values are $1,160.71, $1,195.79, and $1,210.03, giving NPV of $566.53. The range from unrounded totals is $272.70.

The ranking is proportional operating cash flow (\$739.74), salvage value (\$375.66), then discount rate (\$272.70). This example also shows why each cash flow must be discounted for its own timing: applying one factor to the sum of uneven cash flows would give an incorrect result.

Check Your Understanding

For each problem, calculate the requested NPV range or ranking. Round dollar answers to cents.

  1. A two-year project has an initial cost of $600, annual year-end net cash flow of $360, and an effective annual discount rate of 10%. If the annual cash flow is tested from $320 to $400, what is its NPV range? (Answer: $138.84)
  2. A project costs $1,200 initially, produces $700 at each of the next two year-ends, and is discounted at 10% effective annually. Salvage is tested from $0 to $242 at the end of year 2, with other inputs fixed. What NPV range does salvage produce? (Answer: $200.00)
  3. A three-year project has an initial cost of $2,500 and annual year-end cash flow of $1,000. Calculate the NPV range when the effective annual discount rate is tested from 8% to 12%. (Answer: $175.27)
  4. A project has three year-end cash flows and a 10% effective annual discount rate. Annual cash flow is tested from $500 to $560, while initial cost is separately tested from $900 to $1,050. Calculate both NPV ranges and state which assumption ranks first. (Answer: Cash-flow range $149.21; initial-cost range $150.00; initial cost ranks first.)
  5. For a hypothetical project, a tornado diagram shows a $420 NPV range for sales volume and a $180 NPV range for discount rate under the ranges selected. What can be concluded, and what cannot be concluded from those figures alone? (Answer: Sales volume produces the wider one-variable NPV spread for the selected ranges; the figures alone do not establish likelihood, joint effects, or which assumption will actually vary more.)
Clinical Biostats