# Decision Trees with Discounted Cash Flows

Usually, when you build a decision tree you assume that all events take place close enough together that time value of money is not important. However, to be precise, you should replace each incremental value with a present value. The easiest way to do this is to create your own discounting function and use it in each incremental value entry.

Let’s modify the real estate tree to discount all cash flows by 7% per year. Furthermore, let’s assume you purchase the property in year zero, and each rezone request takes a year. This means you can sell the property in year one or two depending on if you appeal the zoning board’s decision.

You start with the following decision tree:

The first thing you will do is edit the -200000 in the **Buy
Property** node and replace it with Pv(-200000,0).
**Pv** is a function that will be created later. It takes two
arguments, the cash flow amount and the year you encounter the
cash flow.

Note that **Pv** now shows up as an undefined node. Select
this node and enter the following formula:

Pv(cash,year):=cash/(1+Int)^year

Also, enter the following definition for the discount rate:

Int:=7%

With a little formatting change on the nodes **Pv** and **Int**,
the tree now looks like this:

Since you don’t
want the node **Pv** showing up every place you use it, you
should make it a hidden node. To do this, select **Pv** and
then point to **Node** in the **Format** menu and click **Hide
Node**. If you later want to display **Pv** so that you can
change it, just point to **Node** in the **Format** menu
and click **Show Hidden Nodes**.

After hiding **Pv** and using it in every incremental cash
flow, you get the following tree:

One interesting thing to note is that applying time value of money to the real estate example changed the outcome values enough that now the best option is to do nothing.

This example uses a custom function to calculate present
values. Using a custom function instead of a built in function
allows you to enter the discount rate in the definition of **Pv**
rather than have to include it in each incremental value.
Building your own discounting function also gives you the
opportunity to specify input data in any way you like. For
example, instead of using the year values 0, 1, 2, etc., suppose
you want to enter actual years such as 2002, 2003, 2004, etc. You
can do this simply by changing the definition of **Pv** from

Pv(cash,year):=cash/(1+Int)^year

to

Pv(cash,year):=cash/(1+Int)^(year-2002)

This will discount all values back to the year 2002.

The following possible definition for **Pv** accepts a list
of annual cash flow values:

Pv(...):=npv(Int,arguments)

With this definition, an expression such as Pv(0,-100,-50) means there is a cash outflow of 100 and 50 in years one and two respectively.

You are free to choose any definition for **Pv** that best
suits your analysis.