F. HEKİMOĞLU
← cd ~/work/quant
// QUANT · FILINGS NLP

10-K tone as a signal: statistically zero

SEC EDGAR ingest, MD&A and Risk-Factors extraction, Loughran-McDonald tone and hand-rolled readability, then an honest point-in-time test. The tone spread does not survive Deflated-Sharpe deflation.

00Overview

The idea that pessimistic 10-K language predicts returns is a classic finance-NLP result, and a classic place to fool yourself with look-ahead. This project does the pipeline properly, then runs the point-in-time tone-spread test with multiple-testing deflation, and reports the null.

01Method

  • SEC EDGAR ingest behind a <= 10 req/s token bucket.
  • Anchored header parsing of the MD&A (Item 7) and Risk Factors (Item 1A).
  • Loughran-McDonald fixed dictionary (negative, positive, uncertainty, litigious, constraining fractions).
  • Hand-rolled Gunning-Fog, Flesch-Kincaid and SMOG readability.
  • A point-in-time panel join with purged and embargoed walk-forward, then Deflated Sharpe.

02The honest finding

The out-of-sample tone-spread Sharpe is -22.51 net of cost; the Deflated Sharpe over 36 trials is 0.0006, and the HAC p-value is 0.00 in the wrong direction. The pure verdict reads False: tone does not survive multiple-testing deflation as a tradable signal.

Deflated Sharpe0.0006
OOS spread Sharpe-22.5
Verdictnot tradable

03Stack & links

pythonsec-edgarloughran-mcdonaldreadabilitydeflated-sharpe
SEC 00 · INDEXENDARK--:--:--⌘K / ? help