Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# Re: st: Internal Rate of Return Calculation

 From Austin Nichols To statalist@hsphsun2.harvard.edu Subject Re: st: Internal Rate of Return Calculation Date Tue, 14 Jun 2011 12:04:12 -0400

```M. S. <shanghaiexpat09@googlemail.com>:
With respect to IRR calculations, there are several plausible scenarios.

One is that there is assumed to be a common internal rate of return,
and many projects with initial price and values in subsequent periods
provide data with which to estimate that common parameter.  A second
more plausible scenario is that the many projects with initial price
and values in subsequent periods describe a distribution of
project-specific IRRs where a hypothetical lower bound determines
which were put into action and the estimation is aimed at that lower
bound (e.g. only projects with ex ante IRR>10% are put into effect,
but the observed IRRs range from -1 to 300 ex post, with a large bump
in the density at 0.10 where the ex ante truncation kicks in).

Instead, I assume from the context that in fact there are several
projects each of which is supposed to have its own IRR and the initial
price and values in subsequent periods provide data that uniquely
determine an individual IRR, which is to be calculated; in that case
the mm_root() functionality of moremata (on SSC) applies, as it does
to finding the zeros of any nonlinear function.

clear all
input v0 v1 v2 v3
100 105 107 120
500 550 600 700
end
g p=v0+v1/(1+_n/10)+v2/(1+_n/10)^2+v3/(1+_n/10)^3
g irr=.
mata
st_view(v=.,.,"irr v0 v1 v2 v3 p")
function y(x,a,b,c,d,e) {
return(e-a-b/(1+x)-c/(1+x)^2-d/(1+x)^3)
}
for (i=1;i<=rows(v);i++) {
mm_root(x=.,&y(),0,1,1e-9,1000,v[i,2],v[i,3],v[i,4],v[i,5],v[i,6])
v[i,1]=x
}
end
l, noo

On Tue, Jun 14, 2011 at 11:35 AM, Austin Nichols
<austinnichols@gmail.com> wrote:
> Sounds like
> http://www.stata.com/statalist/archive/2010-04/msg01113.html
>
> On Tue, Jun 14, 2011 at 2:07 AM, M. S. <shanghaiexpat09@googlemail.com> wrote:
>> Dear Statalisters:
>>
>>  I am searching for a more convenient way to calculate internal rates
>> of return. I should mention, that I am not that experienced with Stata
>> at this point.
>>
>>  I have a function like this:
>>
>>  Net Present Value = Value0+ value1/(1+irr)^1+ value2/ (1+irr)^2 . . .
>> + value6/(1+irr)^5*(irr-growth) – price
>>
>>  To find the discount rate irr that makes the function equal to zero I
>> am currently using a forvalues loop which increases or decreases the
>> discount factor given the current value of Net Present Value. This
>> requires me to recalculate the result all the time and to use several
>> if-conditions so that irr is changed by 1% at first and later by 0.1%,
>> 0.01% and so on . . .
>>
>>  Is there a more convenient way to find the discount factor? When I
>> searched, I only found a function called “finirr” but I couldn´t find
>> any documentation for it and my data do not describe as a time series.

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/
```