Como calcular o equivalente a TAXA no Excel em R?

Como calcular o equivalente a TAXA no Excel em R?

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 RATEfunçã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 uniroote as polyrootpodem 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:

  1. 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
    
  2. 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.

  3. 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.

  4. Você está certo, isso FinCal::discount.ratefaz 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.ratefunção e dar um passo de Newton-Raphson, o que deveria funcionar muito melhor.)

informação relacionada