任何可用于计算特定日期不均匀付款的内部收益率的套餐?

Jim*_*myT 11 finance r

是否有任何R套件具有某种形式的功能,可以根据特定日期的不均匀支付来计算IRR,以进行一次性分配.

例:

df <- data.frame(date = c(as.Date("2010-1-24"), as.Date("2011-5-6"), as.Date("2012-3-24")), pmts=c(-2000,-1000,-800))
today <- as.Date("2012-7-25")
lumpsum <- 4580
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种简单的方法来计算今天收到的4580美元的回报率,以换取上面定义的付款时间表.

在此先感谢, - .JT

shh*_*its 7

正如评论中已经指出的那样,写一些简单的东西会更容易:

NPV<-function(paym,pdates,IRR){
   ptimes<-as.Date(pdates)-min(as.Date(pdates))
   ptimes<-as.numeric(ptimes,units="days")/365.25
   NPV<-sum(paym*(1+IRR)^{-ptimes})
   NPV
}

nlm(function(p){NPV(c(lumpsum,df$pmts),c(today,df$date),p)^2},p=0.1)
Run Code Online (Sandbox Code Playgroud)

IRR为11.26%

编辑:

lifecontingencies如果您想要使用它,那么在包裹周围快速侦察后会有一个现值函数.

library(lifecontingencies)
capitals<-c(lumpsum,df$pmts)
times<-c(today,df$date)
times<-as.Date(times)-min(as.Date(times))
times<-as.numeric(times,units="days")/365.25
presentValue(cashFlows=capitals, timeIds=times,interestRates=0.03)
nlm(function(p){presentValue(capitals,times,p)^2},p=0.1)
Run Code Online (Sandbox Code Playgroud)


pmr*_*pmr 6

利用"stats"包uniroot函数IRR可以编码如下:

   cf <- c(-10000, 1300, -1200, 12000) 
   npv <- function(i, cf, t=seq(along=cf)) sum(cf/(1+i)^t) 
   irr <- function(cf) { uniroot(npv, c(0,1), cf=cf)$root } 
   irr(cf)
   [1] 0.0686
   irrinpercent<- irr(cf)*100
   [1] 6.86
Run Code Online (Sandbox Code Playgroud)