Market-data tradeoffs · Coverage

Market-data coverage is not one number

A provider can cover nearly every US common share and still miss the instruments, new listings, venues, or history depth that define a particular strategy.

“We cover 95% of the market” is not enough information to design a research database. Ninety-five percent of active common shares is different from ninety-five percent of ETFs, historical delistings, exchange-local indices, or sovereign yield curves.

Coverage is a vector. The dimensions that matter are determined by the research question, and two providers can dominate different coordinates at the same time.

1. Measure the dimensions separately

A useful coverage matrix has at least these axes:

  • Instrument class: common shares, preferreds, ETFs, closed-end funds, warrants, indices, commodities, and bonds.
  • Geography and venue: not just country, but the exchange codes and local boards the strategy admits.
  • Time: new-listing latency, earliest retained history, and retention after liquidation.
  • Field depth: a symbol row is not coverage if the needed prices, actions, statements, or identifiers are absent.
  • Identity quality: ticker notation, venue aliases, and placeholders must resolve to the same instrument before a diff means anything.

2. Read coverage counts in context

StockQL measured FMP against a tracked US universe on August 20, 2026. FMP was missing 8.6% overall, but only 1.6% of common shares and none of the sampled closed-end funds. The gaps were concentrated elsewhere: 15.5% of ETFs, 14% of warrants, and 47% of funds. Of 824 missing ETFs, 339 were 2026 listings, making listing latency a large part of the headline.

The cross-asset result pointed the other way. EODHD exposed 1,669 tracked index series against 425 in the FMP catalog, 238 commodities against 40, and a non-US government-bond universe that FMP did not replace. FMP, meanwhile, carried 265 of 267 preferred shares in a stressed cohort and exposed useful exchanges absent from EODHD’s official list.

Asia made the composition case directly. FMP supplied Japan, Hong Kong, and Singapore; EODHD supplied Korea, mainland China, and Taiwan. In an 18-name FMP spot check across its three Asian venues, all sampled majors had same-day bars and deep history, but the default history request silently stopped at five years unless explicit date ranges were provided.

These are dated, plan-specific measurements—not permanent vendor promises. Their value is the shape: common-share breadth, new-listing speed, asset taxonomy, venue reach, and default history depth all produced different answers.

3. Normalize identity before counting

A raw catalog diff overstates gaps. Preferred notation such as ABR-P-E versus ABR-PE, exchange suffixes, renamed venues, and zero-bar placeholder listings can make the same instrument look missing or make a non-serving row look covered.

StockQL maps each provider’s symbols into a canonical exchange-and-symbol contract, normalizes instrument classes, and requires the fields needed by the consuming screen. It also records which provider serves each exchange. Coverage is then measured over usable rows rather than marketing catalog entries.

4. Route each market to the stronger feed

StockQL does not need a single global winner. Its market-data interface lets an exchange select the provider that actually serves that domain: EODHD remains valuable for broad cross-asset and small-exchange coverage, while FMP serves JPX and contributes US-equity checks where its catalog or corporate-action handling is stronger.

The normalized storage contract keeps downstream SQL stable. Researchers ask for a canonical symbol, price, action, or statement; provider-specific suffixes and field names stop at the ingestion boundary.

Next: why two matching fundamentals feeds can still be wrong →