Please enable JavaScript to view this site.

Vensim Help

Navigation: Reference Guide > Functions > Financial and Accounting

INTERNAL RATE OF RETURN(stream,fisc,init,it) Solve for INTERNAL RATE OF RETURN

Scroll Prev Top Next More

Returns the internal rate of return for stream using the fiscal averaging period fisc.  You can also specify an initial investment or receipt init that was made at time it.  The value returned represents the factional return per fiscal period.  If the internal rate of return can’t be solved for either because it does not exist, or is too big (or to large a negative number) the function will return :NA:.  There is no attempt made to detect multiple solutions.  The number returned is the fractional interest rate per fiscal period and will always be in the range of -1 to +1.  A negative value indicates that future payments and receipts are given more weight than current ones.

The Internal Rate of Return is the interest rate that makes the net present value of a cash flow stream 0.  This number is well defined for any stream that has a sequence of negative values followed by a sequence of positive values or vice versa.  For streams that intermix positive and negative values there may be one, many or no interest rates giving a 0 net present value.  For streams that are always 0, only positive, or only negative, the internal rate of return is not defined.

The use of a fiscal period allows the internal rate of return to be computed on a different time base than the model is on.  For example with a monthly model you might use a fiscal period of 12 in order to find the annual internal rate of return as measured annually.  This change both scales the result, and also aggregates the flows within each fiscal period treating them as if they had all occurred at the end of the fiscal period.  

Restrictions: INTERNAL RATE OR RETURN must directly follow the equal sign and there can be nothing else on the right hand side of the equation.

Note that stream is the net payment stream.  Normally negative values indicate that more money is being spent than income received (investments are being made) and positive values indicate that income exceeds current expenses.  Setting an initial value with init is useful for cases where the investment was made as a lump sum, possibly in the past, though typically it would just be Time (or INITIAL TIME).  It is also possible to have it represent a future period as would occur with the repayment of a loan.  

If the fiscal period fisc is less than TIME STEP then the initial value of TIME STEP is used as the fiscal period.  The fiscal period should be a multiple of TIME STEP.  If this is not true, or if TIME STEP is not a constant, the computations may end up being made on irregularly quantized flows with some fiscal periods averaging over a large number of measured flows than others.  The results will still be useable but should be reviewed carefully.

The values for fisc, init and it are all used to initialize the function.   Changes to these values at later times during the simulation will not have any impact on the behavior of the function.  This is why it is fine to use Time for it.

Computation discounts the stream as if all payments in the fiscal period were made in a lump sum at the end of the period.  This assumption is only important when init is nonzero since otherwise it is only the difference in discounting that matters and this is the same whether payments are assumed at the beginning, middle or end of the period.  If you have an initial value and you want to discount at the middle of the period you should add .5 to the initial time.  If you want to discount at the beginning of the period you should add 1 to the initial time.

Because the INTERNAL RATE OF RETURN function can return :NA: (and usually will at the beginning of a simulation) it is best to check its value if you wish to use it in another variable.

Units:INTERNAL RATE OF RETURN(units/Time,Time/Ftime,units,Time) --> 1/FTime

Where FTime is a fiscal time units.  For example you might use Month_per_year (=12 Month/Year) as the fisc argument to get annual results.

Example

INTERNAL RATE OF RETURN(.05,Unit Year,1.0,Time)starts negative then asymptotes to .05

NOTE The INTERNAL RATE OF RETURN function stores all values of the stream at all times.  For very long runs this can become quite a large number of values.  By selecting a larger fiscal period (for example annually instead of monthly) you can reduce the memory requirements and increase simulations speed.

NOTE  The INTERNAL RATE OF RETURN creates a variable that acts as an auxiliary, but also has some built in dynamic behavior.  The value is held constant within a TIME STEP when using the Runge Kutta integration techniques.

Availability:  Not Vensim PLE or PLE Plus.

See also: NET PRESENT VALUE

Sample model: INTERNAL RATE OF RETURN.mdl in FunctionExamples