
Dado o reembolso e o prazo do empréstimo, gostaria de poder calcular a taxa de juros de um empréstimo.
No Excel, posso usar a função RATE, mas não tenho certeza do que usar em R e pesquisar no Google é difícil, pois "r" é frequentemente incluído em fórmulas de juros. Examinei o pacote FinCal, mas nada se destaca como equivalente.
Alguém poderia me indicar a fórmula correta que faz o equivalente a:
= RATE(12,-500,3000)
= 13%
Responder1
Depois de verificado, a RATE
função do Excel é a taxa interna de retorno, especificamente a de uma anuidade.
Existem várias maneiras de abordar isso em R.
No Vanilla R, as funções uniroot
e as polyroot
podem ser usadas para resolver a taxa, mas é preciso mexer um pouco:
Considere o seguinte no Excel:
=RATE(10,-100,800)
que produz o valor:
4.2775%
Agora em R:
Você pode escrever uma função para fornecer ao 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
Como alternativa, você pode usar polyroot, mas precisa encontrar a raiz real que está entre 0 e 1 (a seguir uso 1+i em vez de i porque é mais simples e, portanto, preciso da raiz entre 1 e 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
Onde a segunda linha está extraindo as raízes reais da equação polinomial em termos de (1+i), e a que você deseja é aquela maior que 1 (1,0427750), da qual você subtrai 1.
Você também pode usar funções de taxa interna de retorno mais gerais para esse problema, fornecendo o vetor de fluxos de caixa correspondente à anuidade.
Você está certo, isso
FinCal::discount.rate
faz essencialmente a mesma coisa que RATE, mas parece que arredonda todas as suas taxas para três algarismos significativos sem dizer nada sobre isso, mesmo na ajuda, pelo que posso ver. Se maior precisão for importante para você, isso pode ser um problema.
(Uma alternativa para maior precisão é pegar a saída dessa discount.rate
função e dar um passo de Newton-Raphson, o que deveria funcionar muito melhor.)