Vai al contenuto
🛠️ToolsShed

Calcolatrice TIR

Calcola il Tasso Interno di Rendimento (TIR) per una serie di flussi di cassa.

Flussi di Cassa Futuri

Anno 1
Anno 2
Anno 3
Anno 4

Informazioni sullo strumento

Il Tasso Interno di Rendimento (TIR) è una metrica critica per valutare la redditività e l'efficienza di investimenti o progetti. Questo calcolatore determina il tasso di sconto al quale il valore attuale netto (VAN) di tutti i flussi di cassa è pari a zero, fornendoti una singola percentuale che rappresenta il rendimento annuale del tuo investimento. Comprendere il TIR aiuta gli investitori e i professionisti finanziari a confrontare diverse opportunità di investimento su basi uguali, indipendentemente dalle loro dimensioni o dalla loro timeline.

Per utilizzare questo calcolatore, inserisci il tuo investimento iniziale (tipicamente un valore negativo) e tutti i flussi di cassa successivi in ordine cronologico con i rispettivi anni. Lo strumento risolve iterativamente il TIR utilizzando metodi numerici. Il TIR è comunemente utilizzato per valutare investimenti di capitale, acquisizioni aziendali, transazioni immobiliari e fattibilità di progetti. È particolarmente prezioso quando devi scegliere tra opportunità di investimento concorrenti o valutare se un progetto soddisfa il tuo tasso di rendimento richiesto.

Tieni presente che il TIR assume il reinvestimento dei flussi di cassa al tasso TIR stesso, il che potrebbe non essere sempre realistico; il TIR modificato (TIRM) può affrontare questo in scenari complessi. Inoltre, il TIR può produrre più soluzioni per schemi di flusso di cassa non convenzionali. Questo calcolatore fornisce il valore TIR primario ed è più affidabile quando i flussi di cassa seguono uno schema convenzionale con un'uscita iniziale seguita da entrate.

Domande Frequenti

Implementazione del Codice

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.