CtrlK
BlogDocsLog inGet started
Tessl Logo

edgar-sec-filings

SEC EDGAR filing analysis — 10-K, 10-Q, 8-K, proxy statements, insider Form 4. Extract key financials, risk factors, management discussion, and generate investment signals from US public company filings.

62

Quality

73%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./agent/src/skills/edgar-sec-filings/SKILL.md
SKILL.md
Quality
Evals
Security

SEC EDGAR Filing Analysis

Overview

Analyze US public company filings from SEC EDGAR to extract fundamental insights, risk signals, and investment-relevant information. Covers annual reports (10-K), quarterly reports (10-Q), current events (8-K), proxy statements (DEF 14A), and insider transactions (Form 4).

This skill provides the analytical framework for interpreting SEC filings. Data retrieval uses read_url tool with EDGAR URLs or yfinance Ticker objects for structured financial data.

Filing Types and Investment Relevance

FilingFrequencyKey ContentSignal Value
10-KAnnualFull-year financials, risk factors, MD&A, segment dataComprehensive fundamental view
10-QQuarterlyQuarterly financials, interim MD&A, legal updatesTrend confirmation / inflection detection
8-KEvent-drivenMaterial events: M&A, CEO change, restatement, guidanceCatalyst / risk trigger
DEF 14AAnnual (proxy)Executive comp, board composition, shareholder proposalsGovernance quality signal
Form 4Within 2 daysInsider buys / sellsInsider conviction signal
13FQuarterlyInstitutional holdings >$100M AUMSmart money positioning
SC 13D/GEvent-driven>5% ownership stake disclosureActivist / strategic investor signal

EDGAR Data Access

Direct EDGAR URLs

# Company filings search
# https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK={ticker}&type={filing_type}

# Example: Apple 10-K filings
url = "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=AAPL&type=10-K&dateb=&owner=include&count=10"

# EDGAR full-text search (EFTS)
# https://efts.sec.gov/LATEST/search-index?q={query}&dateRange=custom&startdt={start}&enddt={end}

Via yfinance (structured data)

import yfinance as yf
ticker = yf.Ticker("AAPL")

# Financial statements (derived from 10-K/10-Q)
income = ticker.financials           # Annual income statement
income_q = ticker.quarterly_financials  # Quarterly
balance = ticker.balance_sheet       # Balance sheet
cashflow = ticker.cashflow           # Cash flow statement

# Insider transactions (derived from Form 4)
insider = ticker.insider_transactions

# Institutional holders (derived from 13F)
institutions = ticker.institutional_holders
major = ticker.major_holders

10-K / 10-Q Analysis Framework

I. Financial Statement Deep Dive

Income Statement Focus:

  • Revenue growth rate: YoY and QoQ acceleration / deceleration
  • Gross margin trend: expanding (pricing power) vs compressing (cost pressure)
  • Operating leverage: SG&A as % of revenue declining = positive operating leverage
  • R&D intensity: R&D / revenue ratio vs peers
  • Non-recurring items: restructuring charges, impairments, one-time gains

Balance Sheet Focus:

  • Cash & equivalents vs total debt: net cash / net debt position
  • Current ratio and quick ratio: liquidity health
  • Goodwill / intangibles as % of total assets: acquisition-driven growth risk
  • Inventory days (for manufacturers / retailers): rising = demand weakness signal
  • Accounts receivable days: rising = collection risk or channel stuffing

Cash Flow Focus:

  • FCF = Operating CF - CapEx: true cash generation power
  • FCF conversion = FCF / Net Income: >80% = high earnings quality
  • CapEx intensity = CapEx / Revenue: rising = growth investment or maintenance burden
  • Stock-based compensation: add back to get true cash earnings
  • Buyback vs dividend: capital return strategy signal

II. MD&A (Management Discussion & Analysis)

The MD&A section is the most qualitative and forward-looking part of the filing.

