DEV Community

a353551071
a353551071

Posted on

Yield on cost — the dividend metric DRIP quietly builds

Everybody quotes current yield — annual dividend ÷ today's price. It's the headline number. It's also the wrong number to watch once you actually own a position and reinvest. The number reinvestment grows is yield on cost: annual dividend ÷ what you originally paid.

A DRIP calculator makes this visible in a way a brokerage statement doesn't. The engine is the same open-source library, dividend-math.

What reinvestment actually does

dripCalculator simulates a dividend reinvestment plan year by year: dividends computed at the current yield on the current share count, reinvested into more shares at the current price, with both price and dividend growing each year.

import { dripCalculator } from 'dividend-math';

const r = dripCalculator({
  initialInvestment: 10000,
  price: 80,
  dividendYieldPct: 3.5,
  dividendGrowthPct: 10,
  priceGrowthPct: 7,
  monthlyContribution: 100,
  years: 20,
});

// The number nobody quotes: yield on cost
const yieldOnCost = (r.finalAnnualDividendIncome / r.totalInvested) * 100;
Enter fullscreen mode Exit fullscreen mode

The interesting move is that last line. totalInvested is what you actually put in (initial + contributions). finalAnnualDividendIncome is what the position throws off per year at the end. Divide them and you get the yield on your original dollars — and after 15–20 years of dividend growth plus reinvestment, that number regularly runs two to three times the starting yield.

Why it climbs

Two forces, both quiet:

  1. The dividend grows. A 3.5% payer raising its dividend ~10%/yr nearly triples the per-share dividend in a decade.
  2. Reinvestment buys more shares at prevailing prices, and those shares then pay the (growing) dividend too.

Current yield can stay flat the whole time — the price rises alongside the dividend — while yield on cost keeps climbing, because the denominator is your historical cost, not today's price. That's the real return a long-term DRIP creates, and it's invisible if you only look at current yield.

The edge case worth getting right

Cumulative dividends over N years are a geometric series: D + D(1+g) + D(1+g)² + …. When g = 0 it collapses to D × N; when g > 0 it's the closed-form (D·((1+g)ᴺ−1))/g. The g = 0 branch has to be handled separately — divide by zero otherwise. It's the kind of thing that's easy to get subtly wrong, which is why every formula in the library is a pure function covered by unit tests. Same dripCalculator drives the DRIP, SCHD, QQQI, and monthly pages on dividendpayoutcalculator.com — one implementation, no drift.

Run it

Math/engineering post, not financial advice. Past dividend growth doesn't guarantee future growth; model scenarios, don't pick tickers.

How do you track yield on cost in your own portfolio — spreadsheet column, or do you let the broker's cost basis do the work? Always felt like a metric more people should watch.

Top comments (0)