ValueinValuein
All SEC Filing Coverage
8-K
Current Report

Material events. Within 4 days.

Companies must file an 8-K within 4 business days of any material event. Earnings announcements, M&A deals, CEO departures, dividend declarations, guidance revisions — the 8-K is where corporate events hit the public record first. Valuein indexes every 8-K with filing date and accepted_at timestamps so you can build event-driven strategies with clean temporal boundaries.

  • Earnings announcements (Item 2.02) with precise filing timestamps
  • M&A events — acquisition agreements and closings
  • Executive appointments and departures (Item 5.02)
  • Dividend declarations and special distributions
  • Guidance revisions and material contract disclosures

Why 8-K timing matters for backtesting

The filing_date in the filing table is the SEC acceptance timestamp — the moment the document became public. Use this as your event date, not the period_end, to avoid look-ahead bias in event-driven backtests.

All 8-K filing dates are available in the filing Parquet table, separate from the fact table which holds financial figures from 10-K and 10-Q filings.

Python SDK

Event-driven queries that deliver alpha

Production-ready queries using ValueinClient combining 8-K metadata with fundamental context.

Earnings Announcement Event Timeline

Map every earnings release to its precise filing date. Build a programmatic earnings calendar and measure announcement lag — critical for event-driven strategies.

Python
Show the query ↓
valuein_query.pypython
from valuein_sdk import ValueinClient, ValueinError sql = """SELECT    r.symbol,    r.name,    r.sector,    fi.period_end          AS reporting_period,    fi.filing_date         AS announcement_date,    fi.accepted_at        AS entered_valuein_at,    DATEDIFF('day', fi.period_end, fi.filing_date) AS days_after_period_endFROM filing fiJOIN references r        ON fi.entity_id = r.cikJOIN index_membership im ON im.cik = r.cikWHERE fi.form_type = '8-K'  AND im.index_name = 'SP500'  AND im.removal_date IS NULL  AND fi.filing_date >= '2024-01-01'  AND fi.filing_date < '2025-01-01'ORDER BY fi.filing_date DESCLIMIT 100""" try:    with ValueinClient() as client:        df = client.run_query(sql)    print(df.sort_values("days_after_period_end").head(20))except ValueinError as e:    print(f"Valuein error: {e}")

M&A Event Screen — Acquisition Announcements

Cross-reference 8-K filing density with the acquirer's balance sheet to build event-driven signals. Companies with strong cash and low leverage make better acquirers.

Python
Show the query ↓
valuein_query.pypython
from valuein_sdk import ValueinClient, ValueinError filings_sql = """SELECT    r.symbol, r.name, r.sector,    fi.filing_dateFROM filing fiJOIN references r        ON fi.entity_id = r.cikJOIN index_membership im ON im.cik = r.cikWHERE fi.form_type = '8-K'  AND im.index_name = 'SP500'  AND im.removal_date IS NULL  AND fi.filing_date BETWEEN '2024-01-01' AND '2024-12-31'ORDER BY fi.filing_date DESC""" health_sql = """SELECT    r.symbol,    MAX(CASE WHEN standard_concept = 'CashAndCashEquivalentsAtCarryingValue'        THEN numeric_value END) AS cash,    MAX(CASE WHEN standard_concept = 'LongTermDebt'        THEN numeric_value END) AS long_term_debt,    MAX(CASE WHEN standard_concept = 'Assets'        THEN numeric_value END) AS total_assetsFROM fact fJOIN references r        ON f.entity_id = r.cikJOIN index_membership im ON im.cik = r.cikWHERE f.form_type = '10-Q'  AND f.fiscal_year = 2024  AND im.index_name = 'SP500'  AND im.removal_date IS NULLGROUP BY r.symbol""" try:    with ValueinClient() as client:        eightk_df = client.run_query(filings_sql)        health_df  = client.run_query(health_sql)    result = eightk_df.merge(health_df, on="symbol", how="left")    strong = result[result["long_term_debt"] / result["total_assets"].clip(lower=1) < 0.3]    print(strong.head(20))except ValueinError as e:    print(f"Valuein error: {e}")

Executive Change Tracker — CEO and CFO Transitions

CEO and CFO transitions are among the most statistically significant fundamental events for forward 12-month performance. Cross-reference 8-K density with financial trajectory.

Python
Show the query ↓
valuein_query.pypython
from valuein_sdk import ValueinClient, ValueinError sql = """WITH eight_k_counts AS (    SELECT        r.symbol, r.name, r.sector,        COUNT(*) AS eight_k_count    FROM filing fi    JOIN references r        ON fi.entity_id = r.cik    JOIN index_membership im ON im.cik = r.cik    WHERE fi.form_type = '8-K'      AND im.index_name = 'SP500'      AND im.removal_date IS NULL      AND fi.filing_date >= '2024-01-01'    GROUP BY r.symbol, r.name, r.sector),financial_trend AS (    SELECT        r.symbol,        MAX(CASE WHEN standard_concept = 'NetIncomeLoss' AND fiscal_year = 2024            THEN numeric_value END) AS net_income_2024,        MAX(CASE WHEN standard_concept = 'NetIncomeLoss' AND fiscal_year = 2023            THEN numeric_value END) AS net_income_2023    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 im.index_name = 'SP500'      AND im.removal_date IS NULL    GROUP BY r.symbol)SELECT    e.symbol, e.name, e.sector,    e.eight_k_count,    ROUND(f.net_income_2024 / 1e6, 0) AS net_income_2024_m,    ROUND(f.net_income_2023 / 1e6, 0) AS net_income_2023_m,    ROUND(        (f.net_income_2024 - f.net_income_2023) /        NULLIF(ABS(f.net_income_2023), 0) * 100, 1    ) AS ni_change_pctFROM eight_k_counts eJOIN financial_trend f USING (symbol)ORDER BY e.eight_k_count DESCLIMIT 25""" try:    with ValueinClient() as client:        df = client.run_query(sql)        print(df)except ValueinError as e:    print(f"Valuein error: {e}")

Dividend Sustainability Screen

Track FCF coverage of dividend payments to flag dividends at risk before a cut is announced.

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    ) / 1e6 AS fcf_m,    ABS(        MAX(CASE WHEN standard_concept = 'PaymentsOfDividendsCommonStock'            THEN numeric_value END)    ) / 1e6 AS div_paid_m,    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(ABS(MAX(CASE WHEN standard_concept = 'PaymentsOfDividendsCommonStock'            THEN numeric_value END)), 0), 2    ) AS fcf_div_coverageFROM 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 div_paid_m > 0ORDER BY fcf_div_coverage ASC NULLS LASTLIMIT 20""" try:    with ValueinClient() as client:        df = client.run_query(sql)        print(df)except ValueinError as e:    print(f"Valuein error: {e}")
MCP Server

Event-driven research with AI

Ask Claude to surface recent 8-K activity, cross-reference with balance sheet health, and flag companies with high event density relative to sector peers.

Which S&P500 companies filed 8-Ks with the most material events in Q1 2024?
Show me the earnings announcement dates for all mega-cap tech companies in 2024
Find companies where dividend FCF coverage ratio dropped below 1.5x in 2024
List all 8-K filings from energy sector companies in the last 90 days

Build your event-driven strategy today

Free tier. 100 API calls/day. Combine 8-K events with fundamental context in one query.