The short answer
- A forecast needs three things: how much per share, how often, and how much survives tax.
- Payout frequency is inferred from the spacing of past ex-dividend dates, because market data feeds have no reliable frequency field.
- Withholding tax is applied by the company's country. Switzerland withholds 35%, Germany 26.375%, the Netherlands 15%, the UK 0%.
- A 4% gross yield on a Swiss holding is 2.6% net. That difference compounds over a decade.
- Every figure — header, monthly bars, annual income, and the FIRE contribution — uses the net number.
Why gross yield misleads
Dividend yield is usually quoted gross: the announced dividend divided by the share price. It is the number on nearly every finance site, and for a single-country portfolio it is a reasonable approximation.
For an international portfolio it is not, because dividends are taxed at source. The company's home country takes a cut before the money leaves, and what lands in your brokerage account is the remainder. The size of that cut varies enormously:
| Company's country | Withheld at source | 4% gross becomes |
|---|---|---|
| United Kingdom | 0% | 4.00% |
| Netherlands | 15% | 3.40% |
| Japan | 15.315% | 3.39% |
| France | 25% | 3.00% |
| Germany | 26.375% | 2.95% |
| Switzerland | 35% | 2.60% |
Two holdings advertising the same 4% yield can deliver 4.00% and 2.60% depending only on where the company is domiciled. Compare them on gross yield and you are comparing numbers that mean different things.
Working out how often a company pays
This turns out to be the awkward part. You would expect market data feeds to carry a field saying "this company pays quarterly". In practice there is no reliable one.
So the frequency is inferred from evidence instead: take the past ex-dividend dates, measure the gaps between them, and take the median gap. The median rather than the mean, because one missed or shifted payment would drag an average badly while barely moving a median.
| Median gap between payments | Classified as |
|---|---|
| 25–45 days | Monthly |
| 70–110 days | Quarterly |
| 150–220 days | Semi-annual |
| 300–430 days | Annual |
| Anything else | Irregular |
The bands are deliberately wide. A company nominally paying quarterly rarely pays every 91.25 days — board meeting dates move, weekends and holidays shift record dates, and a payment can land 78 days after the last one and 103 days before the next.
Irregular is a real answer, not a failure. Plenty of companies genuinely pay on no fixed schedule — special dividends, variable-payout miners, some investment trusts. Labelling that "irregular" is more useful than forcing it into "quarterly" and generating four confident, wrong future dates.
How the net figure is calculated
Once frequency and per-share amount are known, the annual figure follows, and withholding is applied to produce the net:
- Sum the dividends per share over the trailing year to get the annual gross amount
- Determine the company's withholding country
- Apply the surviving fraction — 0.85 for a Dutch company, 0.65 for a Swiss one
- Net yield = (surviving fraction × annual dividend × 100) ÷ price
The withholding country is derived from the exchange the holding trades on, mapped via its timezone. That is a heuristic and it is right in the overwhelming majority of cases, but it can be wrong for companies domiciled somewhere other than their primary listing — which is why the rate can be overridden per holding. If you know a specific position's real treatment, you can set it.
These are the standard rates withheld at source by the company's country. They are not your final tax position. Depending on your country of residence and the relevant double-taxation treaty, you may be able to reclaim part of what was withheld, or credit it against domestic tax. Your own country's tax on dividends or wealth is not modelled at all — that depends on circumstances an app cannot know. Treat the net figure as "what arrives in the brokerage account", not "what you keep after everything".
Consistency, and why it matters
A subtle way for a tracker to mislead is to be inconsistent: net yield on the detail screen, gross in the annual income total, something else again in the retirement projection. Each number is defensible alone and the set does not add up.
Every dividend figure in Portfolio On Fire uses the net number: the header, the monthly payout bars, the annual income total, and the amount that feeds the FIRE projection. The gross figure remains available where it is useful for comparison — it is just never quietly substituted for the net one.
Reading the forecast
Monthly payout bars
Expected income for the coming months, built from each holding's inferred schedule and net per-share amount. Dividend income is famously lumpy — a portfolio of quarterly payers tends to cluster into March, June, September and December — and seeing that unevenness is the point. A single annual figure divided by twelve would hide exactly the thing worth knowing.
Ex-date or pay date
You can choose which date drives the view. The ex-dividend date is when you must own the share to qualify; the pay date is when cash arrives, typically two to six weeks later. Ex-date matters for decisions about buying or selling; pay date matters for cash-flow planning. They belong to different questions, so the app does not pick one for you.
Predicted payments
Future payments that have not been announced are projected from the established pattern, and marked as predicted rather than blended silently into confirmed ones. They can be hidden entirely. An unannounced dividend is a forecast; a declared one is a fact; showing them identically would be dishonest.
Average net yield over time
Current yield moves with price, which makes it a poor guide to what a holding has actually delivered. Averaging net yield across several years — against each year's average price rather than today's — gives a steadier picture. The span is configurable, because the right window depends on how long you have held it.
What a forecast cannot tell you
- Dividends are not contractual. They are declared at a board's discretion and can be cut or suspended without notice. A forecast extrapolates a pattern; it does not carry a promise.
- A very high yield is often a warning. Yield rises when price falls. A sudden jump to 12% usually means the market expects a cut, not that you have found free money.
- Currency moves. A dividend in a foreign currency converts at whatever the rate is on the day.
- Growth is not projected. The forecast assumes the current per-share amount continues. Real dividends drift up and occasionally down.
Getting your history in
Frequency inference needs past ex-dividend dates, so the forecast improves sharply once real history is present. Importing a broker transaction export is the fastest route — a DeGiro account statement carries the dividends you have already received, and the import is documented step by step. Importing only a current-holdings snapshot leaves the app inferring from market data alone, which works, but less well.
All of it is computed on your device. Your holdings, your income, and your projected retirement date are inputs to a local calculation — there is no server involved.
This page describes how a calculation works. It is not a recommendation to buy any security, and nothing here is tax advice. Withholding rates and treaty relief change, and your position depends on where you live. For decisions that matter, consult someone qualified in your jurisdiction.