Data Provenance & Accuracy
Where every number on every grade comes from, how fresh it is, how it's validated — and the $50-trillion bug that taught us to trust nothing we didn't compute ourselves
flowchart LR
SEC[SEC filings +<br/>market sources] --> FMP[FMP commercial<br/>data license<br/>statements 0-24h,<br/>analyst 0-4h, EOD prices]
FMP --> RAW[Raw statements ONLY<br/>trusted as input]
RAW --> CALC[In-house computed metrics<br/>PEG, EV/EBITDA, FCF yield,<br/>margins, ROIC, coverage<br/>= vendor-drift immune]
CALC --> GRADE[Deterministic grade<br/>+ per-factor breakdown]
GRADE --> OUT[Reports, dashboards,<br/>grade pages, social cards]
OUT --> DATE[EVERY artifact carries<br/>its computation date]
RAW -. sanity bounds,<br/>graceful gaps .-> CALCThe Source and Its Cadences
GMI's market data comes from Financial Modeling Prep (FMP) under a commercial data license — SEC-derived financial statements (annual and quarterly, as-reported), key metrics and ratios, end-of-day and historical prices, analyst recommendations and price targets, earnings calendars, and ETF/mutual-fund holdings across 60+ global exchanges with 30+ years of history. Freshness is explicit and worth knowing:
- Prices: end-of-day, with deep intraday history for charts — GMI is a fundamentals platform, not a real-time quote feed, on purpose.
- Financial statements & metrics: 0–24 hours from filing.
- Analyst data & earnings events: 0–4 hours.
On top of the source cadence sit GMI's own refresh rhythms: user reports fetch fresh data at generation time (a dozen-plus API calls per symbol, fanned out in parallel); the 2,500+ public grade pages refresh on a quarterly full-universe run after earnings seasons, with earnings-driven refreshes for actively tracked tickers in between. Every grade carries its computation date — on the page, on the report, and baked into the pixels of every social card — because a number without a date is an invitation to be wrong.
The $50-Trillion Lesson
In August 2026, Taiwan Semiconductor briefly showed a $50 trillion market cap in a GMI report — roughly half of world GDP. Root cause: the vendor's key-metrics endpoints return figures in each company's reported currency (New Taiwan dollars, in TSM's case) while price data is in USD, and a derived figure silently mixed the two. It was caught within hours — the founder runs his own money through the platform, and $50T is personally unbelievable — but the fix mattered more than the catch.
The policy that came out of it: compute, don't trust. GMI's valuation and quality metrics — PEG, EV/EBITDA, FCF yield, price-to-book, operating and gross margins, ROIC, net cash position, interest coverage — are now computed in-house from raw statement fundamentals rather than taken from vendor-derived fields. That makes them immune to vendor schema drift and unit mix-ups by construction: the raw statements are the only trusted input, and every derivation above them is our own auditable code. The full incident writeup is on the postmortems page.
Validation, Outliers, and Honest Gaps
- Sanity bounds in the aggregates. Portfolio averages exclude absurd values (P/E over 1,000, debt-to-equity over 100) so one broken datapoint can't poison a dashboard.
- Symbol validation at entry. Tickers are validated against the data source when lists are built — typos die at the door, not in a report.
- Graceful degradation over fake precision. When a metric can't be computed (no growth history for a PEG, no coverage for a price target), it renders as "—" and contributes zero points — never an invented value. Fallbacks are gated on having real inputs.
- Missing coverage is disclosed, not papered over. Thin-coverage small caps and recent IPOs simply have less data; the grade breakdown shows exactly which factors were data-starved.
- Schema versioning. Every stored report summary carries a schema version, so an old artifact renders correctly or says honestly that it can't — it never renders wrongly in silence.