ValueinValuein
All SEC Filing Coverage
20-F
Foreign Private Issuer

Global companies. Same schema.

The 20-F is the 10-K equivalent for foreign companies listed on US exchanges. Alibaba, ASML, Novo Nordisk, Toyota, SAP — these international giants file annually with the SEC. Valuein standardizes their XBRL-tagged financials to the same schema as domestic 10-K filers, so your queries work across the entire universe without case-by-case adjustments.

  • IFRS and US GAAP financials on the same schema
  • ADR and directly-listed foreign companies on US exchanges
  • Cross-listed companies queryable alongside S&P500
  • Annual data from 1993 to present
  • Amendment tracking — 20-F/A restated values preserved

Example 20-F filers in dataset

BABAAlibaba Group
ASMLASML Holding
SAPSAP SE
TMToyota Motor
NVONovo Nordisk
SONYSony Group
SHOPShopify (dual-listed)
RIORio Tinto

Full universe includes 800+ foreign private issuers filing with the SEC.

Python SDK

Global equity queries that deliver alpha

Production-ready queries using ValueinClient combining 20-F and 10-K data for cross-border analysis.

Cross-Listed International Revenue Screener

Compare revenue scale and growth across all 20-F filers on US exchanges. International companies are frequently mispriced because most quant strategies focus solely on domestic filers.

Python
Show the query ↓
valuein_query.pypython
from valuein_sdk import ValueinClient, ValueinError sql = """SELECT    r.symbol, r.name, r.sector,    r.exchange,    MAX(CASE WHEN standard_concept = 'Revenues' AND fiscal_year = 2024 THEN numeric_value END)        / 1e9 AS revenue_2024_b,    MAX(CASE WHEN standard_concept = 'Revenues' AND fiscal_year = 2022 THEN numeric_value END)        / 1e9 AS revenue_2022_b,    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 = 2022 THEN numeric_value END), 0),            0.5        ) - 1, 3    ) AS cagr_2yrFROM fact fJOIN references r ON f.entity_id = r.cikWHERE f.form_type = '20-F'  AND f.standard_concept = 'Revenues'  AND r.is_active = TRUEGROUP BY r.symbol, r.name, r.sector, r.exchangeHAVING revenue_2024_b > 1ORDER BY cagr_2yr DESCLIMIT 30""" try:    with ValueinClient() as client:        df = client.run_query(sql)        print(df)except ValueinError as e:    print(f"Valuein error: {e}")

Global Gross Margin Comparison — ADRs vs S&P500

Test whether cross-listed international companies in the same sector trade at a discount despite comparable margins — a classic pair-trade setup for global fundamental analysts.

Python
Show the query ↓
valuein_query.pypython
from valuein_sdk import ValueinClient, ValueinError sql = """WITH tech_margins AS (    SELECT        r.symbol, r.name,        r.sector,        f.form_type,        CASE WHEN f.form_type = '10-K' THEN 'US Domestic' ELSE 'ADR / Foreign' END AS listing_type,        MAX(CASE WHEN standard_concept = 'GrossProfit' THEN numeric_value END) AS gross_profit,        MAX(CASE WHEN standard_concept = 'Revenues'    THEN numeric_value END) AS revenue    FROM fact f    JOIN references r ON f.entity_id = r.cik    WHERE f.form_type IN ('10-K', '20-F')      AND f.fiscal_year = 2024      AND r.sector = 'Technology'      AND r.is_active = TRUE    GROUP BY r.symbol, r.name, r.sector, f.form_type)SELECT    listing_type,    COUNT(*)                                                    AS companies,    ROUND(AVG(gross_profit / NULLIF(revenue, 0)) * 100, 1)     AS avg_gross_margin_pct,    ROUND(MEDIAN(gross_profit / NULLIF(revenue, 0)) * 100, 1)  AS median_gross_margin_pctFROM tech_marginsWHERE revenue > 0 AND gross_profit IS NOT NULLGROUP BY listing_type""" try:    with ValueinClient() as client:        df = client.run_query(sql)        print(df)except ValueinError as e:    print(f"Valuein error: {e}")

