Calculadora TIR
Calcula a Taxa Interna de Retorno (TIR) para uma série de fluxos de caixa.
Fluxos de Caixa Futuros
Sobre esta ferramenta
A Taxa Interna de Retorno (TIR) é uma métrica crítica para avaliar a lucratividade e eficiência de investimentos ou projetos. Esta calculadora determina a taxa de desconto na qual o valor presente líquido (VPL) de todos os fluxos de caixa é igual a zero, fornecendo um único percentual que representa o retorno anual de seu investimento. Compreender a TIR ajuda investidores e profissionais financeiros a comparar diferentes oportunidades de investimento em igualdade de condições, independentemente de seu tamanho ou prazo.
Para usar esta calculadora, insira seu investimento inicial (tipicamente um valor negativo) e todos os fluxos de caixa subsequentes em ordem cronológica com seus respectivos anos. A ferramenta resolve iterativamente a TIR usando métodos numéricos. A TIR é comumente usada para avaliar investimentos de capital, aquisições de negócios, transações imobiliárias e viabilidade de projetos. É particularmente valiosa quando você precisa decidir entre oportunidades de investimento concorrentes ou avaliar se um projeto atende à sua taxa de retorno necessária.
Observe que a TIR assume reinvestimento de fluxos de caixa à própria taxa TIR, o que pode não ser sempre realista; a TIR modificada (TIRM) pode abordar isso em cenários complexos. Além disso, a TIR pode produzir múltiplas soluções para padrões de fluxo de caixa não convencionais. Esta calculadora fornece o valor principal de TIR e é mais confiável quando os fluxos de caixa seguem um padrão convencional com uma saída inicial seguida por entradas.
Perguntas Frequentes
Implementação de Código
def npv(rate: float, cash_flows: list) -> float:
"""Net Present Value at given rate."""
return sum(cf / (1 + rate) ** t for t, cf in enumerate(cash_flows))
def irr(cash_flows: list, max_iter: int = 1000, tol: float = 1e-7) -> float | None:
"""Internal Rate of Return via Newton-Raphson iteration."""
# Check sign change
positives = any(cf > 0 for cf in cash_flows)
negatives = any(cf < 0 for cf in cash_flows)
if not (positives and negatives):
return None
rate = 0.1 # initial guess
for _ in range(max_iter):
f = npv(rate, cash_flows)
# Derivative: d/dr NPV = sum(-t * cf / (1+r)^(t+1))
df = sum(-t * cf / (1 + rate) ** (t + 1) for t, cf in enumerate(cash_flows))
if df == 0:
break
new_rate = rate - f / df
if abs(new_rate - rate) < tol:
return new_rate
rate = new_rate
return None
# Example: invest $1000, receive $300, $400, $500 over 3 years
cash_flows = [-1000, 300, 400, 500]
result = irr(cash_flows)
if result is not None:
print(f"IRR = {result * 100:.2f}%")
print(f"NPV at IRR ≈ {npv(result, cash_flows):.6f}") # should be ~0Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.