EDGAR-X
Multi-Agent Financial Intelligence System
A 7-layer system that ingests real SEC EDGAR and FRED data for 498 S&P 500 companies into Snowflake, transforms it through a tested dbt pipeline, trains a revenue-direction ranking model, and runs source-grounded LLM agents whose research memos are scored by an automated judge.
Problem & constraint
Answer one deliberately modest question honestly: given everything knowable on the day a company files its 10-K, will next year's revenue be higher? On real, messy financial data, at zero ongoing cost.
Architecture
filings + XBRL
macro data
Raw
AUC 0.726
dashboard
grounded memos
evaluation
Challenges & solutions
Real financial-data landmines, caught by tests
XBRL tag migrations, silent API pagination truncation, REIT accounting quirks, and filer sign errors were each caught by an automated dbt data test. The suite caught four real extraction bugs.
Margins above 1.0 — scoped out, not papered over
Financials (~70 companies) produced computed margins above 1.0 because bank and insurer revenue isn't captured by the XBRL revenue concepts used. I excluded them and scoped every claim to the S&P 500 ex-Financials rather than ship an indefensible number.
Hallucination risk, designed out
Agents use code-supplied provenance, so the model cannot fabricate a citation, and every memo is independently scored by an LLM judge.
Results
- 0.726
- Test ROC-AUC vs 0.500 baseline — framed as a ranked screen, not a classifier (83% positive base rate makes raw accuracy meaningless)
- 498 / 503
- current S&P 500 constituents loaded — 7,863 XBRL rows, 4,758 parsed 10-Ks, 11,583 FRED observations, 6,234 labeled training rows
- 39 / 29 / 16 / 16
- SHAP attribution % — fundamentals / macro regime / sector / filing language
- ~4.6–5 / 5
- Agent memos scored by the LLM judge across 5 companies, 3 sectors · 124 tests passing, 93% coverage
Tech stack
Deployment status
Layers 1–6 including the live dashboard are built and tested. The Kafka-to-Snowflake sink is not yet wired, the FastAPI serving layer is not built, and the Layer 7 cloud IaC is deployment-ready but not deployed (running it would incur AWS cost). Treat the stack as built-and-tested with deployment status plain — not running in production.
