
상환 기간과 대출 기간이 주어지면 대출 이자율을 계산하고 싶습니다.
Excel에서는 RATE 함수를 사용할 수 있지만 R에서는 무엇을 사용해야 할지 잘 모르겠고 관심 공식에 "r"이 너무 자주 포함되어 인터넷 검색이 어렵습니다. FinCal 패키지를 살펴봤지만 이에 상응하는 것은 없습니다.
누군가 다음과 동등한 올바른 공식을 알려줄 수 있습니까?
= RATE(12,-500,3000)
= 13%
답변1
확인한 결과 RATE
Excel의 함수는 내부 수익률, 특히 연금에 대한 함수입니다.
R에서는 이에 접근하는 방법이 여러 가지가 있습니다.
uniroot
바닐라 R에서는 및 함수를 모두 polyroot
사용하여 비율을 계산할 수 있지만 약간의 조작이 필요합니다.
Excel에서 다음을 고려하십시오.
=RATE(10,-100,800)
이는 다음과 같은 가치를 생성합니다.
4.2775%
이제 R에서:
uniroot에 제공할 함수를 작성할 수 있습니다.
> f <- function(i,n,a) a - (1-(1+i)^(-n))/i > uniroot(f, interval=c(1e-9,1), 10, 800/100, tol=1e-6)$root [1] 0.04277498
또는 폴리루트를 사용할 수 있지만 0과 1 사이에 있는 실제 근을 찾아야 합니다(다음에서는 i 대신 1+i를 사용합니다. 더 간단하므로 1과 2 사이의 근이 필요합니다).
> res <- polyroot( c(1, rep(0,10-1), -(800/100+1), 800/100) ) > Re(res)[ abs(Im(res))<1e-9 ] -0.7622679 1.0000000 1.0427750
두 번째 줄은 (1+i) 측면에서 다항식 방정식의 실제 근을 추출하는 것이며, 원하는 것은 1보다 큰 것(1.0427750)에서 1을 뺍니다.
연금에 해당하는 현금 흐름 벡터를 제공하여 이 문제에 대한 보다 일반적인 내부 수익률 함수를 사용할 수도 있습니다.
기본적으로 RATE와 동일한 작업을 수행하는 것이 맞습니다
FinCal::discount.rate
. 하지만 제가 볼 수 있는 한 도움말에서도 아무 말도 하지 않고 모든 비율을 유효 숫자 세 자리로 반올림하는 것처럼 보입니다. 정확도가 더 중요하다면 문제가 될 수 있습니다.
(정확도를 높이기 위한 대안은 해당 discount.rate
함수의 출력을 취하여 Newton-Raphson의 한 단계를 수행하는 것인데, 이는 훨씬 더 나은 성능을 발휘합니다.)