We often speak of the return on investment of a software or system or IT project as the chief justification for deciding to proceed with the effort. The term is sometimes adopted notionally, so we might say that the ROI of certain software will be better efficiency, without articulating a measurement of efficiency. This calls for precise definitions of ROI. It turns out there is more than one, and we can use each for a different kind of decision. This article describes the ideas behind the calculations. The detailed formulas are in Appendix 3..
Calculating the future
Someone once said, "It is impossible to predict the future, but that is our job." Those who are responsible for reasoning about the value of future investments need to work with incomplete information. For example, it is impossible to know for certain what the future revenue of a new product will be. Nevertheless, you need that revenue for computing the expected ROI of bringing that product to market. Fortunately, there is a way forward.
The sections that follow present several types of ROI with their associated calculations. When using the various equations that follow, you can use random variables (see Appendices 1 and 2) in place of the fixed values. It is common in modern business analysis to use random variables with triangular distributions, as described in Appendix 1.
- If you are already familiar with the concepts of random variables, read on. If you are not, you will find it helpful to read the appendices first.
- You might also find it useful to read the introduction to finding the value of ongoing development efforts found in my previous article, "Calculating and Improving your Return on Investment of Software and System Programs." Communications of the Association for Computing Machinery (Digital Edition), September, 2011. This article provides the explicit formula for the ideas in that earlier article.
To-dateROI and To-goROI
To get started, all of the kinds of ROI are based on the same core concept: the return on investment, generally speaking, is the ratio of the change of value to the cost of the investment. In this formula, V0 is some initial value, V1 is the value at some later date, and I is the money spent in the meantime:
It is the application of this equation that varies with the kind of asset.
The simplest example of ROI is in reasoning about some capital asset, such as a share of stock that you buy at one price and sell at another. There are two easily understood values used in the computation: the purchase price (pp) and sales price (sp), both of which are values set by the market. The ROI in this case is the ratio of the change of the price over the cost of purchasing the stock. In this case:
Even in this case, there could be variations. Let's suppose that an investor, being a professional, has a couple of key questions:
- Have I made a good investment (What would be the ROI if I were to sell today?)
- Should I invest in the asset? (What would be the ROI if I bought some of this asset today?)
The first question is retrospective, because it addresses how well the investor made decisions. The answer might lead to a change in investment strategy. The second question is part of implementing the investment strategy. Of course, answering the two questions requires different ROI calculations:
- Here, the V1 is today's value (the proceeds that would accrue from selling all holdings at the current price), plus whatever benefits the investor has received to date, such as dividends, the V0 and I are the sums of all of the costs of all of the investments in the asset.
- Here, the V1 is the estimated proceeds from the sale of the asset at some set future date, the Vo is the initial cost of the asset, and I is the sum of what you expect to spend on the investment, the initial costs and future payments.
The cases are almost completely independent. The previous costs (already spent) that are used for the to-date case have no place in the to-go case.
Going back to the first equation, in investment analysis (IA), the To-date ROI is the random variable using that equation, where
- V1 = NPVtoday + sum of actual benefits to date
- VO, I = the sum of the costs to date This assumes the NPV at the onset of the project
Notice that I is based on actual expenditures. In most cases, it is reasonable to set NPVprogram_onset to zero.
For IA programs, "end of life" is when all costs and benefits end. At that point, the value is zero. More generally, an IA investment depreciates after delivery.
In the To-go ROI, all of the past costs and benefits are ignored. All that matters is the discounted future costs and benefits. We can apply the base equation to get this formula:
The NPV and future cost calculations involve future values captured as random variables in IA, so this formula uses the IA Monte Carlo engine (see (Appendix 2).
Given that IA contains both actual and forecasted costs and benefits, other useful ROI calculations are possible. For example, you might decide to invest in a program if there is sufficient expected return over the total life of the investment. In this case, you would compute the forecasted To-date ROI at the end of the program. Because it has no value at the end of the program, by setting the NPVprogram_onset to zero, we find:
At the true end of the program, the terms are all actuals. Before then, you might want to forecast the totalROI, where terms are a mix of discounted future values and actuals. In this case, the totalROI is a random variable and found by using the Monte Carlo engine in IA.
ROI predictions are generally calculated as of today. However, because IA contains the full lifecycle of the costs and benefits of the investment -- the past values as actuals, and the future values as random variables -- it is possible to set any reference date for the calculations. That is, you can forecast the distributions of NPV, as well as the To-go ROI and To-date ROI at any future date. The date of delivery is an example. You would forecast the values when the product benefits would start. This might be a good calculation for comparing two investments with different delivery dates.
The Total ROI is the forecasted To-date ROI with program end as the delivery date.
Notionally, return of investment (ROI) notionally is the ratio of benefit to expense. Anyone who has limited funds would want to use those funds to maximize the ratio. Even for simple investments, there is more than one flavor of ROI, each used to answer to a different question. This article introduces three of the most useful:
- To-date: What return have I gotten for the investment I have made?
- To-go: What return can I expect from future investments?
- Total: At the end of the program, what ROI can I expect from all of the investments?
The detailed formulas are in Appendix 3.
This article took considerable care in preparation. Much thanks to Jim Densmore of IBM for his edits, suggestions, and challenges. Without his help, it could not have been written.
Appendix 1. Random variables
Suppose that you are uncertain about the value that you want to use. For example, the sales volume in a future period of an undelivered product might be important, but no one can be certain of the actual value. In modern business analytics, it is common practice to specify such uncertain quantities as random variables. What follows is a brief explanation of their use. (A much more extensive treatment is found in Douglas Hubbard's book, How to Measure Anything: Finding the Value of Intangibles in Business (2nd ed.), Wiley, 2010) Given that we are not 100% certain of a future value, the next best thing is to specify that the value of v can be any value within a range. For example:
a ≤ v ≤ b
By this we are saying the probability is zero that v is less than a or greater than b (in some cases, we can let a equal -∞ or b equal ∞). We are also saying that the probability is one that v lies between a and b. We can go further and suppose that some values for v are more likely than others. In that case, we can specify the likelihood of each possible value of v. Therefore, we will have a curve that gives, for each possible value of v, the probability of v taking that value. Thus, a random variable is a quantity described by a curve that gives, for each value in a range, the probability of it taking that value. The curve is called the probability distribution of the random variable.
An important property of these distributions is that, because a random variable must take some value, the sum of the probabilities of the values must equal one.
For example, when we capture the best case (H), worst case (L), or most likely value (E) of the future sales volume, mathematically, we can specify its random variable with a distribution that looks like Figure 1.
Figure 1. A triangular distribution for a random variable
The height of the curve at any point along the scale represents the probability of the random variable taking that value. Hence, we have chosen a distribution with no probability below L or above H, with a peak at E. The heights are chosen so that the area of the triangle (sum of all the probabilities) is 1. In this case, the probability of v taking a value near L or H is small and the probability of taking a value near E is relatively high.
Of course, the shape of the distribution can be any curve, given that the area under that curve is 1.
In summary, a random variable is a quantity that can take any value. However, some values are more probable than others. So a random variable is specified by the function that assigns a probability to each value. This function is called the probability distribution of the random variable.
Appendix 2. Calculating with random variables: Monte Carlo simulation
Suppose that you want to add two random variables, v1 and v2. How would you proceed? First note that the sum would be another random variable. Therefore, what you would need is the probability distribution of the sum. There is no formula for that distribution, but there is an effective, commonly used numerical approach known as the Monte Carlo simulation.
The idea behind the Monte Carlo simulation is to use a random number generator take a sample value of v1 and a sample value of v2 and then add them. The values are selected according to the probability distributions of each of the variables. The more likely values are taken more often. Now save that sum and do the same thing many times, say 100,000 times, and store each of the sums. For each of the sums, you can compute the probability by looking at the frequency in the collection of saved sums (some sums are more frequent than others) and dividing by the number of samples (actually, you have to round the sums to get the counts). What you get is an approximation of the distribution of the sums.
Let's look at an example where v1 has a triangular distribution with L = 3, E = 4, H = 7, as shown in Figure 2, and v2 has a triangular distribution with L = 1, E = 6, H = 7, as Figure 3 shows.
Figure 2. Triangular distribution graph
Figure 3. Triangular distribution graph
Figure 4 gives the distribution of the sum of the two random variables shown in Figures 2 and 3, which you can find by using a Monte Carlo simulator. This was found by using 100,000 samples and computed in IBM Rational Focal Point.
Figure 4. The simulated distribution of the sum (from 100,000 samples)
First, notice that the sum is not another triangular distribution, but somewhat closer to a normal distribution, a bell-shaped curve. The peak (mode) of the distribution is 9.80. This is to be expected from the mathematics of probability (in particular, the central limit theorem). The distribution of the sum makes sense. For example, we would expect the most likely value of the sum to be 10, the sum of the two most likely values, but the simulation found 9.8. The discrepancy is due to chance and would diminish with more samples. Also, notice that the probability approaches zero below 4, the sum of the lows (not specifically called out in Figure 4, but apparent), and also approaches zero above 14, the sums of the highs.
Finally, fixed and random variables are easily combined. You can treat a fixed variable as a random variable that takes a single value with probability of one and the probability of all other values as zero.
Appendix 3. The ROI formulas
Suppose that, in our program, there are T time intervals, NB identified benefits, and NC identified costs. Note that each cost and benefit is a time series. Then:
- For 0 ≤ t ≤ T and 1 ≤ n ≤ NB, let = the value of the nth benefit at interval t,
- For 0 ≤ t ≤ T and 1 ≤ m ≤ Nc, let = the value of the mth cost at interval t.
Before proceeding, there is an important point to make: All of the time series are revised throughout the lifecycle, so they are time-dependent. The time series are each captured as a series of snapshots. Therefore, as more information comes in, the random variables should be updated throughout the lifecycle. As time passes, estimates convert to actuals, and the future values are updated. In practice, each term of the cost and benefits time series is also time-dependent. This is discussed in more detail in the sections on formulas, To-date and To-go ROI and Total ROI.
Bk(s) and Cl(s) are the snapshots of the benefits and cost streams. To avoid clutter, we will drop the snapshot variable unless necessary. We need more notations:
- Let r = the reference period for the calculation, the current period or some specified future period
- For 1 ≤ n ≤ NB, let rbn = the discount rate of the benefit Bn
- For 1 ≤ m ≤ NB, let rcm = the discount rate of the cost Cm
- For a given period t and reference period r, let the sum of all the discounted benefits at t with respect to r be:
- Similarly, for a given period t and reference period r, let the sum of all of the discounted benefits at t with respect to r be:
Notice that the terms of the time series might be random variables, fixed variables, or both. In any case, they can be summed using Monte Carlo simulation, as needed.
In this notation, we can define the net present value NPV at period r to be:
Notice that for any two periods, s and t:
In this calculation, TodateROIs is the special case ROIs,0. In this case, the Bj,s and Cj,s are generally actuals.
Finally, TodateROI is ROIT,0.
By the definition of end of life, NPVT = 0 since, there are no costs or benefits remaining. Also, in most cases, NPV0 is close to 0, since all of the costs are in the future. Thus, by setting NPV0 to be 0, we get:
- For more about Focal Point:
- Browse the Rational Focal Point overview page, as well as the developerWorks page, where you'll find data sheets, system requirements, specific benefits, and related articles and white papers.
- Watch these brief demos:
- Check the Rational Focal Point 6.5 Information Center for the user guide and links to other useful resources.
- Visit the Rational software area on developerWorks for technical resources and best practices for other Rational Software Delivery Platform products.
- Subscribe to the developerWorks weekly email newsletter, and choose the topics to follow.
- Stay current with developerWorks technical events and webcasts focused on a variety of IBM products and IT industry topics.
- Improve your skills. Check the Rational training and certification catalog, which includes many types of courses on a wide range of topics. You can take some of them anywhere, any time, and many of the "Getting Started" ones are free.
Get products and technologies
- Download a free trial version of Rational software.
- Evaluate other IBM software in the way that suits you best: Download it for a trial, try it online, use it in a cloud environment, or spend a few hours in the SOA Sandbox learning how to implement service-oriented architecture efficiently.
- Join the Rational Focal Point forum to ask questions and participate in discussions.
- Rate and write a review of Rational Focal Point. It's quick and easy.
- Share your knowledge and help others who use Rational software by writing a developerWorks article. Find out what makes a good developerWorks article and how to proceed.
- Follow Rational software on Facebook, Twitter (@ibmrational), and YouTube, and add your comments and requests.
- Ask and answer questions and increase your expertise when you get involved in the Rational forums, cafés, and wikis.
- Get social about thought leadership. Join the Rational community to share your Rational software expertise and get connected with your peers.
Dig deeper into Rational software on developerWorks
Get samples, articles, product docs, and community resources to help build, deploy, and manage your cloud apps.
Experiment with new directions in software development.
Software development in the cloud. Register today to create a project.
Evaluate IBM software and solutions, and transform challenges into opportunities.