MCP Server live — AI agents can now query 105M+ SEC facts. Connect your agent →
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
valuein_query.py
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_end
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'
  AND fi.filing_date < '2025-01-01'
ORDER BY fi.filing_date DESC
LIMIT 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
valuein_query.py
from valuein_sdk import ValueinClient, ValueinError

filings_sql = """
SELECT
    r.symbol, r.name, r.sector,
    fi.filing_date
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 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_assets
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-Q'
  AND f.fiscal_year = 2024
  AND im.index_name = 'SP500'
  AND im.removal_date IS NULL
GROUP 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
valuein_query.py
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_pct
FROM eight_k_counts e
JOIN financial_trend f USING (symbol)
ORDER BY e.eight_k_count DESC
LIMIT 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
valuein_query.py
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_coverage
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 = 2024
  AND im.index_name = 'SP500'
  AND im.removal_date IS NULL
GROUP BY r.symbol, r.name, r.sector
HAVING div_paid_m > 0
ORDER BY fcf_div_coverage ASC NULLS LAST
LIMIT 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.