Extracting Signal from Regulatory Disclosure
Quantified risk signals from regulatory text — ten component scores and YoY change detection, built for research and screening workflows.
$ pip install "disclosure-alpha" No LLM
Deterministic only
Apache-2.0
Open source
Core pipeline
What Disclosure Alpha Does
One deterministic pipeline across CLI, Python SDK, HTTP API, OpenBB Workspace, and MCP, with the same scores everywhere.
Parse SEC HTML
Extract Item 1A, MD&A, controls, and cybersecurity sections from 10-K and 10-Q HTML. 8-K event text via local --html or MCP Builder only.
section_id: item_1a_risk_factors
Score disclosure risk
Ten computed component scores (nine headline-weighted, 0–100) plus an overall disclosure risk score. Text metrics, boolean flags, and year-over-year diffs, fully reproducible.
overall_disclosure_risk_score:20.7
Detect year-over-year change
Lexical and semantic section diffs vs the prior comparable filing. disclosure_change_score and event_severity_score require a prior filing.
disclosure_change_score:31.6
One Pipeline, Five Surfaces
CLI, Python SDK, HTTP API, OpenBB Workspace, and MCP all call the same pipeline. No LLM. Fully reproducible given the same version strings and input text.
01 ingest
02 extract
03a metrics
03b diffs
04 aggregate
05 output
overall_disclosure_risk_scoresurfaces
Nine weighted components
Fixed weights in deterministic_scoring_v2
· ten computed scores (nine headline-weighted)
Item 1A · Risk factors
20%Risk-factor tone & volatility
risk_factor_intensity_score YoY section diff · diff
15%Year-over-year disclosure change
disclosure_change_score diff-only Item 7 · MD&A
15%MD&A uncertainty & demand stress
mdna_uncertainty_score Item 1A · Risk factors
10%Boilerplate & vague risk language
boilerplate_risk_score Score scale
Same bands as ticker scores
Quickstart
Score your first 10-K
Install · SEC User-Agent · score
$ pip install "disclosure-alpha"
$ export SEC_USER_AGENT="YourName [email protected]"
$ disclosure-alpha score --ticker AAPL --fiscal-year 2025 --form 10-K
{
"scores": {
"overall_disclosure_risk_score": 20.715309784688994,
"score_coverage_ratio": 1,
"confidence_score": 0.935,
"missing_components": [],
"components": {
"risk_factor_intensity_score": 9.2,
"boilerplate_risk_score": 63.60373333333333,
"tone_negativity_score": 1.07305,
"legal_regulatory_risk_score": 20.633990909090908,
"mdna_uncertainty_score": 20.859258333333333,
"liquidity_stress_score": 0.6560545454545454,
"disclosure_change_score": 31.55271,
"event_severity_score": 6.8,
"internal_controls_risk_score": 21.894373333333334
}
},
"versions": {
"parser_version": "section_extractor_v1",
"metrics_engine_version": "text_metrics_v4",
"scoring_model_version": "deterministic_scoring_v2",
"dictionary_version": "built_in_dictionaries_v3"
}
} AAPL FY2025 10-K precompute · same schema from CLI, SDK, and API
Example output
AAPL FY2025 10-K score breakdown
Precomputed from the validation corpus with deterministic_scoring_v2.
Same JSON schema from CLI, Python SDK, HTTP API, and MCP.
AAPL · FY2025 · 10-K
overall_disclosure_risk_score
20.7
Low concern · Q4 vs S&P 500 FY2025 (p62)
- score_coverage_ratio
- 1.00
- confidence_score
- 0.94
- components_present
- 9 / 9
Artifact versions
- parser_version
- section_extractor_v1
- metrics_engine_version
- text_metrics_v4
- scoring_model_version
- deterministic_scoring_v2
- dictionary_version
- built_in_dictionaries_v3
Nine headline-weighted components
Risk-factor tone & volatility
risk_factor_intensity_score · 20%
Boilerplate & vague risk language
boilerplate_risk_score · 10%
Cross-section negative tone
tone_negativity_score · 5%
Legal & regulatory risk language
legal_regulatory_risk_score · 10%
MD&A uncertainty & demand stress
mdna_uncertainty_score · 15%
Liquidity & covenant stress
liquidity_stress_score · 10%
Year-over-year disclosure change
disclosure_change_score · diff · 15%
Material event severity
event_severity_score · diff · 5%
Internal controls weakness signals
internal_controls_risk_score · 5%
specificity_quality_score
Returned but excluded from headline weights (higher = more specific)
Corpus median 19.4 · n=502 S&P 500 FY2025 10-K filings. See distribution →
Research-Backed, Honestly Scoped
Tested on real S&P 500 filings
Automated validation on FY2025 Item 1A risk-factor text from the S&P 500 universe — not a toy sample.
478
Firms after quality filters (universe n=503)
Specificity metric matches an independent check
Filings we rank as more company-specific tend to rank the same way on a separate NER-based check — strongest construct check in the current release.
ρ ≈ 0.87
Spearman rank correlation vs NER entity density (n=478)
Boilerplate metric matches an independent check
Filings we rank as more boilerplate-heavy tend to rank the same way on a Lang & Stice-Lawrence-style literature proxy.
ρ ≈ 0.92
Spearman rank correlation vs ls_boilerplate_word_ratio on boilerplate_combined_ratio (text_metrics_v4, n=478); phrase-only v3 ≈0.74
Higher risk scores linked to higher post-filing volatility
Top-quintile firms by disclosure risk had modestly higher 90-day realized volatility than the bottom quintile. Association only — not return prediction.
Q5/Q1 ≈ 1.15
Top vs bottom quintile, 90-day window, n=435
- 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
Start scoring filings in minutes
Python 3.11+. Install from PyPI. Set your SEC User-Agent. Score your first 10-K.