Calculates the Internal Rate of Return on a cash flow that must contain at least one investment (negative) and one income (positive) value.
Also see @IRREX.
Syntax
@IRR (cashflowMbr, discountFlag[, XrangeList])
Parameter | Description |
---|---|
cashflowMbr |
Single member specification. |
discountFlag |
Member specification, variable name, or numeric expression providing a constant value of either 1 or 0. discountFlag indicates whether the function should discount from the first period. 1 means do not discount from the first period. |
XrangeList |
Optional parameter specifying the range over which the rate is calculated. If a range is not specified, Essbase uses the level 0 members from the dimension tagged as Time. Can be a valid member name, a comma-delimited list of member names, cross dimensional members, or a return value from a member set function or range function (including @XRANGE). For more information about rangeList and XrangeList, see Range List Parameters in the topic Range and Financial Functions. |
Notes
Financial functions never return a value; rather, they calculate a series of values internally based on the range specified.
Essbase returns #MISSING from calculator function @IRR if all cash flows are zero.
@IRR provides an initial guess of 0.07. This value cannot be changed, in contrast to similar functions in Excel. Because results depend in part on the initial guess, any difference in the initial guess may result in a different result. Even if both Excel and Essbase start with the same initial guess, results may differ. This is because there may be more than one solution to an equation, and the algorithm stops looking when it finds a valid solution. Which solution is found first may differ based on the algorithm. Although leading or trailing zeros do not matter in a mathematical context, the algorithm may behave differently and find a different root because of the presence of leading or trailing zeros. If you need identical solutions regardless of the presence of leading or trailing zeros, you may wish to create a custom-defined function to handle these issues.
Example
This example calculates the Internal Rate of Return (Return) on a cash flow (Cash).
Return = @IRR(Cash,0,FY1998:FY2000,FY2001:FY2003);
This example produces the following report:
FY1998 FY1999 FY2000 FY2001 FY2002 FY2003 ====== ====== ====== ====== ====== ====== Cash (1,000) 500 600 500 #MISSING #MISSING Rate 0 0 0 0 #MISSING #MISSING Return 0 0 0 0 0 0
The following example assumes a Year dimension is added to Sample Basic. It calculates the return using a multidimensional range.
FIX ("100-10", "New York") "Return" = @IRR(Cash,0,@XRANGE("2011"->"Sep", "2012"->"Mar")); ENDFIX
The above calculation is performed across the following multidimensional range specified by XrangeList:
2011->Sep 2011->Oct 2011->Nov 2011->Dec 2012->Jan 2012->Feb 2012->Mar