Key extraction targets:

  1. Revenue drivers: which segments / geographies are growing, which are declining
  2. Margin commentary: management explanation for margin changes
  3. Forward guidance language: "expect", "anticipate", "believe" — tone shift detection
  4. Risk factor changes: compare risk factors vs prior filing; NEW risks added = material change
  5. Liquidity and capital resources: debt maturity schedule, credit facility availability

Tone analysis signals:

# Simplified tone scoring
positive_words = ["growth", "improvement", "strong", "exceeded", "momentum", "opportunity"]
negative_words = ["challenging", "decline", "uncertainty", "headwind", "pressure", "risk"]
cautious_words = ["moderate", "cautious", "prudent", "measured", "selective"]

# Count frequency change vs prior filing
# Rising negative word count = deteriorating outlook
# Rising cautious words = management hedging

III. Risk Factor Analysis

Risk factor change detection (10-K vs prior 10-K):

Change TypeSignalAction
New risk factor addedMaterial new risk identifiedDeep dive on the specific risk
Risk factor removedRisk resolved or deemed immaterialPositive signal if genuine resolution
Language intensifiedRisk escalatingReview exposure and hedging
Order changed (moved higher)Risk priority elevatedAssess potential impact magnitude

Common risk categories for US equities:

  • Regulatory / legal risk (antitrust, FDA, patent expiry)
  • Customer concentration (>10% revenue from single customer must be disclosed)
  • Geographic concentration (China exposure, emerging market risk)
  • Technology disruption risk
  • Cybersecurity risk (new SEC mandate: material cybersecurity incidents must be disclosed in 8-K)
  • Climate / ESG risk (increasingly required)

8-K Event Analysis

Material Event Classification

Event Type8-K ItemTypical Price ImpactTime Sensitivity
Earnings pre-release2.02HighImmediate
M&A announcement1.01Very highImmediate
CEO / CFO departure5.02Medium-highSame day
Restatement4.02Very high (negative)Immediate
Guidance revision7.01/8.01HighSame day
Credit agreement change1.01Low-mediumMonitor
Share repurchase program8.01Low positiveBackground signal
Dividend change8.01MediumSame day

8-K Signal Rules

# High-priority 8-K events
if item == "4.02":  # Restatement
    signal = "strong_negative"  # Restatements destroy trust
    action = "review_all_prior_financials"
elif item == "2.02" and surprise_direction == "negative":
    signal = "negative"  # Earnings pre-announcement miss
elif item == "5.02" and role in ["CEO", "CFO"]:
    signal = "uncertainty"  # C-suite departure = governance risk
elif item == "1.01" and event_type == "acquisition":
    signal = "evaluate"  # M&A: acquirer usually -2 to -5%, target +20-40%

Insider Transaction Analysis (Form 4)

Signal Framework

PatternSignalConfidence
Cluster buying: 3+ insiders buying within 30 daysStrong bullishHigh
CEO/CFO large open-market purchase (>$500K)BullishHigh
Insider buying after price decline >20%Contrarian bullishMedium-high
Cluster selling at all-time highsNeutral to mildly bearishLow (may be pre-planned)
CFO selling >50% of holdingsBearishMedium
10b5-1 plan salesNeutralLow (pre-programmed)

Key distinctions:

  • Open-market purchases (most informative): insider spending own money
  • 10b5-1 plan sales (least informative): pre-programmed, regulatory safe harbor
  • Option exercises + immediate sale: often tax-driven, low signal value
  • Gift transactions: ignore for signal purposes
# Insider signal scoring
def score_insider_activity(transactions, lookback_days=90):
    buys = [t for t in transactions if t.type == "Purchase" and t.days_ago <= lookback_days]
    sells = [t for t in transactions if t.type == "Sale" and t.days_ago <= lookback_days]

    buy_value = sum(t.value for t in buys)
    sell_value = sum(t.value for t in sells)

    # Filter out 10b5-1 plan sales
    organic_sells = [s for s in sells if not s.is_10b5_1]

    if len(buys) >= 3 and buy_value > 1_000_000:
        return "strong_bullish"
    elif buy_value > sell_value * 2:
        return "bullish"
    elif len(organic_sells) >= 3 and sell_value > 5_000_000:
        return "bearish_watch"
    else:
        return "neutral"

