Strasmore Research
Learn am Matt ConnorBy Matt Connor · Updated 2026-08-03 · data as of August 3, 2026 · refreshed weekly

How to calculate Dividend Yield for your stocks

See how to calculate Dividend Yield using annual dividends and share price. Learn the difference between trailing, forward, and yield on cost for stocks like Coca-Cola.

Dividend yield na the annual dividend wey stock pay per share, divide am by the share price, then multiply by one hundred. If share pay two dollars for one year and the price na fifty dollars, the yield na four percent. The arithmetic no hard at all. The wahala dey the numerator, because the figure wey dey top fit be the payment for the last twelve months or the latest payment wey dem don annualize, and the number wey broker show for position wey you already get na another calculation entirely.

The dividend yield formula

Dividend yield = (annual dividends per share ÷ price per share) × 100

The denominator na the easy part: na whatever the stock last trade at, one number wey dey move every second wey the market open. The numerator na the cash wey one share collect over one year, and US companies almost always dey pay am for four installments instead of one. Coca-Cola (KO) na the standard example wey people dey use, e dey pay quarterly and e get long record wey no break.

Below na the payments wey one single KO share collect for the twelve months wey end for June 2026, with the running total for the last column.

QueryAll di dividend wey one Coca-Cola (KO) share collect, from July 2025 reach June 2026
The exact SQL behind every number
SELECT ex_dividend_date AS date,
       formatDateTime(ex_dividend_date, '%b %e, %Y') AS ex_date_label,
       round(cash_amount, 4) AS dividend_per_share_usd,
       round(sum(cash_amount) OVER (ORDER BY ex_dividend_date), 4) AS trailing_total_usd
FROM global_markets.stocks_dividends
WHERE ticker = 'KO'
  AND distribution_type = 'recurring'
  AND cash_amount > 0
  AND ex_dividend_date >= toDate('2025-07-01')
  AND ex_dividend_date <= toDate('2026-06-30')
ORDER BY ex_dividend_date
Run this yourself

Read the running column from bottom go up. One share collect $2.08 across the 4 payments, from $0.51 on Sep 15, 2025 go reach $0.53 on Jun 15, 2026. That total na the numerator. Put the closing price for June under am and the formula go finish imsef: $2.08 ÷ $81.25 × 100 = 2.56%.

No company get obligation to pay anything. Plenty big US names no dey pay anything at all, and their yield na zero instead of undefined. Wetin dividend yield dey measure explain the full distribution.

Dividend yield na yearly thing?

Yes. Yield always be annual rate, no matter the payment schedule wey dey under am. Most US company dem dey pay quarterly. Some funds and income vehicles dey pay monthly, and many foreign company dem dey pay two times for one year based on how dem dey do business for dia home market. Dem dey convert every schedule go one annual figure before dem do the division.

For practice: four percent yield on one $50 stock mean $2.00 per share every year, wey dey come as four payments of about 50 cents. Quote pages no dey label the number as annual most of the time, and the gap between annual rate and quarterly payment na the thing wey people dey misread pass for this matter. Timing dey important too, because na only people wey dem name dey for the book before the ex-dividend date fit collect that particular payment.

Trailing yield versus forward yield

Trailing twelve month yield dey add all the dividend wey dem don pay for the past one year, exactly as the KO panel dey do. Na history, and person fit verify am.

Forward yield, wey dem often print as indicated yield, dey take the payment wey dem most recently declare and multiply am by the payment frequency, four for company wey dey pay quarterly. E dey estimate the next twelve months based on the assumption say the company go continue to pay at the current rate. Company wey increase e payout during the year go get higher forward figure, because the increase go count for four quarters instead of one or two.

Eight household payers, both methods, at the latest prices wey dey file:

QueryTrailing vs forward dividend yield: eight big company wey dey pay, base on latest price
The exact SQL behind every number
WITH px AS (
    SELECT ticker, argMax(close, window_start) AS price
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('KO', 'PEP', 'JNJ', 'PG', 'VZ', 'XOM', 'CVX', 'MCD')
      AND window_start >= now() - INTERVAL 7 DAY
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker
),
dv AS (
    SELECT ticker,
           sum(cash_amount) AS ttm_dividends,
           argMax(cash_amount, ex_dividend_date) AS latest_payment,
           max(frequency) AS pay_frequency
    FROM global_markets.stocks_dividends
    WHERE ticker IN ('KO', 'PEP', 'JNJ', 'PG', 'VZ', 'XOM', 'CVX', 'MCD')
      AND distribution_type = 'recurring'
      AND cash_amount > 0
      AND ex_dividend_date > today() - INTERVAL 1 YEAR
      AND ex_dividend_date <= today()
    GROUP BY ticker
)
SELECT px.ticker AS ticker,
       round(px.price, 2) AS price,
       round(dv.ttm_dividends, 4) AS ttm_dividends_usd,
       round(dv.latest_payment * dv.pay_frequency, 4) AS forward_dividends_usd,
       round(dv.ttm_dividends / px.price * 100, 2) AS trailing_yield_pct,
       round(dv.latest_payment * dv.pay_frequency / px.price * 100, 2) AS forward_yield_pct,
       round(abs(dv.latest_payment * dv.pay_frequency - dv.ttm_dividends) / px.price * 100, 2) AS gap_abs_pct
