{
 "title": "Two matching fundamentals feeds can still be wrong \u2014 StockQL",
 "description": "Test statement freshness, restatements, field semantics, and source independence with an SEC XBRL verification layer.",
 "url": "https://stockql.ai/blog/matching-fundamentals-can-still-be-wrong.html",
 "slug": "blog/matching-fundamentals-can-still-be-wrong",
 "published": "2026-10-06",
 "site": "StockQL",
 "contact": "hello@stockql.ai",
 "body_text": "Market-data tradeoffs \u00b7 Fundamentals\n\nTwo matching fundamentals feeds can still be wrong\n\nAgreement measures independence only when the sources are independent. Shared normalization, stale restatements, and field semantics can make two plausible rows repeat the same mistake.\n\nSeptember 13, 2026 \u00b7 6 minute read\n\nIn this article\n\nTest what agreement means\n\nSeparate freshness from correctness\n\nPreserve statement semantics\n\nUse an independent arbiter\n\nBuying a second data feed feels like independent verification. Sometimes it is. Sometimes both vendors transform the same upstream statement through the same template and return identical derived numbers that never appeared in the filing.\n\nThe right architecture asks three separate questions: Is the statement current? Does each field mean what the screen assumes? Is the comparison source independent enough to verify the disputed fact?\n\nAgreement is evidence, not provenance. Two equal values increase confidence only after you know that they were produced through meaningfully separate paths.\n\n1. Test what agreement means\n\nStockQL compared EODHD and Financial Modeling Prep with SEC XBRL company facts across a labeled 24-symbol corpus. The ordinary result was encouraging: core values such as net income, assets, equity, and operating cash flow were overwhelmingly accurate, and the commercial feeds agreed on more than 135 of 136 quarterly comparisons.\n\nOne row showed why that agreement was not sufficient. JPMorgan\u2019s fiscal 2025 filing reported negative $147.782 billion of operating cash flow. Both feeds returned positive $100.867 billion. Their rows were line-for-line identical, including a net-income value that also differed from the filing. A generic industrial transformation had reclassified $248.6 billion of bank operating items into investing activity.\n\nThe adjacent JPMorgan years were correct, and a ten-company follow-up\u2014including Goldman Sachs\u2014did not reproduce the defect. This was not evidence that every bank cash-flow row was broken. It was proof that the feeds shared enough upstream transformation for one provider to be an invalid independent check on the other in this domain.\n\n2. Separate freshness from correctness\n\nFreshness produced a different comparison. FMP served a Walmart quarter two days before EODHD and a Deere quarter three days before it; Nvidia appeared in both feeds on the same observed day. Those measured lags supported a narrow patch strategy rather than a wholesale serving-feed migration.\n\nRestatements can matter more than a few days. For Super Micro Computer\u2019s restated fiscal 2024, SEC XBRL reported net income of $1,152.666 million. FMP matched the restated value; EODHD still carried the original $1,208.1 million, 4.6% higher, and retained pre-restatement values in other statement fields.\n\nA freshness monitor and a restatement monitor therefore answer different questions. The first asks whether the latest period has arrived. The second asks whether a previously stored period has changed.\n\n3. Preserve statement semantics\n\nEven correct numbers can be joined incorrectly. EODHD normalizes some 52- or 53-week fiscal period ends to month-end, while FMP retains the actual fiscal date. Equity can include or exclude noncontrolling interests. ADR statements may remain in local currency while a nearby per-share field is denominated in dollars.\n\nEPS is a particularly sharp example. EODHD\u2019s epsActual is an analyst-adjusted earnings figure, not GAAP diluted EPS. FMP\u2019s epsDiluted is designed for the GAAP concept and matched the SEC in most tested cases. A screen that maps both to a generic eps column destroys that distinction.\n\nStockQL normalizes statements into dated periods and exposes a statement only from its filing-derived effective date, with a conservative lag when the provider supplies no credible filing date. That prevents a period-end date from leaking information into a point-in-time screen before the market could have known it.\n\n4. Use an independent arbiter\n\nStockQL keeps EODHD as the primary fundamentals feed and uses FMP as a freshness and restatement arbiter. For US filers, SEC XBRL remains the independent verifier when the commercial feeds disagree\u2014or when their suspiciously exact agreement needs provenance.\n\nThis three-part composition assigns each source a job it demonstrated well: broad serving coverage, fast alternate observations, and filing-level ground truth. It also limits cost. The arbiter can focus on fresh quarters, revised years, and anomalous derived fields rather than duplicating every serving query.\n\nResearch contract. Store the source, fiscal period, filing or effective date, currency, accounting concept, and fetch time with every normalized value. Recheck old periods for revisions; do not let provider agreement substitute for independent lineage.\nNext: why today\u2019s bulk file may not be final \u2192"
}
