Lewati ke konten
πŸ› οΈToolsShed

Kalkulator IRR

Menghitung Tingkat Pengembalian Internal (IRR) untuk serangkaian arus kas.

Arus Kas Masa Depan

Tahun 1
Tahun 2
Tahun 3
Tahun 4

Tentang alat ini

Tingkat Pengembalian Internal (IRR) adalah metrik kritis untuk mengevaluasi profitabilitas dan efisiensi investasi atau proyek. Kalkulator ini menentukan tingkat diskonto di mana nilai sekarang bersih (NPV) dari semua arus kas sama dengan nol, memberikan Anda satu persentase yang mewakili pengembalian tahunan investasi Anda. Memahami IRR membantu investor dan profesional keuangan membandingkan berbagai peluang investasi dengan dasar yang setara, terlepas dari ukuran atau jangka waktu mereka.

Untuk menggunakan kalkulator ini, masukkan investasi awal Anda (biasanya nilai negatif) dan semua arus kas berikutnya dalam urutan kronologis dengan tahun masing-masing. Alat ini secara iteratif menyelesaikan IRR menggunakan metode numerik. IRR biasanya digunakan untuk mengevaluasi investasi modal, akuisisi bisnis, transaksi real estat, dan kelayakan proyek. Ini sangat berharga ketika Anda perlu memutuskan antara peluang investasi yang bersaing atau menilai apakah proyek memenuhi tingkat pengembalian yang diperlukan.

Perhatikan bahwa IRR mengasumsikan reinvestasi arus kas pada tingkat IRR itu sendiri, yang mungkin tidak selalu realistis; IRR yang dimodifikasi (MIRR) dapat mengatasi hal ini dalam skenario kompleks. Selain itu, IRR dapat menghasilkan beberapa solusi untuk pola arus kas yang tidak konvensional. Kalkulator ini menyediakan nilai IRR utama dan paling andal ketika arus kas mengikuti pola konvensional dengan aliran keluar awal diikuti oleh aliran masuk.

Pertanyaan yang Sering Diajukan

Implementasi Kode

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.