FROM px
INNER JOIN dv ON px.ticker = dv.ticker
ORDER BY gap_abs_pct DESC
Run this yourself

PEP show the widest spread for the panel: 4.12% on the trailing calculation against 4.24% on the forward one, 0.12 of a percentage point apart on the same share price of $139.6. For the other side of the panel, XOM get the two methods wey agree to within 0.03 of a point.

Which one dey your screen? Most free quote pages dey publish the trailing twelve month figure and label am simply "dividend yield". Brokerage platforms and fund fact sheets dey carry the forward or indicated number more often. When two sites no gree for the same stock on the same day, the convention na usually the difference. Fund sheets dey add a third convention again, the standardized 30 day SEC yield, wey dem calculate from the recent net investment income of a fund instead of the distributions wey dem declare.

Why the yield dey move when the price dey move

Yield get denominator wey dey move, so the ratio dey change for days wey nothing concern the dividend. Two years of KO month ends show how the mechanic dey work.

QueryCoca-Cola (KO): month-end price, trailing 12-month dividends, plus yield, from June 2024 reach June 2026
The exact SQL behind every number
WITH px AS (
    SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
           argMax(close, window_start) AS price,
           max(toDate(toTimeZone(window_start, 'America/New_York'))) AS last_day
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'KO'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2024-06-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY month_start
),
dv AS (
    SELECT ex_dividend_date, cash_amount
    FROM global_markets.stocks_dividends
    WHERE ticker = 'KO'
      AND distribution_type = 'recurring'
      AND cash_amount > 0
      AND ex_dividend_date >= toDate('2023-06-01')
)
SELECT formatDateTime(px.month_start, '%Y-%m') AS month,
       formatDateTimeInJodaSyntax(px.month_start, 'MMMM yyyy') AS month_label,
       round(any(px.price), 2) AS price,
       round(sum(dv.cash_amount), 4) AS ttm_dividends_usd,
       round(sum(dv.cash_amount) / any(px.price) * 100, 2) AS dividend_yield_pct
FROM px, dv
WHERE dv.ex_dividend_date <= px.last_day
  AND dv.ex_dividend_date > px.last_day - INTERVAL 1 YEAR
GROUP BY px.month_start
ORDER BY px.month_start
Run this yourself

Read am as two lines. The trailing dividend column be like staircase, e dey step only when payment enter or comot from the twelve month window. The price column dey move every month. Since yield na the first one divided by the second one, every move for the yield line between those steps na move for the price. For June 2024 the panel read $63.65 with a yield of 2.97%. For June 2026 e read $81.25 and 2.56%, on trailing payments of $2.08.

This one deserve make you look am well. A screener wey dem sort by yield dey rank the output of that division and e no dey show which input move. Yield fit climb while the payout dey frozen and the price dey fall. Wetin dem dey count as good dividend yield put the market-wide distribution around any single reading.

Yield on cost, the number wey dey show for position screen

Yield on cost dey divide the annual dividend wey dem dey pay today by the price wey you pay, no be the price wey dey market today. Brokers dey often show am near position wey person don hold for long time, and people dey mistake am for the current yield of the stock. See how one KO dividend take look when we measure am against seven entry prices, one for each late June from 2019 come front.

QueryYield on cost: today Coca-Cola (KO) dividend compare to seven entry prices for June
The exact SQL behind every number
WITH cur AS (
    SELECT argMax(cash_amount, ex_dividend_date) * 4 AS annual_now
    FROM global_markets.stocks_dividends
    WHERE ticker = 'KO'
      AND distribution_type = 'recurring'
      AND cash_amount > 0
      AND ex_dividend_date <= toDate('2026-06-30')
),
px_now AS (
    SELECT argMax(close, window_start) AS price_now
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'KO'
      AND window_start >= now() - INTERVAL 7 DAY
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
),
buys AS (
    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS year,
           argMax(close, window_start) AS cost_basis
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'KO'
      AND toMonth(toTimeZone(window_start, 'America/New_York')) = 6
      AND toDayOfMonth(toTimeZone(window_start, 'America/New_York')) >= 20
      AND toYear(toTimeZone(window_start, 'America/New_York')) BETWEEN 2019 AND 2025
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY year
)
SELECT buys.year AS year,
       round(buys.cost_basis, 2) AS cost_basis_usd,
       round(cur.annual_now, 4) AS annual_dividend_now_usd,
       round(cur.annual_now / buys.cost_basis * 100, 2) AS yield_on_cost_pct,
       round(cur.annual_now / px_now.price_now * 100, 2) AS current_yield_pct,
       round(cur.annual_now / buys.cost_basis * 100 - cur.annual_now / px_now.price_now * 100, 2) AS yoc_premium_pts
