Skip to content
🛠️ToolsShed

Dividend Reinvestment Calculator

Calculate how dividend reinvestment (DRIP) grows your portfolio over time. Compare with and without reinvestment.

$88,810
Final Value (with DRIP)
$38,697
Final Value (no DRIP)
$28,477
Total Dividends Earned
$50,113
DRIP Bonus
YearWith DRIPWithout DRIP
1$11,154$10,700
2$12,441$11,449
3$13,876$12,250
4$15,477$13,108
5$17,263$14,026
6$19,255$15,007
7$21,476$16,058
8$23,954$17,182
9$26,718$18,385
10$29,801$19,672
11$33,240$21,049
12$37,075$22,522
13$41,352$24,098
14$46,124$25,785
15$51,446$27,590
16$57,381$29,522
17$64,002$31,588
18$71,387$33,799
19$79,623$36,165
20$88,810$38,697

About this tool

Dividend reinvestment, or DRIP, is a powerful wealth-building strategy where cash dividends from your investments are automatically reinvested to buy additional shares rather than paid out as income. Over time, this compounding effect can substantially amplify your portfolio's growth, as you earn returns not only on your original investment but also on the accumulated dividends.

This calculator lets you model how your investments grow under different dividend reinvestment scenarios. Simply enter your initial investment amount, the annual dividend yield (as a percentage), the reinvestment period in years, and the annual growth rate of the underlying asset. The tool then displays both your ending balance with DRIP enabled and the balance without reinvestment, so you can clearly see the compounding advantage.

Frequently Asked Questions

Code Implementation

def drip_calculator(
    initial: float,
    annual_yield: float,
    annual_growth: float,
    years: int,
    periods_per_year: int = 4  # quarterly
) -> list[dict]:
    """Calculate DRIP portfolio growth year by year."""
    period_yield = annual_yield / 100 / periods_per_year
    period_growth = (1 + annual_growth / 100) ** (1 / periods_per_year)

    portfolio = initial
    results = []

    for year in range(1, years + 1):
        year_dividends = 0
        for _ in range(periods_per_year):
            div = portfolio * period_yield
            year_dividends += div
            portfolio = (portfolio + div) * period_growth

        results.append({
            "year": year,
            "portfolio_value": round(portfolio, 2),
            "year_dividends": round(year_dividends, 2),
        })

    return results

results = drip_calculator(
    initial=10000,
    annual_yield=4.0,
    annual_growth=7.0,
    years=20,
    periods_per_year=4
)
for r in results[-5:]:
    print(f"Year {r['year']}: ${r['portfolio_value']:,.2f} (dividends: ${r['year_dividends']:,.2f})")

Comments & Feedback

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