Operating Cash Flow Quality — International Universe

FCF conversion across the largest cross-listed companies. High FCF conversion in international companies is often overlooked by US-focused analysts — creating systematic mispricings.

Python
Show the query ↓
valuein_query.pypython
from valuein_sdk import ValueinClient, ValueinError sql = """SELECT    r.symbol, r.name, r.sector, r.exchange,    ROUND(        MAX(CASE WHEN standard_concept = 'NetCashProvidedByUsedInOperatingActivities'            THEN COALESCE(derived_quarterly_value, numeric_value) END) / 1e9, 2    ) AS cfo_b,    ROUND(        ABS(MAX(CASE WHEN standard_concept = 'PaymentsToAcquirePropertyPlantAndEquipment'            THEN numeric_value END)) / 1e9, 2    ) AS capex_b,    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))) / 1e9, 2    ) AS fcf_b,    ROUND(        MAX(CASE WHEN standard_concept = 'NetIncomeLoss' THEN numeric_value END) / 1e9, 2    ) AS net_income_bFROM fact fJOIN references r ON f.entity_id = r.cikWHERE f.form_type = '20-F'  AND f.fiscal_year = 2024  AND r.is_active = TRUEGROUP BY r.symbol, r.name, r.sector, r.exchangeHAVING fcf_b > 0.5ORDER BY fcf_b DESCLIMIT 20""" try:    with ValueinClient() as client:        df = client.run_query(sql)        print(df)except ValueinError as e:    print(f"Valuein error: {e}")

Debt Structure Comparison — Global Industrials

Compare leverage ratios across domestic and foreign industrial filers. IFRS lease accounting vs US GAAP creates visible capital structure differences — surface that discrepancy programmatically.

Python
Show the query ↓
valuein_query.pypython
from valuein_sdk import ValueinClient, ValueinError sql = """SELECT    r.symbol, r.name, r.exchange,    CASE WHEN f.form_type = '20-F' THEN 'International' ELSE 'US' END AS universe,    ROUND(        MAX(CASE WHEN standard_concept = 'LongTermDebt'           THEN numeric_value END) /        NULLIF(MAX(CASE WHEN standard_concept = 'StockholdersEquity' THEN numeric_value END), 0),        2    ) AS debt_to_equity,    ROUND(        MAX(CASE WHEN standard_concept = 'LongTermDebt' THEN numeric_value END) / 1e9, 2    ) AS long_term_debt_b,    ROUND(        MAX(CASE WHEN standard_concept = 'Assets' THEN numeric_value END) / 1e9, 1    ) AS total_assets_bFROM fact fJOIN references r ON f.entity_id = r.cikWHERE f.form_type IN ('10-K', '20-F')  AND f.fiscal_year = 2024  AND r.sector = 'Industrials'  AND r.is_active = TRUEGROUP BY r.symbol, r.name, r.exchange, f.form_typeHAVING total_assets_b > 5ORDER BY debt_to_equity ASC NULLS LASTLIMIT 30""" try:    with ValueinClient() as client:        df = client.run_query(sql)    print(df.groupby("universe")["debt_to_equity"].describe())except ValueinError as e:    print(f"Valuein error: {e}")
MCP Server

Global research with AI

Ask Claude to compare international companies against domestic peers, surface undervalued ADRs by sector, or analyze revenue trends for specific cross-listed companies — all from your 20-F dataset.

Compare revenue growth for the top 20 ADR companies vs their S&P500 sector peers in 2024
Which foreign private issuers in the Technology sector have higher operating margins than the S&P500 average?
Show me the FCF conversion ratio for all 20-F filers with revenue over $10 billion
What is Samsung's revenue trend over the last 5 years from 20-F filings?

Add international coverage to your strategy

Pro plan includes 20-F filers across the full 19,000+ ticker universe. Institutional adds 6-K interim reports and 40-F (Canadian filers). Free tier available.