1

関数を使用して、内部収益率 (IRR)、基本的には NPV 関数をゼロにする「率」を見つけたいと考えていoptimます。

NPV 関数 (動作する) の現在のコードは次のとおりです。

npv <- function(rate, cf){
    r_v <- rep (rate,length (cf))
    t_v <- as.numeric (seq(1:length (cf)))
    pv <- cf * exp (-t_v*r_v)
    sum (pv)
} 

次のoptim関数を使用してみました。

InternalRateReturn <- optim(c(0,1), npv, cf = testcf2, gr = NULL, method = "L-BFGS-B", lower = -Inf, upper = Inf,control=list(), hessian = FALSE)

InternalRateReturn$parしかし、以下の方法を使用するのとは対照的に、正しい答えが返ってきませんuniroot

このコードを変更する方法を尋ねてもよろしいですか (繰り返しますが、関数がゼロnpvになるように関数のレートを最適化したいだけです)。npv

使用する IRR 関数unirootは次のとおりです。

irr1 <- function(cf) {
    uniroot(npv, c(0, 1), cf=cf)$root
}
4

2 に答える 2