Trailing twelve months revenue from SEC EDGAR — why summing four 10-Qs is harder than it looks
Every screener, every EV/Revenue multiple, every "run-rate revenue" headline depends on trailing twelve months (TTM) revenue — the sum of the last four fiscal quarters ending at the anchor filing date.
For US issuers, the inputs are all on EDGAR. The math is not.
What TTM revenue is — and why it matters
TTM revenue answers a simple question: how much did this company sell over the last twelve months of reported fiscal periods?
It is not the same as:
- Latest annual revenue (10-K) — stale between annual filings; wrong for mid-year valuation
- Latest quarter × 4 — wrong for seasonality (retail Q4, semiconductors, insurance)
- YTD revenue on the latest 10-Q — cumulative, not trailing; double-counts if you add quarters naively
Investors use TTM for P/S, EV/Revenue, revenue growth run-rates, and peer comps. Data vendors often ship a single TTM figure without documenting how it was built. When the method is wrong, the ratio is wrong — silently.
The naive approach (and why it fails)
The textbook formula:
TTM revenue = Q1 + Q2 + Q3 + Q4
…assumes you have four isolated fiscal quarter revenue figures. SEC filers rarely make that easy.
Problem 1 — YTD reporting. Many 10-Q filings report cumulative year-to-date revenue (6M, 9M), not standalone quarter revenue. You cannot add two YTD figures from different fiscal years.
Problem 2 — Missing Q4. Companies file Q1–Q3 as 10-Qs and the full year as a 10-K. There is no standalone "Q4 10-Q" for most issuers. Q4 must be derived: FY revenue − 9M YTD, or FY − (Q1 + Q2 + Q3) when isolated quarters exist.
Problem 3 — Restatements and amendments. A 10-K/A may restate prior quarters. An empty amendment (cover page only, no restated figures) must not overwrite good quarter data — but naive parsers often prefer the newest filing regardless of what it actually contains.
Problem 4 — Period alignment. Each quarter's period-end should sit roughly 90 days after the prior quarter's, within the same fiscal year. Mixing a stub period or a fiscal year change produces a TTM that looks plausible and is wrong.
Method 1 — sum four isolated fiscal quarters
When each of the last four fiscal quarters has a clean, standalone quarter revenue figure, TTM is simply the sum of those four:
TTM revenue = revenue(quarter 1) + revenue(quarter 2) + revenue(quarter 3) + revenue(quarter 4)
Getting to four clean, standalone quarters takes real work on top of raw EDGAR data:
- Walk the filer's period history in order — same company, periodic filings only
- Classify each filing by what it actually covers: a single quarter, a 6-month or 9-month year-to-date stretch, or a full fiscal year
- Isolate a standalone quarter from a YTD filing by subtracting the prior YTD figure in the same fiscal year
- Derive the missing fourth quarter from the annual report when no standalone Q4 filing exists
This "sum of four quarters" method is our preferred path whenever it's available: each quarter traces back to a specific filing, so the TTM figure is fully auditable.
Method 2 — 10-K annual delta (Q4 derivation)
When four clean quarters aren't available yet — common right after a new 10-Q is filed, before the full quarter chain has been reconstructed — OpenFilings falls back to an annual-delta calculation instead:
TTM revenue ≈ latest full-year revenue (10-K)
+ year-to-date revenue (current 10-Q)
− year-to-date revenue (same checkpoint, prior year's 10-Q)
Intuition: take the last full fiscal year, then roll it forward by swapping out the overlapping months for the current year's equivalent stretch.
This fallback requires:
- A recent annual filing with a validated, full 12-month reporting period
- A prior-year quarterly filing at the same year-to-date checkpoint (e.g. both covering the first nine months)
- A clean revenue figure on both legs of the calculation
When both methods are available, the four-quarter sum wins — it's more granular and easier to double-check against the source filings.
Edge cases that break naive pipelines
| Scenario | Symptom | Fix |
|---|---|---|
| Empty amended annual filing | TTM drops to null or goes stale | Prefer the prior filing with real figures over an amendment that restated nothing |
| Fiscal year change | Quarter gap isn't ~90 days | Re-anchor the fiscal year; reject chains that mix two different fiscal calendars |
| Foreign private issuers (20-F / 40-F) | Different filing cadence than domestic issuers | Treat as annual-only; apply the right form-type rules per filer type |
| Business re-segmentation mid-year | One quarter restated, an earlier one not | Re-parse the affected filings rather than caching a stale TTM across the restatement |
| Banks and insurers | Revenue reported under non-standard labels | Resolve the correct revenue label for that filer type before isolating quarters |
We've hit every one of these in production — the fixes above are the actual lessons learned, not textbook edge cases.
EDGAR vs Yahoo vs a canonical layer
| Source | What you get | TTM-ready? |
|---|---|---|
| EDGAR raw XBRL | Instance facts, multiple revenue tags | ❌ — tag selection + period math required |
| EDGAR submissions API | Filing metadata only | ❌ — no computed KPIs |
| Typical finance-site "TTM revenue" | Single number, undocumented method | ⚠️ — good sanity check, not auditable |
| OpenFilings TTM revenue | Canonical KPI, tied to the source filings | ✅ — you can trace which quarters produced it |
If you are building a screener or an agent tool, the difference is provenance: can you cite which four quarters produced the TTM?
What OpenFilings exposes
On US SEC filings where a trailing-twelve-month figure can be computed:
- Trailing-twelve-month revenue in the filer's reported currency
- Which method produced it — four summed quarters, or the annual-delta fallback — so you know how much to trust the number
- Derived ratios that depend on TTM revenue (e.g. EV/Revenue, when market cap is available)
Via MCP or REST, call get_filing_kpis on the latest 10-Q or 10-K — TTM fields appear alongside point-in-period revenue, margins, and cash flow.
Example prompt for Claude or Cursor:
Get Apple's latest 10-Q KPIs. What is the trailing-twelve-month revenue, and which method was used to compute it?
Expected: a dollar TTM figure with a named method, tied back to specific filings — not a number pulled from training data.
TTM is where filing parsers earn their keep. EDGAR gives you the bricks; quarter isolation and fiscal period logic are the mortar.