Skip to main content
Disclosure Alpha

Quantitative Foundation

Architecting reproducible scores from SEC disclosure language

Disclosure Alpha applies a deterministic pipeline to 10-K and 10-Q HTML: section extraction, text metrics, boolean risk flags, and year-over-year diffs, producing nine headline-weighted component scores (ten computed overall, including specificity_quality_score) and an overall disclosure risk score (0–100). Default scoring model: deterministic_scoring_v2. No LLM required. Same engine across CLI, Python SDK, HTTP API, and MCP.

Risk Factor Analysis

Measures language signals in Item 1A and related risk disclosures. Higher component scores (0–100) indicate more disclosure risk or deterioration in that dimension.

Language Signals

  • · risk_factor_intensity_score: Item 1A tone & volatility
  • · boilerplate_risk_score: vague, templated risk language
  • · legal_regulatory_risk_score: litigation & regulatory tone
  • · tone_negativity_score: cross-section negative tone

Change & Event Signals

  • · disclosure_change_score: YoY lexical & semantic diffs
  • · event_severity_score: material event severity (diff-only)
  • · liquidity_stress_score: covenant & liquidity stress language
  • · internal_controls_risk_score: ICFR weakness signals

MD&A Parsing

Extracts Management Discussion & Analysis sections from 10-K and 10-Q filings and computes mdna_uncertainty_score from uncertainty, demand stress, and forward-looking language patterns.

Section taxonomy →

Component Weighting

Nine weighted components combine into overall_disclosure_risk_score. When components are missing (null), weights renormalize over present components only. specificity_quality_score is also returned but excluded from headline weights (higher = more specific language).

overall_disclosure_risk_score = Σ (weighti × componenti)

adjusted by score_coverage_ratio when sections are missing

Understanding scores →

Headline component weights (deterministic_scoring_v2)

VariableDescriptionDefault Value
risk_factor_intensity_scoreRisk-factor tone & volatility20%
boilerplate_risk_scoreBoilerplate & vague risk language10%
tone_negativity_scoreCross-section negative tone5%
legal_regulatory_risk_scoreLegal & regulatory risk language10%
mdna_uncertainty_scoreMD&A uncertainty & demand stress15%
liquidity_stress_scoreLiquidity & covenant stress10%
disclosure_change_scoreYear-over-year disclosure change15%
event_severity_scoreMaterial event severity5%
internal_controls_risk_scoreInternal controls weakness signals5%

Text Extraction Pipeline

One deterministic pipeline shared across all integration surfaces. Given the same input HTML and version strings, scores are fully reproducible.

Parse HTML Extract Sections Text Metrics Diff vs Prior Score

Model Parameters

Every score response includes artifact version strings for audit and reproduction.

VariableDescriptionDefault Value
parser_versionSection extractor from filing HTMLsection_extractor_v1
metrics_engine_versionDeterministic text metrics enginetext_metrics_v4
scoring_model_versionComponent weighting & aggregation (default)deterministic_scoring_v2
dictionary_versionBuilt-in word lists & phrase dictionariesbuilt_in_dictionaries_v3

Scoring Components

VariableDescriptionDefault Value
risk_factor_intensity_scoreRisk-factor tone & volatility0–100
boilerplate_risk_scoreBoilerplate & vague risk language0–100
tone_negativity_scoreCross-section negative tone0–100
legal_regulatory_risk_scoreLegal & regulatory risk language0–100
mdna_uncertainty_scoreMD&A uncertainty & demand stress0–100
liquidity_stress_scoreLiquidity & covenant stress0–100
disclosure_change_scoreYear-over-year disclosure change0–100
event_severity_scoreMaterial event severity0–100
internal_controls_risk_scoreInternal controls weakness signals0–100

Reproduction scripts and corpus layout: data/validation/ on GitHub →

Research & Validation

Validated on a fixed S&P 500 corpus using the same deterministic engine (deterministic_scoring_v2) as the open-source product. Corpus scoring used Item 1A risk-factor text.

S&P 500 FY2025 score distribution

Each dot is one sampled firm (20 per quintile, 100 total) on the 0–100 overall disclosure risk scale.

Corpus
478 S&P 500 FY2025 Item 1A extractions (universe n=503)
Specificity construct validity
Spearman ρ ≈ 0.87 vs NER entity density (n=478)
Boilerplate construct validity
Spearman ρ ≈ 0.92 vs ls_boilerplate_word_ratio on boilerplate_combined_ratio (text_metrics_v4, n=478); phrase-only v3 was ≈0.74
Post-filing volatility association
Q5/Q1 ≈ 1.15 on n=435 cohort (90-day realized vol)

Validation used Item 1A text for corpus scoring, not the full multi-section matrix. Construct checks (n=478, per-section metrics on Item 1A) and the post-filing volatility association (n=435, overall_disclosure_risk_score) use different cohorts — see Evidence and validation ↗.

  • Not investment advice or a trading signal
  • Not a substitute for reading the filing
  • Construct checks (n=478, Item 1A metrics) and vol association (n=435, overall_disclosure_risk_score) use different cohorts
  • Boilerplate validation correlates with an LS-style proxy — not a full replication of the Lang & Stice-Lawrence paper measure
  • Earnings-surprise prediction is not claimed
  • deterministic_scoring_v1 and v2 headline scales are not directly comparable

Glossary · Why deterministic scoring · Evidence and validation on ReadTheDocs ↗ · Research foundation ↗

Ready to install and score your first filing?

Full methodology on ReadTheDocs ↗