FROM buys, cur, px_now
ORDER BY year
Run this yourself

Person wey buy at $50.9 for June 2019 now dey collect $2.12 per share every year, wey mean say the yield on cost na 4.17%. Person wey buy today dey collect the same amount of cash but with different denominator, 2.42%, wey come leave 1.74 points between the two readings for one share.

Both numbers correct and dem dey answer different questions. Yield on cost dey explain entry wey don already happen, and e dey rise anytime dividend increase. You no fit buy that yield today, and e no talk anything about the share for the current price, wey be the only decision wey dey open for you. For the income arithmetic wey dey use current yield instead, check $1,000 every month for dividends.

The sanity check: payout ratio

Yield dey show wetin share dey pay. The payout ratio, wey be annual dividends per share divide by earnings per share, dey ask weda the company fit afford am. If e dey under one hundred percent, the profit wey dem report fit cover the payment. If e pass one hundred percent, the extra money dey come from anoda place, no be this year profit.

QueryYield side-by-side wit payout ratio: eight big US dividend payers, latest snapshot wey dey ground
The exact SQL behind every number
SELECT ticker,
       round(argMax(dividend_yield, date) * 100, 2) AS dividend_yield_pct,
       round(argMax(dividend_yield * price, date), 2) AS annual_dividend_usd,
       round(argMax(earnings_per_share, date), 2) AS earnings_per_share_usd,
       round(argMax(dividend_yield * price / earnings_per_share, date) * 100, 1) AS payout_ratio_pct
FROM global_markets.stocks_ratios
WHERE ticker IN ('KO', 'JNJ', 'PG', 'VZ', 'XOM', 'CVX', 'MO', 'IBM')
  AND date = (SELECT max(date) FROM global_markets.stocks_ratios)
  AND dividend_yield > 0
  AND earnings_per_share > 0
GROUP BY ticker
ORDER BY payout_ratio_pct DESC
Run this yourself

The panel dey sort by payout ratio. CVX dey top with 120.7%, e dey pay $6.67 per share against $5.53 of earnings per share, with yield of 3.47%. IBM dey the bottom of the same panel at 58.8%. Two companies fit get similar yield but get different level of coverage. You suppose always put the ratio beside the yield for any screen.

Real estate trusts and pipeline partnerships dey always print payout ratios wey pass one hundred percent against reported earnings, sake of say heavy depreciation charges dey make accounting profit low pass the cash wey the business dey generate. Analysts dey use funds from operations measure those ones instead. For ordinary operating company, if the ratio pass one hundred percent well-well, na the red flag wey the measure dey try show. The payout ratio guide explain how to calculate am.

FAQ about dividend yield

How person fit calculate dividend yield by hand?

Add all the dividend per share wey dem pay for the last twelve months, divide am by the current share price, and multiply the result by one hundred. For the panels wey dey up so, KO 4 payments total $2.08 per share, and when you compare am with the $81.25 price, you go get 2.56%.

Dividend yield na annual or quarterly?

Na annual, always. If company dey pay dividend every quarter, the yield don already calculate the four payments together. So, if you see four percent yield for one $50 share, e mean say you go get about $2.00 for one year, no be $2.00 every quarter.

Why two different websites fit show different dividend yields for the same stock?

One fit dey use trailing yield, wey be the total dividend wey dem don pay for the last twelve months. The other one fit dey use forward yield, wey be the latest dividend wey dem declare, multiply by how many times dem dey pay for one year. For the panel wey dey up so, the two methods get difference of 0.12 of a percentage point on PEP for the same day.

High dividend yield mean say the stock good?

E only mean say the payout big when you compare am with the current price, nothing more. The yield dey rise anytime the price fall while the dividend remain the same. So, if you see high yield, na question you suppose ask about whether the company fit continue to pay, no be say you don get answer.

Wetin be yield on cost?

Na the annual dividend wey dem dey pay today, divide by the price wey you pay when you first buy the stock. E dey rise anytime the company increase dividend, and because e dey stay fixed to the price wey you start with, e dey describe your own investment position, no be the stock itself. For the panel wey dey up so, person wey buy for June 2019 at $50.9 get 4.17% yield on cost, while person wey buy today get 2.42%.


Every figure wey dey up so na result of stored, versioned query from filed dividend records and real market prices. Open any panel to read the SQL wey dey behind am, or run the same calculation for any ticker wey you like for the Strasmore terminal.