Time Value of Money

The time value of money is a phenomenon whereby the value of money changes with time. One reason why interest is required to facilitate lending is because people attach different values of money at different times. For example, if I needed to borrow money from my neighbor today, they would no longer have immediate use of the money. But money in the future may be worth less to the neighbor than money that they can use now.

Therefore, paying interest can be used to convince my neighbor to part with his money today, if he is confident that he will get the money back in the future along with the interest.

The value of money today of money to be received at some point in the future is called the present value. The present value of L to be received at time t can be calculated by multiplying it by what we call the discount function. We define the discount function as:

v(t) = \frac{1}{a(t)}

Where a(t) is the accumulation function. This makes sense because if we were to invest Lv(t) today, we would expect it to grow to Lv(t)a(t) = L at time t.

Example

Suppose we will receive 5,000 at time 5. If the effective interest rate is 5%, how much is it worth today?

Since TmVal’s Accumulation class comes with an accumulation function, it also comes with a discount function. We can find the present value of 5,000 by passing it to the discount_func() method, along with the time indicating how far back we would like to discount the value.

In [1]: from tmval import Accumulation

In [2]: my_acc = Accumulation(.05)

In [3]: pv = my_acc.discount_func(t=5, fv=5000)

In [4]: print(pv)
3917.630832342294

One neat thing TmVal can do is that it can find out how much you need to invest in the future to get a desired amount at an even later point in time. For example, if you wanted to make sure you had 10,000 at t_2 = 10, how much do you need to invest at t_1 = 5 when the effective interest rate is 5%?

In [5]: from tmval import Accumulation

In [6]: my_acc = Accumulation(.05)

In [7]: future_principal = my_acc.future_principal(t1=5, t2=10, fv=10000)

In [8]: print(future_principal)
7835.261664684589

You need to invest 7,835.26 5 years from now, to get 10,000 10 years from now.