ValueinValuein
All SEC Filing Coverage
10-K
Annual Report

Annual filings. 30+ years of alpha.

The 10-K is the most information-dense document a public company produces. Audited financials, risk factors, segment breakdowns, management commentary. We standardize every XBRL tag across 19,000+ companies so your queries work across tickers and decades without schema gymnastics.

  • Full income statement, balance sheet, cash flow statement
  • Segment-level revenue and operating income
  • Historical data from 1993 to present
  • Amendment tracking — 10-K/A restated values preserved
  • Point-in-time: accepted_at timestamps for clean backtests

111M+

Standardized facts, all form types

292

Standardized financial concepts

1993

Earliest filing year

2.35M

XBRL filings processed

Python SDK

SQL queries that deliver alpha

Production-ready queries using ValueinClient. Copy, run, adapt.

5-Year Revenue CAGR Screener

Find S&P500 companies with 5-year revenue CAGR above 15% — the core compounders screen. Uses a single pivot over the fact table for efficiency.

Python
Show the query ↓
valuein_query.pypython
from valuein_sdk import ValueinClient, ValueinError sql = """SELECT    r.symbol,    r.name,    r.sector,    MAX(CASE WHEN standard_concept = 'Revenues' AND fiscal_year = 2024 THEN numeric_value END) AS rev_2024,    MAX(CASE WHEN standard_concept = 'Revenues' AND fiscal_year = 2019 THEN numeric_value END) AS rev_2019,    ROUND(        POWER(            MAX(CASE WHEN standard_concept = 'Revenues' AND fiscal_year = 2024 THEN numeric_value END) /            NULLIF(MAX(CASE WHEN standard_concept = 'Revenues' AND fiscal_year = 2019 THEN numeric_value END), 0),            0.2        ) - 1, 4    ) AS cagr_5yrFROM fact fJOIN references r        ON f.entity_id = r.cikJOIN index_membership im ON im.cik = r.cikWHERE f.form_type = '10-K'  AND f.standard_concept = 'Revenues'  AND im.index_name = 'SP500'  AND im.removal_date IS NULL  AND r.is_active = TRUEGROUP BY r.symbol, r.name, r.sectorHAVING cagr_5yr > 0.15ORDER BY cagr_5yr DESCLIMIT 25""" try:    with ValueinClient() as client:        df = client.run_query(sql)        print(df)except ValueinError as e:    print(f"Valuein error: {e}")

Operating Leverage Detector

Find companies where operating margin expanded more than 3 percentage points over 3 years — a hallmark of businesses with fixed-cost structures scaling into profit.

Python
Show the query ↓
valuein_query.pypython
from valuein_sdk import ValueinClient, ValueinError sql = """WITH annual_metrics AS (    SELECT        r.symbol,        r.name,        f.fiscal_year,        MAX(CASE WHEN standard_concept = 'Revenues' THEN numeric_value END)           AS revenue,        MAX(CASE WHEN standard_concept = 'OperatingIncomeLoss' THEN numeric_value END) AS op_income    FROM fact f    JOIN references r        ON f.entity_id = r.cik    JOIN index_membership im ON im.cik = r.cik    WHERE f.form_type = '10-K'      AND f.fiscal_year BETWEEN 2021 AND 2024      AND im.index_name = 'SP500'      AND im.removal_date IS NULL    GROUP BY r.symbol, r.name, f.fiscal_year),margins AS (    SELECT symbol, name, fiscal_year,        op_income / NULLIF(revenue, 0) AS op_margin    FROM annual_metrics)SELECT    m24.symbol, m24.name,    ROUND(m21.op_margin * 100, 1) AS margin_2021_pct,    ROUND(m24.op_margin * 100, 1) AS margin_2024_pct,    ROUND((m24.op_margin - m21.op_margin) * 100, 1) AS margin_expansion_ppFROM margins m24JOIN margins m21 USING (symbol, name)WHERE m24.fiscal_year = 2024  AND m21.fiscal_year = 2021  AND (m24.op_margin - m21.op_margin) > 0.03ORDER BY margin_expansion_pp DESCLIMIT 20""" try:    with ValueinClient() as client:        df = client.run_query(sql)        print(df)except ValueinError as e:    print(f"Valuein error: {e}")

Free Cash Flow Quality Screen

High FCF conversion — where FCF exceeds net income — signals earnings quality. Companies with persistent FCF > net income generate real cash, not accrual accounting profits.

