Data quality
Data Quality — Coverage, Update Timing, and What We Do Not Have
Every figure below is measured from the database, not written by hand. Where a number has not been verified, this page says so instead of estimating.
These coverage figures are a snapshot measured on 2026-08-02, not a live read. For whether the API is up right now, see the system status page.
How far back the data goes
The three datasets whose coverage is verified end to end in the database. Other datasets state their own window on their docs page — this table only lists what has actually been measured.
| Dataset | Rows | Instruments | From | Delisted kept |
|---|---|---|---|---|
| TWSE daily prices | 5,241,089 | 1,687 | 2004 | Yes |
| TPEx daily prices | 3,938,130 | 11,760 | 1994 | Yes |
| Monthly revenue | 333,036 | 2,096 | 2010 | — |
Companies that stopped trading are still in here
Most free sources drop a company's price history once it delists. A backtest run on what is left only ever sees the survivors, so its returns come out too high. That is survivorship bias, and it is silent.
311
stopped-trading names with full price history
264
carry an officially recorded delisting date
47
have no official delisting date on record yet
The third figure is published for the same reason as the first two: not every stopped-trading name has an official date on record, and rounding that away would be the kind of tidying this page argues against.
A quiet day is not always a fault
Some sources do not publish daily. Judging those datasets by a daily clock would mark them stale most of the week, so they are judged by their own cadence — and it is written down here rather than left as an internal rule.
| Dataset | Cadence | Why |
|---|---|---|
| competitor-fx | irregular | FX is not published on a fixed daily schedule; a gap is not staleness. |
| shareholding-concentration | weekly | TDCC publishes weekly. Judging it daily would flag it stale six days out of seven. |
What we do not serve, and why
Anyone can publish a coverage table. This is the other half: datasets deliberately held back from the catalog. Some have no data yet, one is frozen, and two are metadata-only because we do not have the right to redistribute the full text.
| Dataset | Status | Reason |
|---|---|---|
| bond_yield_curve | On the roadmap | Government bond yield curve (TPEx, OGDL v1.0, commercial use permitted). No recorder has been built yet, so there is no data. |
| taifex_atm_iv | Table exists, no data yet | The table exists but is still empty; it fills once the upstream taifex_options data lands. |
| regime_serve | Frozen | Frozen. Not offered externally. |
| announcements_fulltext | Metadata only | We do not serve the full text of announcements (copyright); only structured metadata is offered. |
| filings_fulltext | Metadata only | We do not serve the full text of filings (copyright); only structured metadata is offered. |
Every row says where it came from
Provenance is not a page on this site, it is a field in the response. A row you cannot trace is a row you cannot audit.
source_role— which official release the value came from, per row.data_gaps— holes are reported in the response rather than filled in. An interpolated value that looks like a measurement is worse than an admitted gap.knowledge_date— when the figure became knowable, which is what makes a point-in-time backtest possible.
Corrections we have had to make are listed on the errata page, and the sourcing rules are on the methodology page.