AI financial statement analysis

Updated 2026-09-05

Extract the statements and footnotes, reconcile the numbers, then use a model to explain changes and surface questions. Keep every material claim tied to the original filing.

Start with a question and a filing pair

Choose comparable periods and a question such as whether operating cash flow supports reported earnings growth. Collect the relevant statements and footnotes before requesting a summary. The useful output is a reconciliation with explanations and unresolved items, not a generic description of the company. Keep the issuer, accounting basis, reporting currency and information cutoff explicit. For a historical analysis, use documents that were available by that cutoff; a period end is not the date on which the market could read the filing.

Collect original documents and preserve their identity

Prefer the issuer's filing and investor-relations sources, with an appropriate regulator source for the market. For US filers, EDGAR offers submissions history and XBRL company data. Retain the original filing as well as extracted values, because table context and footnotes may explain differences that a single metric cannot. Preserve document URL, filing identifier, publication time, retrieval time and content hash. Store amendments as new versions. For issuers outside the US, use the relevant local disclosures rather than assuming SEC coverage is a complete record.

Extract tables with explicit financial dimensions

For every value, preserve its concept, period, unit, currency and source locator. Distinguish balance-sheet snapshots from income and cash-flow measures spanning a period. Keep consolidated figures separate from segment data and reported measures separate from management adjustments. A blank cell is not zero. When table extraction is ambiguous, stop that calculation and retain the affected page for review. If OCR is required, compare the important cells visually with the original before using them in ratios or a generated explanation.

DimensionRecordError it prevents
PeriodStart, end and fiscal labelQuarter compared with year-to-date
UnitCurrency and scaleThousands treated as millions
ScopeConsolidated, segment or otherMixing incomparable business scopes
BasisReported, adjusted or derivedUnstated accounting adjustments
SourceDocument version and table locatorUntraceable extracted number

Calculate metrics outside the language model

Use deterministic code or an audited spreadsheet for material calculations and preserve the inputs. Define what happens when a denominator is zero, negative or missing. The small function below illustrates a change calculation when the baseline is positive; it deliberately leaves other cases for a documented alternative. It contains no company data or measured result. A production financial schema should also validate unit and period compatibility before calling it. Pass the resulting calculation record to the model instead of asking it to reconstruct arithmetic from prose.

from decimal import Decimal

def comparable_change(current, prior):
    if current is None or prior is None:
        return {"state": "unavailable", "code": "MISSING_VALUE"}
    current, prior = Decimal(str(current)), Decimal(str(prior))
    if not current.is_finite() or not prior.is_finite():
        return {"state": "unavailable", "code": "NONFINITE_VALUE"}
    if prior <= 0:
        return {"state": "review", "code": "NONPOSITIVE_BASE"}
    return {
        "state": "calculated",
        "change_fraction": str((current - prior) / prior),
    }

Ask the model to explain drivers and contradictions

Provide the reconciled metrics with relevant management discussion and footnotes. Ask for explanations that cite source locators, alternative explanations and missing evidence. For example, an earnings-versus-cash divergence may require reviewing working capital, noncash items and acquisitions; the model should identify which disclosures support each possibility. Keep a company's stated explanation distinct from the analyst's interpretation. Require the output to retain source IDs and calculation references so a reviewer can inspect the exact evidence without rereading the entire filing.

Review the statement relationships and report claims

Reconcile the relevant totals and statement relationships before approving the explanation. Then open each material citation and check the period, scope and unit. Compare footnotes with the extracted table when a number looks inconsistent. Review whether changes in consolidation, presentation or accounting policy affect comparability. A model can help find contradictions but should not resolve them by silently choosing one figure. Mark the artifact pending when the explanation depends on a reviewer-approved assumption, and retain the reason for any manual correction.

Make the workflow resumable and economical

Store collection, extraction, calculation and narrative review as separate artifacts. Cache extraction by document hash and parser version, then rerun only the affected stage when a filing or rule changes. Limit the source packet to the passages needed for the question while keeping the original available. Track model requests, retries, document processing, data access and analyst corrections together at the job level. Use current pricing for planning and actual usage for reconciliation. FinRobot and FinGPT offer relevant application patterns, but select the exact version and runtime path before adapting them.

Inspect a source-linked NVIDIA reconciliation

Our historical sample uses NVIDIA's February 25, 2026 earnings release. Ten selected GAAP values cover FY2026 and FY2025 in USD millions. Deterministic checks reconcile revenue less cost to gross profit, then gross profit less operating expenses to operating income in each year. Calculated revenue growth is 65.47%; the gross-margin change is -3.92 percentage points, calculated from unrounded table amounts. The issuer's displayed margin change is rounded more coarsely.

The downloadable packet preserves the table locator, publication date, period ends, input hash and calculation references. These calculations show why revenue growth and profitability require separate questions; they do not establish a cause or an investment recommendation. The coordinating agent selected the figures and JavaScript performed the checks. This is a reproducible source-and-calculation example, not a measured financial-agent integration or an APIsRouter inference run.

NVIDIA historical financial statement comparison with five selected metrics, calculated revenue growth and gross-margin change, and source evidence.
Actual local report generated from ten public issuer facts, with four statement identities checked.

Evidence and limitations

The NVIDIA example validates ten selected facts and four arithmetic relationships from a historical unaudited earnings release. It does not cover the full filing, independent accountant review, automated table extraction, live investment decisions or a project-level model workflow. Model tokens and costs remain unavailable. The source-linked packet and checks are available for inspection; a production analysis still needs the relevant footnotes, period-specific context and review of explanatory claims.

FAQ

Should I send the entire annual report to a model?

Start with the relevant statements and footnotes for a defined question. Keep the whole original available, but use source-linked extraction to make review and retries more manageable.

Are XBRL facts enough for an international comparison?

They can provide structured inputs, but coverage, taxonomy, period and accounting context still need review. Use original local disclosures where appropriate.

How should restatements be handled?

Retain both versions and their publication times. Current analysis can explicitly use a revised figure; historical analysis must respect what was known at its cutoff.

Can a generated explanation repair a missing table cell?

No. Keep the value unavailable and route it for extraction or human review instead of letting the model invent a replacement.

What is the minimum useful output?

A small set of reconciled calculations, supported explanations, source locators, unresolved items and a clear review decision.