factor · NLP

NLP factor — explained

NLP scores the tone of management's narrative in the 10-K MD&A section using a finance-specific dictionary. Negative-leaning language predicts negative forward returns; obscure or hedge-laden language predicts uncertainty. The factor reads what management is signalling, not what the spreadsheet says.

Where this comes from

Academic anchor

Loughran-McDonald 2011 — When Is a Liability Not a Liability? Textual Analysis, Dictionaries, and 10-Ks
Builds the canonical finance-specific sentiment dictionary, demonstrating that off-the-shelf Harvard-IV General Inquirer mis-labels words like "liability", "tax", or "vice" as negative when they are neutral in financial context. The LM dictionary correctly classifies ~85% of 10-K language. The negative word fraction in MD&A predicts forward returns — a one-standard-deviation increase in negative tone corresponds to ~2-3% annualised underperformance, robust to size, B/M, and momentum controls. Li 2008 separately established that 10-K readability (measured by Fog index) negatively correlates with future earnings persistence: complex, hard-to-read filings hide bad news.
Plain English

What it actually measures

When a CEO writes 'we faced significant headwinds in our consumer segment, characterised by inventory recalibration and competitive repositioning' instead of 'sales fell because customers switched to a cheaper competitor', the obfuscation is the signal. Loughran-McDonald counts how many such hedge words, negative-finance words, and uncertain qualifiers appear relative to the section length. Li adds the readability dimension — sentences over 25 words, paragraphs over 100 words, Latin-derived rare vocabulary. Both compress to one truth: when management writes opaquely, the next four quarters tend to disappoint.

No calibration constants

Math sketch

inputs   · 10-K Management Discussion & Analysis section text
         · Loughran-McDonald financial-domain sentiment dictionary
         · Gunning Fog readability index
ideas    · word-fraction tallies for negative, uncertain, litigious tone
         · readability score for sentence-density complexity
         · weighted blend, sign-flipped so positive tone reads bullish
output   · cross-sectional standardised score

Four anchors so a single category can't dominate. The four blend weights, the readability normalisation strategy, and any modern-phrase extensions are calibrated and proprietary. Public: the anchors (negative, uncertain, litigious tone fractions, plus readability), and the academic citations (Loughran-McDonald 2011, Li 2008).

Pipeline

How Framler implements it

The NLP cron runs Sunday 11:30 UTC. It pulls the latest 10-K from SEC EDGAR XBRL, extracts the Item 7 (MD&A) section via a regex over the embedded HTML, tokenises with the LM dictionaries (negative, positive, uncertain, litigious, modal, constraining), and scores. Coverage is currently about two-thirds of the universe (~65%) — foreign filers file no 10-K at all, and the regex fails on a long tail of non-standard formats, mostly older filings or REITs with irregular item-numbering. News sentiment fills much of the remaining gap. We're tuning the regex pass each month.

One coherent posterior

How it composes with Framler

NLP is the strongest companion factor for PEAD — together they decompose earnings news into the number (PEAD) and the narrative around the number (NLP; Tetlock 2007's mechanism — when management hedges around a beat, the beat is suspect). In the live confluence library NLP works as an amplifier rather than a standalone trigger: pessimistic filing tone strengthens the VALUE TRAP and QUALITY CRACK patterns when the accounting factors fire (Li 2008). Finally, NLP and Quality interact — high quality with deteriorating tone is an early warning the moat is cracking.

Honest limitations

When it fails

Three known failure modes. (1) Boilerplate inflation. Compliance counsel adds risk-factor language each year; the same company's 10-K has more LM-negative words in 2025 than in 2015 even if the business is unchanged. We partly mitigate via z-scoring across the universe, but absolute trend in negative tone has slowly drifted up. (2) Foreign filers. 20-F filings (used by ADRs) follow a different structure than 10-K, and our extractor's coverage is weaker there — pending fix. (3) Partial intra-year coverage. Earnings press releases (8-K Item 2.02) are scored quarterly and blended in, but that pass is scheduled over roughly the first 400 tickers of the universe, so about six stocks in ten carry annual-filing tone alone. Conference-call audio and 10-Q MD&A are not incorporated anywhere — nor is the Q&A half of an earnings call, which is where the unscripted tone lives.

Pro depth

Engineering integration

How NLP flows through the production engine
Sign convention
Bullish-when-high. Universal across all 13 factor families — a high NLP score reads as a bullish lean, low as bearish, 50 as neutral. The composite inherits the convention unchanged.
Standardisation
Cross-sectional z-score per scoring day across the 1,000+-ticker universe, then mapped to 0-100. Tickers without sufficient input data surface as null and the composite skip-and-renormalise path takes over (Asness-Frazzini-Pedersen 2014).
Refresh cadence
Recomputed daily via the universe-scoring cron (production runs 06:00 UTC on weekdays via Vercel + GitHub Actions). Factor-specific upstream data refresh is described in the implementation section above.
Composite entry
Enters the Bayesian composite with a regime-conditional weight calibrated weekly by the calibrate-weights cron against accumulated forward-return data. Per-regime weight vectors are proprietary; the architecture is in the math sketch above.
Diagnostic surface
Live structural invariants on /coherence exercise the math stack on every request (factor correlation matrix, BOCPD posterior, Mondrian bin coverage). Coverage and IC accumulate weekly via the accuracy-check cron; the sector-honesty panel on /track-record publishes per-cohort calibration tiers.
Hidden by design
The exact factor weight, regime-conditional multipliers, and any constant inside the math sketch marked «calibrated and proprietary» stay private — that's the engineering moat. Everything above architecture-level is published; everything below stays in the engine.
Read next

Related factors

PEADInsiderQuality

See NLP score on a real ticker

Every ticker page shows the per-factor decomposition. The NLP score is one of thirteen composing the 0–100 the composite score.

Try NVDA →Full methodologyMath coherence live
NLP factor explained | Framler