関数を使用して、内部収益率 (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
}