Automating Fundamental Analysis With AI: What Works, What Doesn't
· Rubén García
Agents that read annual reports, extract metrics and compare companies: the full pipeline, the traps in cross-company comparison and non-negotiable checks.
AI fundamental analysis means handing an agent the mechanical half of the job — finding the filings, pulling the figures, normalizing them and comparing them across companies and periods — so the analyst spends their time on what the machine cannot do: reading the competitive context, questioning the accounting and deciding. Put plainly: AI does not analyze a company, it builds in minutes the workbench that used to take days to assemble.
That distinction is not a stylistic nuance. It is what separates a useful system from a generator of confident, invented numbers. We build these agents for clients and for our own market projects, and the most expensive lesson has always been the same: 80% of the value sits in verified extraction and normalization, not in the elegant summary the model writes at the end. This article covers what can genuinely be automated, how the pipeline is built, where cross-company comparison quietly lies, what it costs, and what an agent like this must never do.
Which parts of fundamental analysis can actually be automated?
Retrieval, extraction, calculation and rule-based comparison automate well; judgment about business quality or management automates badly. The dividing line is whether the task has an answer that can be verified against a document.
- Reliably automatable: downloading annual reports, quarterlies and material disclosures; extracting balance sheet, income statement and cash flow line items; computing ratios; flagging declared changes in scope or accounting policy; tracking a single line item across ten fiscal years; spotting gaps between reported and recomputed figures.
- Automatable with supervision: summarizing the risk section, contrasting management's narrative across two years, extracting non-financial operating data (customers, capacity, units) that every company presents its own way, classifying relevant footnotes.
- Not automatable: judging management quality, assessing whether a competitive advantage will hold, deciding whether a multiple is cheap or expensive, and — obviously — deciding what to do with the information.
An honest system is explicit about that boundary. If a vendor sells you an agent that "identifies undervalued companies", what you are buying is a statistical model's opinion dressed up as an analytical conclusion. The real value sits upstream: a workbench that is complete, verified and genuinely comparable.
How does an agent read an annual report, step by step?
The pipeline has five stages, and each fails in its own way. The most common cause of failed projects is skipping the verification stage and trusting that the model "read it correctly".
| Stage | What the agent does | Typical failure | Control |
|---|---|---|---|
| 1. Ingestion | Locates and downloads the document from the official source, with date and version | Grabs a preliminary release or a press note instead of the audited report | Log source, date and document hash |
| 2. Extraction | Pulls line items with their context (period, currency, unit, consolidated or standalone) | Mixing thousands with millions, or standalone with consolidated | Always extract unit and scope alongside the number |
| 3. Normalization | Maps everything into a common line-item schema and currency | Mis-mapping an aggregate each company builds differently | Human-reviewed mapping dictionary |
| 4. Verification | Checks the statements tie out and every figure points to its page | Skipping it | Control totals, double extraction, mandatory citation |
| 5. Comparison | Computes ratios and time series and places them in sector context | Comparing different fiscal years or scopes | Flag whenever the bases are not homogeneous |
The single biggest technical help today is data that arrives already structured. In the European Union, the ESEF format requires listed issuers to publish annual financial reports in XHTML, with consolidated statements tagged in Inline XBRL, for financial years beginning on or after 1 January 2020 (the delegated regulation was published in the Official Journal in May 2019). In the United States, the SEC has been publishing XBRL data from EDGAR filings for longer. The practical translation: for recent listings, a good chunk of extraction is no longer reading a PDF, it is consuming a tagged fact. For anything earlier, for private companies and for everything living in the footnotes, it is still document reading.
Comparing companies: where AI helps and where it misleads
Automated comparison is the function that saves the most time and gets things wrong most quietly. It helps when it makes things homogeneous; it misleads when it presents non-comparable things as comparable and nobody notices because the table looks clean.
These are the traps a well-built agent must declare in its own output rather than hide:
- Different accounting frameworks. IFRS and US GAAP treat leases, capitalized development and impairments differently. Comparing margins without saying so is comparing two rulebooks.
- Misaligned fiscal years. A March year-end and a December year-end do not share an economic quarter, especially in seasonal businesses.
- Scope changes. A large acquisition turns growth into arithmetic rather than business. The agent must mark the year the perimeter changed.
- Non-recurring items. Severance, asset sales, litigation. If the model folds them into the series unflagged, the trend it draws is fiction.
- Company-defined adjusted metrics. Every company adjusts its adjusted EBITDA its own way. An agent should always prefer the audited figure and carry the adjusted one as a separate column with its definition attached.
The rule we apply: the system must never deliver a number without its provenance. Every cell with its document, page and date. It is the same traceability discipline we demand of any AI agent for financial research, and without it the rest of the project is worthless.
Verification: the half of the project nobody budgets for
In our projects the verification layer takes between a third and a half of total effort, and it is exactly the line item cheap proposals delete. Without it, the system produces numbers that look right, which is worse than producing nothing.
The four controls we treat as non-negotiable:
- Arithmetic ties. Assets equal liabilities plus equity; components sum to their totals; the cash flow statement reconciles to the change in cash. If it does not tie, the figure does not ship.
- Double extraction. Two independent passes over the same document, then compare. Discrepancies go to human review, never to an average.
- Mandatory citation. Every number linked to its exact location in the document. If the system cannot cite it, it marks the field unavailable instead of estimating it.
- Plausibility bands. Comparison against the company's own history. A 400% jump in a stable line item is nearly always a unit error, not news.
The architecture underneath is a well-indexed document base with context retrieval — what is usually called corporate RAG — plus a deterministic calculation layer. We break down the cost ranges for that infrastructure in our guide to what a corporate RAG system costs.
What should a fundamental analysis agent NOT do?
It should not issue recommendations, should not estimate figures it did not find, and should not trade. All three are technically easy and all three turn a productivity tool into a liability.
- Recommend buying or selling. Beyond being a different — and in many contexts regulated — activity, it breaks the system's purpose: giving verified context to whoever decides.
- Fill in gaps. A language model can always write a number. A figure that was not found must ship as not found.
- Value without explicit assumptions. If the system runs a discounted cash flow, a person sets the growth and discount assumptions and they stay visible in the output.
- Read real-time market signals. That is a different system with different engineering and different risks; do not mix them.
- Execute orders. The separation between the system that informs and the system that trades should be physical, not a configuration setting.
If your interest is in the execution and rule-validation side, that is different terrain, covered in our article on AI for backtesting and strategy validation, where the challenge is not reading documents but not fooling yourself with results.
What does it cost to build, and how long does it take?
A scoped system — a universe of 30 to 100 companies, official sources, verified extraction and automated comparison — sits in the custom-agent band for an SMB: roughly €3,000 to €15,000 depending on the number of sources, the depth of history and the level of verification required, with a first useful deployment in 6 to 10 weeks. Annual maintenance runs at 10-20% of build cost, and here it has a concrete cause: companies change the format of their reports, so extraction has to be revisited every earnings season.
Two line items routinely blow up. Third-party data: if you need clean history from a commercial provider, the licence can exceed the development cost. And document volume: model spend scales with pages processed, not with the number of companies. Before you request a quote, define the universe and the historical depth — without those two numbers, any quote is fiction.
How to build it, step by step
- Define the universe and the official sources you accept as valid. Skip this and the system will end up mixing press releases with audited accounts.
- Build the normalized line-item schema before touching any model. It is the least glamorous work and the one that decides whether the project is useful.
- Start with 10 companies and 3 fiscal years. Extract, manually verify every cell, and measure the real accuracy rate. That number is your baseline.
- Add the verification layer until the system catches its own errors on the control sample.
- Scale the universe, not the features. More companies at the same quality beats more features at unknown quality.
- Revisit every earnings season and treat extraction as living code, not a closed deliverable.
If you are weighing a system like this for your research team, we always start with a measured pilot on your real universe before committing scope — that is how we work from our AI consulting practice.
Frequently asked questions
Can a language model read an annual report without making mistakes?
Not reliably on its own, and that is the correct design premise. The typical errors — units, scope, overlapping periods — are subtle and invisible when you read the output. That is why the system is built with structured extraction where it exists, arithmetic verification always, and a mandatory citation for every figure.
Does it work for private companies?
Yes, with more work. Without a mandated structured electronic format, everything depends on the quality of filed accounts and extraction goes back to document reading. Arithmetic verification matters even more, because there is no structured source to check against.
How much history do you need?
For comparison to be meaningful, at least five fiscal years; ten if the sector is cyclical. The binding constraint is rarely technical — it is availability and cost: the further back you go, the less structured data exists and the more documents you must process.
Is this the same as an AI assistant that summarizes company news?
No. A news summarizer works on text and produces text; a fundamental analysis system produces verified data with provenance. They can be combined, but the summary must never feed the figures table.
This article is about the technology and the business of AI applied to financial markets. It is not financial advice and not an investment recommendation.