Return the present value of an investment.

View versions (2)

Interface

#include <codecogs/finance/accounting/pv.h>

using namespace Finance::Accounting;

This function calculates the present value, v_0, for a sequence of n future payouts p followed by a final payment v_n:

If rate = 0,

v_0 + p\,n + v_n = 0
(1)

If rate > 0 and payments are received at the start of each period,

v_0(1+rate)^n + p_1(1+rate)^{n} + p_2(1+rate)^{n-1} + ... + p_{n-1}(1+rate) + v_n = 0
(2)

while for payments received at the end of each period

v_0(1+rate)^n + p_1(1+rate)^{n-1} + p_2(1+rate)^{n-2} + ... + p_{n}(1+rate) + v_n = 0
(3)
This part is only visible to registered users. Sign in to see it.

The code also uses an enumerated type PaymentPoint, using the following values:

  • pp_EndOfPeriod = 0
  • pp_StartOfPeriod = 1.

Example 1

A lady wins a 10 million lottery.  The money is to be paid out at the end of each year in500,000 payments for 20 years. The cu rrent treasury bill rate of 6% is used as the discount rate.

#include <stdio.h>  
#include <codecogs/finance/accounting/pv.h>

int main(int argc, char *argv[])  
{
  double d = Finance::Accounting::pv(0.06, 20, 500000, 0, Finance::Accounts::pp_EndOfPeriod);
  printf("The present value of the $10 million prize is: %7.2f\n", d);
  return 0;
}

Output:

The present value of the $10 million prize is: 5734960.61

Parameters

rate
is the interest rate - assumed constant.
n
is the number of periods over which to calculate.
p
are the payouts from the investment made either at the start or end of each period (as defined by when).
vn
The future value of the investment.
when
The point in each period when the payment is made, either pp_StartOfPeriod or pp_EndOfPeriod.

References

http://www.vni.com/products/imsl/jmsl/v30/api/com/imsl/finance/Finance.html

GPL Licence — free for non commercial use. See Licence details.