DEV Community

a353551071
a353551071

Posted on

The math of a monthly dividend ETF (QQQI), in TypeScript

Most dividend ETFs pay quarterly. QQQI pays monthly, and at a yield up in the low-double digits — it's a covered-call fund, so a chunk of that distribution comes from option premiums, not pure dividends. That combination — monthly cadence, high yield, options-derived income — makes the math interesting in a very different way than a plain growth payer like SCHD.

I built a dedicated QQQI calculator to make the tradeoffs visible, powered by the same open-source library: dividend-math.

Why "monthly" changes the compounding

Reinvestment frequency matters. The more often you reinvest, the sooner each reinvested cent starts earning. A monthly payer gives you 12 reinvestment points a year instead of 4. Same annual rate, more frequent compounding — the gap is small in year one and meaningful over a decade.

The monthly-income side is a single pure function:

import { monthlyDividendIncome } from 'dividend-math';

// $50,000 in a ~13% monthly payer
monthlyDividendIncome({ investment: 50000, dividendYieldPct: 13 }); // → ~541.67/month
Enter fullscreen mode Exit fullscreen mode

And the longer horizon uses dripCalculator, which reinvests year by year:

import { dripCalculator } from 'dividend-math';

const result = dripCalculator({
  initialInvestment: 50000,
  price: 50,
  dividendYieldPct: 13,
  dividendGrowthPct: 0,   // high option-yield funds don't *grow* the dividend much
  priceGrowthPct: 2,      // …and price upside is capped by the call side
  monthlyContribution: 0,
  years: 10,
});
Enter fullscreen mode Exit fullscreen mode

Notice the inputs that tell the real story: a high yield paired with low growth. That's the structural difference between an options-income fund and a dividend-growth fund.

The part the yield number hides

A 13% monthly yield is a great headline. But for a covered-call fund, two things drag on it: the dividend barely grows (you're selling upside for income), and the net asset value can erode if the option strategy underperforms in strong rallies. So the "monthly income" looks lush while the principal may not compound the way a growth payer's does.

This is exactly why the QQQI calculator on dividendpayoutcalculator.com shows the income and the projected value side by side — so you can't fall in love with the monthly number without seeing what's happening to the base.

The honest framing: a monthly payer is an income tool, not a compounding engine. Different job than SCHD. The math makes that obvious once you model both.

Pure functions, one library

monthlyDividendIncome, dripCalculator, dividendYield, payoutRatio — all pure functions, all edge-tested (unit tests). One library drives every calculator page on the site, so the monthly income on the QQQI page is the same formula as anywhere else.

Engineering + math post, not financial advice. Option-income funds have real NAV and tax complexities — model scenarios, don't pick tickers from a blog.

For the high-yield folks: how do you model the NAV-erosion drag in a reinvestment sim — flat haircut on the yield, or a price-growth assumption below the index? Genuinely curious what's worked in your models.

Top comments (0)