VectorFin/Glossary/10-Q Filing
NLP for Finance

What is 10-Q Filing?

The quarterly SEC filing containing unaudited financial statements and management discussion for each of the first three quarters of a company's fiscal year.

In Plain English

Between the comprehensive annual 10-K reports, companies file three quarterly updates called 10-Qs — one for each of the first three fiscal quarters (the fourth quarter is covered in the annual 10-K). The 10-Q is a lighter version of the annual report: unaudited financial statements, a condensed management discussion section, and an update to any material risk factors.

"Unaudited" doesn't mean unreviewed — auditors typically perform a "review" of quarterly financials, a less intensive process than the full audit required for the annual report. But it does mean the numbers are more preliminary and subject to revision.

The timing of 10-Q filing matters. Large accelerated filers must file within 40 days of quarter end; smaller companies have up to 45 days. The 10-Q often arrives after the earnings call, meaning analysts already have the headline numbers but the 10-Q provides the full disclosure including footnotes, segment details, and legal updates that the earnings call may have glossed over.

For NLP analysis, 10-Qs provide something the earnings call does not: a written, legally attested narrative that has been reviewed by lawyers and auditors. Management may be more candid in an earnings call Q&A, but 10-Q language has been carefully chosen and carries legal weight. Changes in 10-Q language from quarter to quarter — especially in the "liquidity and capital resources" section or the risk factor updates — are high-value signals.

Tracking 10-Q language changes at quarterly frequency (vs. annual for 10-K) gives you four opportunities per year to detect narrative shifts at each company.

Technical Definition

10-Q structure (abbreviated vs 10-K):

Part I – Financial Information:

  • Item 1: Financial Statements (unaudited condensed)
  • Item 2: Management's Discussion and Analysis
  • Item 3: Quantitative and Qualitative Disclosures About Market Risk
  • Item 4: Controls and Procedures

Part II – Other Information:

  • Item 1: Legal Proceedings
  • Item 1A: Risk Factors (update since last 10-K)
  • Item 2: Unregistered Sales of Equity Securities and Use of Proceeds
  • Item 5: Other Information

Filing deadlines: Large accelerated filers: 40 days after quarter end. Accelerated filers: 40 days. Non-accelerated: 45 days. Late filing = Form NT 10-Q.

Item 1A (Risk Factor updates) is particularly important: companies only need to include material changes to risk factors since the last annual report. A new risk factor appearing mid-year is a significant disclosure, as is a risk factor that has been expanded with additional specificity.

XBRL requirement: quarterly financial tables are XBRL-tagged, making structured data extraction straightforward. Narrative sections remain unstructured.

How VectorFin Uses This

VectorFin ingests 10-Q filings via SEC EDGAR's public API, processing the MD&A and updated risk factors sections as embeddings. The quarterly frequency of 10-Qs provides higher temporal resolution than the annual 10-K for tracking narrative evolution:

GET https://api.vectorfinancials.com/v1/embeddings/{ticker}
    ?source=filing&filing_type=10-Q&section=mda&period=2024-Q3

The sentiment_drift signal uses quarterly earnings call embeddings, but the 10-Q MD&A provides a complementary written narrative signal. Discrepancies between earnings call tone and 10-Q written language can be revealing — management may be more candid in written disclosures than in the investor-facing prepared remarks.

VectorFin aligns the 10-Q's filed_date as the effective_ts, ensuring backtests correctly exclude the filing until it was publicly available.

Code Example

import requests
import numpy as np

API_BASE = "https://api.vectorfinancials.com"
API_KEY = "vf_your_api_key_here"

def cosine_sim(a, b):
    a, b = np.array(a), np.array(b)
    return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)))

# Cross-reference: compare earnings call tone with 10-Q written language
# Divergence may indicate management is more cautious in written form

ticker = "META"
period = "2024-Q3"

# Earnings call embeddings (spoken)
call_resp = requests.get(
    f"{API_BASE}/v1/embeddings/{ticker}",
    params={"period": period, "source": "earnings_call"},
    headers={"X-API-Key": API_KEY},
)
call_embedding = np.mean([c["embedding"] for c in call_resp.json()["chunks"]], axis=0)

# 10-Q MD&A embeddings (written)
q_resp = requests.get(
    f"{API_BASE}/v1/embeddings/{ticker}",
    params={"period": period, "source": "filing",
            "filing_type": "10-Q", "section": "mda"},
    headers={"X-API-Key": API_KEY},
)
q_embedding = np.mean([c["embedding"] for c in q_resp.json()["chunks"]], axis=0)

similarity = cosine_sim(call_embedding, q_embedding)
print(f"{ticker} {period}")
print(f"Earnings call vs 10-Q MD&A semantic alignment: {similarity:.4f}")

if similarity < 0.85:
    print("WARNING: Significant divergence between spoken and written narrative")
    print("Investigate whether management is more cautious in written disclosures")

Put 10-Q Filing to work in your pipeline

Access AI-ready financial data — embeddings, signals, Iceberg tables.