The product question is not “will this stock go up?” It is: what changed, which entities are exposed, and what evidence was available at the time? This dossier lays out a market-research workspace that joins filings, macro series, and licensed market data while keeping every claim traceable to its source and information timestamp.
The experience I would build
An analyst opens a dated market pulse and sees the unusual moves first: price, volume, volatility, and cross-asset context. Selecting an issuer reveals newly available SEC disclosures, the macro variables plausibly connected to it, and related companies in an entity/event graph. A generated explanation is useful only when each sentence carries a source link, an observed-at time, an available-at time, and a confidence marker.
The interface would distinguish delayed data from real-time entitlements in plain language. “Current” always means a visible as-of timestamp; stale feeds fail closed instead of silently presenting an old quote as live.
Architecture: evidence before narrative
Narrative generation sits at the end of the system. The durable artifact is the timestamped evidence graph beneath it.
SEC EDGAR APIs provide filing histories and structured company facts without an API key. The FRED API provides economic series and release data. Prices and trades come only from a feed whose usage rights match the product; for example, Massive documents stock WebSocket feeds. Provider, entitlement, market session, and delay are fields in the data model, not deployment notes.
Entity and event graph
The graph resolves one company across CIK, ticker, security, and legal name, but preserves aliases and validity intervals rather than overwriting history. Events (filings, macro releases, guidance changes, earnings, and abnormal moves) become first-class nodes. Every edge has its extraction method, supporting passage, confidence, and created-at time. A model-suggested relation stays provisional until it is backed by a cited record or a reviewer accepts it.
This makes questions composable: “Which semiconductor issuers mentioned inventory changes after the latest industrial-production release?” is a graph traversal plus retrieval problem, not an invitation for a language model to invent a causal story. The UI separates co-occurrence, reported exposure, and causal evidence.
Evaluation: reproduce what was knowable
Each example is reconstructed from the records whose
available_at timestamp precedes that fold’s cutoff.
Offline evaluation has five layers: source parsing accuracy, entity resolution, event retrieval, claim-to-citation support, and calibrated uncertainty. Market-facing tasks add walk-forward tests for event detection and ranking stability, but never collapse the result into a promotional “alpha” number. Baselines include simple recency search, deterministic keyword rules, and price/volume z-scores; a model must beat the relevant baseline without degrading citation precision.
| Gate | What I would measure | Failure response |
|---|---|---|
| Freshness | Lag from source availability to indexed evidence | Show stale state; suppress “now” language |
| Grounding | Reviewer-judged claim support and citation completeness | Return evidence cards without synthesis |
| Time integrity | Future-information violations per evaluation fold | Block the release; rebuild the snapshot |
| Uncertainty | Calibration by event type, sector, and data regime | Abstain or label the relation provisional |
Build sequence and definition of done
- Evidence spine: ingest EDGAR and a small FRED allowlist into versioned snapshots; ship search with citations before adding generated prose.
- Point-in-time graph: resolve issuers and events, record both valid time and knowledge time, and replay any historical query exactly.
- Market context: add an entitled price feed, label its latency, and join deterministic move detection to sourced events.
- Synthesis: generate only from retrieved evidence, verify citations, expose uncertainty, and log the full trace for review.
I would call the first release complete when a reviewer can select any sentence in a brief, inspect the exact source version and timestamps, rerun the query against the same information set, and see the system abstain when evidence is insufficient.
Primary documentation
- U.S. Securities and Exchange Commission, EDGAR application programming interfaces.
- Federal Reserve Bank of St. Louis, FRED API documentation.
- Massive, stocks WebSocket overview (an example vendor interface; access rights must be verified for the deployment).