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