Python
Show the query ↓
valuein_query.pypython
from valuein_sdk import ValueinClient, ValueinError sql = """SELECT    r.symbol, r.name, r.sector,    ROUND(        MAX(CASE WHEN standard_concept = 'NetCashProvidedByUsedInOperatingActivities'            THEN COALESCE(derived_quarterly_value, numeric_value) END) -        ABS(MAX(CASE WHEN standard_concept = 'PaymentsToAcquirePropertyPlantAndEquipment'            THEN numeric_value END)), 0    ) AS fcf,    ROUND(        MAX(CASE WHEN standard_concept = 'NetIncomeLoss' THEN numeric_value END), 0    ) AS net_income,    ROUND(        (MAX(CASE WHEN standard_concept = 'NetCashProvidedByUsedInOperatingActivities'            THEN COALESCE(derived_quarterly_value, numeric_value) END) -        ABS(MAX(CASE WHEN standard_concept = 'PaymentsToAcquirePropertyPlantAndEquipment'            THEN numeric_value END))) /        NULLIF(MAX(CASE WHEN standard_concept = 'NetIncomeLoss' THEN numeric_value END), 0),        2    ) AS fcf_conversion_ratioFROM fact fJOIN references r        ON f.entity_id = r.cikJOIN index_membership im ON im.cik = r.cikWHERE f.form_type = '10-K'  AND f.fiscal_year = 2024  AND im.index_name = 'SP500'  AND im.removal_date IS NULLGROUP BY r.symbol, r.name, r.sectorHAVING fcf > 0 AND fcf_conversion_ratio > 1.1ORDER BY fcf_conversion_ratio DESCLIMIT 20""" try:    with ValueinClient() as client:        df = client.run_query(sql)        print(df)except ValueinError as e:    print(f"Valuein error: {e}")

Return on Invested Capital (ROIC) Trend

ROIC is the most reliable predictor of long-term equity returns. This query computes ROIC across 5 annual filings and filters to companies sustaining above 15% average.

Python
Show the query ↓
valuein_query.pypython
from valuein_sdk import ValueinClient, ValueinError sql = """WITH invested_capital AS (    SELECT        r.symbol, r.name,        f.fiscal_year,        MAX(CASE WHEN standard_concept = 'OperatingIncomeLoss' THEN numeric_value END)            * (1 - 0.21) AS nopat,        MAX(CASE WHEN standard_concept = 'Assets' THEN numeric_value END) -        MAX(CASE WHEN standard_concept = 'LiabilitiesCurrent' THEN numeric_value END) AS ic    FROM fact f    JOIN references r        ON f.entity_id = r.cik    JOIN index_membership im ON im.cik = r.cik    WHERE f.form_type = '10-K'      AND f.fiscal_year BETWEEN 2020 AND 2024      AND im.index_name = 'SP500'      AND im.removal_date IS NULL    GROUP BY r.symbol, r.name, f.fiscal_year)SELECT    symbol, name, fiscal_year,    ROUND(nopat / NULLIF(ic, 0) * 100, 1) AS roic_pctFROM invested_capitalWHERE ic > 0QUALIFY AVG(nopat / NULLIF(ic, 0)) OVER (PARTITION BY symbol) > 0.15ORDER BY symbol, fiscal_year""" try:    with ValueinClient() as client:        df = client.run_query(sql)    print(df.pivot(index=["symbol", "name"], columns="fiscal_year", values="roic_pct"))except ValueinError as e:    print(f"Valuein error: {e}")
MCP Server

Query 10-K data with natural language

The Valuein MCP (Model Context Protocol) server connects Claude, Copilot, ChatGPT, or Cursor directly to the 10-K dataset. Ask a question in plain English — the agent calls typed, deterministic tools and every figure comes back with its fact_id and source filing.

Add the remote server URL to your Claude Desktop or Cursor config and get instant access to 30+ years of annual filings without writing a single line of SQL.

claude_desktop_config.jsonjson
{  "mcpServers": {    "valuein": {      "url": "https://mcp.valuein.biz/mcp",      "headers": {        "Authorization": "Bearer YOUR_API_TOKEN"      }    }  }}

Example prompts for 10-K data:

Show me all S&P500 companies with 10-K revenue CAGR above 20% over the last 5 years
Which sectors have the highest median operating margins based on the latest 10-K filings?
Find technology companies where free cash flow conversion exceeded 110% in 2024
Compare Apple's gross margin trend from 2015 to 2024 using annual filings

The MCP server works on every plan — the free sample tier needs no token at all. See pricing →

Start with 10-K data today

The S&P 500 tier is free — no credit card. Pro unlocks the full 19,000+ company universe.