Introduction
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.
Notes:
 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.
TodateROI and TogoROI
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, V_{0} is some initial value, V_{1} 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:
 Todate
 Have I made a good investment (What would be the ROI if I were to sell today?)
 Togo
 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:
 Todate
 Here, the V_{1} 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 V_{0 }and I are the sums of all of the costs of all of the investments in the asset.
 Togo
 Here, the V_{1} is the estimated proceeds from the sale of the asset at some set future date, the V_{o} 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.
Important:
The cases are almost completely independent. The previous costs (already spent) that are used for the todate case have no place in the togo case.
Going back to the first equation, in investment analysis (IA), the Todate ROI is the random variable using that equation, where
 V1 = NPV_{today} + 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 NPV_{program_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 Togo 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).
Total ROI
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 Todate ROI at the end of the program. Because it has no value at the end of the program, by setting the NPV_{program_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.
Reference dates
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 Togo ROI and Todate 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.
Note:
The Total ROI is the forecasted Todate ROI with program end as the delivery date.
In summary
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:
 Todate: What return have I gotten for the investment I have made?
 Togo: 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.
Acknowledgement
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, v_{1} and v_{2}. 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 v_{1} and a sample value of v_{2 }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 v_{1} has a triangular distribution with L = 3, E = 4, H = 7, as shown in Figure 2, and v_{2} 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 bellshaped 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, N_{B} identified benefits, and N_{C} identified costs. Note that each cost and benefit is a time series. Then:
 For 0 ≤ t ≤ T and 1 ≤ n ≤ N_{B,} let = the value of the n^{th} benefit at interval t,
 For 0 ≤ t ≤ T and 1 ≤ m ≤ N_{c,} let = the value of the m^{th} 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 timedependent. 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 timedependent. This is discussed in more detail in the sections on formulas, Todate and Togo ROI and Total ROI.
B^{k}(s) and C^{l}(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:
And then:
Notice that for any two periods, s and t:
In this calculation, TodateROI_{s} is the special case ROI_{s,0}. In this case, the B_{j,s} and C_{j,s} are generally actuals.
Finally, TodateROI is ROI_{T,0}.
By the definition of end of life, NPV_{T }= 0 since, there are no costs or benefits remaining. Also, in most cases, NPV_{0} is close to 0, since all of the costs are in the future. Thus, by setting NPV_{0 }to be 0, we get:
Resources
Learn
 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.
 Attend a free developerWorks Live! briefing to get uptospeed quickly on IBM products and tools, as well as IT industry trends.
 Watch developerWorks ondemand demos, ranging from product installation and setup demos for beginners to advanced functionality for experienced developers.
 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 serviceoriented architecture efficiently.
Discuss
 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.
Comments
Dig deeper into Rational software on developerWorks
 Overview
 Lifecycle management
 Product and systems development
 Business systems modernization
 Technical library (tutorials and more)
 Forums
 Communities

Bluemix Developers Community
Get samples, articles, product docs, and community resources to help build, deploy, and manage your cloud apps.

developerWorks Labs
Experiment with new directions in software development.

DevOps Services
Software development in the cloud. Register today to create a project.

IBM evaluation software
Evaluate IBM software and solutions, and transform challenges into opportunities.