Pular para o conteúdo
🛠️ToolsShed

Calculadora TIR

Calcula a Taxa Interna de Retorno (TIR) para uma série de fluxos de caixa.

Fluxos de Caixa Futuros

Ano 1
Ano 2
Ano 3
Ano 4

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 ~0

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.