☕ KopiFire
Brew Your Path to FIRE

Methodology

Every figure on this site carries a label saying where it came from and when it was true. This page explains what those labels mean, and is honest about what we don't yet know.

What the labels mean

Official
From SGX, MAS, or the issuer's own filing or announcement
Third-party
From a third party redistributing someone else's figure
Hand-checked
Researched by hand from a cited document
Calculated
Calculated from other stored figures and the live price
Source not recorded
We publish the figure but have no record of where it came from. Treat it with caution — these are the numbers we are working to replace first.

Where each figure comes from

DataSourceTypeRefreshed
T-bill cut-off yieldsMAS auction resultsOfficialDaily, 06:00 SGT
Singapore Savings Bond ratesMAS issuance dataOfficialDaily, 06:00 SGT
Share and unit pricesSGX securities feedOfficialWeekdays, 18:00 SGT
Trading currencySGX securities feedOfficialWeekdays, 18:00 SGT
Which counters existSGX securities feedOfficialWeekdays, 18:00 SGT
Dividend and distribution historyYahoo FinanceThird-partyWeekly, Sun 06:30 SGT
EPS, book value, shares outstandingYahoo FinanceThird-partyWeekly, Sun 06:00 SGT
REIT gearingResearched by handHand-checkedWhen results are published
Fixed deposit ratesEach bank's published ratesHand-checkedSource pages checked fortnightly; rates reviewed manually
Ex-dates and payout amountsYahoo Finance, then manual confirmationThird-partyWeekly, Sun 07:00 SGT
Earnings calendarYahoo Finance, then manual confirmationThird-partyWeekly, Sun 07:00 SGT
P/E, P/B, yield, market capCalculated from the aboveCalculatedEvery page load

How ratios are calculated

P/E, P/B, dividend yield and market cap are not stored. They are calculated on every page load from the current price and the most recent stored input, because a ratio captured once drifts away from the price the moment the price moves.

A calculated figure is only as reliable as its weakest input, so that is what its label reports. A yield built from an official price and a third-party payout is labelled third-party, not official.

Where an input is missing we fall back to a stored figure and say so. Where a result is implausible — a trailing yield above 40%, which in practice has always meant a unit error or an unexplained capital return — we show a dash rather than publish a number we don't believe.

Dividend yield uses confirmed payouts from the current calendar year, not a stored forward estimate or a rolling twelve-month window. Counters with no confirmed payout this year show no yield rather than borrowing an older year. The individual payments are listed on each counter's page.

What we're still working on

  • Most fundamentals still come from a third-party aggregator rather than the issuer's own filing. Moving REITs and index constituents onto published results is in progress. The exchange is not an option here: SGX publishes prices, not fundamentals — its feed carries no earnings, book value or share count, so the issuer's own filing is the only official source for those.
  • Some figures have no recorded source. They are shown as such rather than hidden, and are first in line to be replaced.
  • Some earnings dates are estimated from past reporting patterns rather than announced. Those are marked “est.”.
  • A suspended counter can keep showing its last traded price. We are adding a trading status so a stale price is never presented as a live one.

Checks that run automatically

Every week two checks run against the whole database. One asks whether the data has stopped moving — a sync that fails silently is the failure that bites hardest. The other asks whether the data is right: whether a stored ratio still agrees with its own inputs, whether any figure sits outside the range a real counter occupies, and how many figures lack a recorded source. Both are designed to fail loudly rather than pass quietly.

None of this is financial advice. Verify anything you plan to act on against the issuer's own filing.