NPV - script function

NPV() returns the aggregated net present value of an investment based on a discount_rate per period and a series of future payments (negative values) and incomes (positive values), represented by the numbers in value, iterated over a number of records, as defined by a group by clause. The payments and incomes are assumed to occur at the end of each period.

Syntax:  

NPV(discount_rate, value)

Return data type: numeric. The result has a default number format of money.

Arguments:  

Argument Description
discount_rate discount_rate is the rate of discount over the length of the period.
value The expression or field containing the data to be measured.

Limitations:  

Text values, NULL values and missing values are disregarded.

Examples and results:  

Add the example script to your app and run it. Then add, at least, the fields listed in the results column to a sheet in your app to see the result.

Example Result  

Cashflow:

LOAD 2013 as Year, * inline [

Date|Discount|Payments

2013-01-01|0.1|-10000

2013-03-01|0.1|3000

2013-10-30|0.1|4200

2014-02-01|0.2|6800

] (delimiter is '|');

 

Cashflow1:

LOAD Year,NPV(0.2, Payments) as NPV1_2013 Resident Cashflow Group By Year;

Year

2013

NPV1_2013

-$540.12

Given that the Cashflow table is loaded as in the previous example:

LOAD Year,NPV(Discount, Payments) as NPV2_2013 Resident Cashflow Group By Year, Discount;

Note that the Group By clause sorts the results by Year and Discount. The first argument, discount_rate, is given as a field (Discount), rather than a specific number, and therefore, a second sorting criterion is required. A field can contain a different values, so the aggregated records must be sorted to allow for different values of Year and Discount.

Year

2013
2013

Discount

0.1
0.2

NPV2_2013


-$3456.05
$5666.67

Did this information help you?

Thanks for letting us know. Is there anything you'd like to tell us about this topic?

Can you tell us why it did not help you and how we can improve it?