Calculate net present value for a series of non-periodic cash flows. <span align="right" style="background-color:99FF99"><strong>Excel: XNPV</strong></span>

You're viewing an older version of this page (#298). View the current version.

View versions (1)

Interface

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

using namespace Finance::Accounting;

Calculate the net present value for a schedule of cash flows which are not necessarily periodic. values contains the series of cash flows made on the specific dates. Values which are a cost, (or paymemt) should be entered as negative values.

The following equation is used:

XNPV\ =\ \sum_{a=0}^{N-1}\ \frac{P_a}
    {(1.0+rate)^{\frac{(d_a-d_0)}{365.0}}}
(1)

Where: Pa is the payment at point a . d0 is the date of the first payment.

Example 1

Consider an investment that requires a £10,000 cash payment on January 1, 1998, and returns: £2,750 on March 1, 1998; £4,250 on October 30, 1998; £3,250 on February 15, 1999; and £2,750 on April 1, 1999. Assume that the cash flows are discounted at 9 percent. The net present value is:

#include <iostream>
#include <codecogs/finance/accounting/xnpv.h>

int main(int argc, char *argv[])
{
  double pmts[]={-10000, 2750, 4250, 3250, 2750};
  int dates[]={34334,34393,34636,34744,34789};

  std::cout<<"Net present value: ";
  std::cout<<Finance::Accounting::xnpv(0.09, pmts, dates, 5);
  std::cout<<std::endl;

  return 0;
}

Output:

Net present value: 2089.5

Parameters

rate
The discount rate to apply to the cash flows. For 9%
Blank

use a rate of 0.09 .

Parameters

values
An array of cash flows that correspond to a series of
Blank

payments on specific dates.

Parameters

dates
An array of dates on which the corresponding payments
Blank

are made.

Returns

The net present value of the investment.
GPL Licence — free for non commercial use. See Licence details.