13F Institutional Holdings Analysis

Smart Money Tracking

Key metrics:

  • Number of institutional holders: rising = broadening ownership base
  • Top 10 holder concentration: >50% = concentrated, vulnerable to single-fund redemption
  • New positions initiated this quarter: smart money entering
  • Positions closed this quarter: smart money exiting
  • Activist stakes (SC 13D): potential for corporate action catalyst

Institutional quality tiers:

  1. Tier 1 — Conviction signals: Berkshire, Baupost, Greenlight, Pershing Square, Tiger Global
  2. Tier 2 — Trend signals: BlackRock, Vanguard, Fidelity (flow-driven, less stock-picking signal)
  3. Tier 3 — Quantitative: Renaissance, Two Sigma, Citadel (high turnover, less directional signal)
# 13F change detection
def analyze_13f_changes(current_holders, prior_holders):
    new_positions = current_holders - prior_holders  # New entries
    closed_positions = prior_holders - current_holders  # Exits

    # Flag: multiple Tier 1 funds initiating
    tier1_new = [h for h in new_positions if h.tier == 1]
    if len(tier1_new) >= 2:
        signal = "strong_smart_money_accumulation"

    return signal

Composite Filing Signal

Scoring Template

filing_score = {
    "financial_health": 0,       # -2 to +2: based on 10-K/10-Q financials
    "management_tone": 0,        # -2 to +2: MD&A sentiment shift
    "risk_factor_change": 0,     # -2 to +2: new risks vs resolved risks
    "insider_activity": 0,       # -2 to +2: net insider buying/selling
    "institutional_flow": 0,     # -2 to +2: 13F position changes
    "event_catalyst": 0,         # -2 to +2: recent 8-K impact
}
# Total range: -12 to +12
# > +6: strong fundamental bullish
# +2 to +6: mild bullish
# -2 to +2: neutral
# < -2: fundamental caution

Output Format

## SEC Filing Analysis — [Ticker]

### Filing Summary
- **Latest 10-K/10-Q**: [date], [period]
- **Recent 8-K events**: [list material events]
- **Insider activity (90d)**: [net buy/sell summary]

### Financial Health
- Revenue trend: [accelerating / stable / decelerating]
- Margin trajectory: [expanding / stable / compressing]
- FCF conversion: [strong / adequate / weak]
- Balance sheet: [net cash / moderate leverage / high leverage]

### MD&A Tone Shift
- vs prior filing: [more optimistic / unchanged / more cautious]
- Key language changes: [specific quotes or paraphrases]

### Risk Factor Changes
- New risks: [list any new risk factors added]
- Intensified risks: [list risks with stronger language]
- Resolved risks: [list removed risk factors]

### Insider & Institutional Signals
- Insider net activity: [cluster buy / neutral / cluster sell]
- Institutional positioning: [accumulation / stable / distribution]

### Composite Signal
| Dimension | Score (-2~+2) | Basis |
|-----------|---------------|-------|
| Financial health | +1 | Revenue accelerating, margins stable |
| Management tone | -1 | More cautious language in MD&A |
| ... | ... | ... |

### Investment Implication
- Direction: [bullish / bearish / neutral]
- Confidence: [high / medium / low]
- Key monitoring: [next earnings date, upcoming 8-K triggers]

Notes

  • EDGAR filings are public and free; no API key required (rate limit: 10 requests/second with User-Agent header)
  • 10-K/10-Q data is backward-looking; combine with forward guidance and analyst estimates for complete view
  • Insider transaction data has a 2-business-day reporting lag; real-time insider data requires paid services
  • 13F data is reported with a 45-day lag after quarter-end; positions may have already changed
  • This framework is for research purposes only and does not constitute investment advice
Repository
HKUDS/Vibe-Trading
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.