Temporal Leakage in Financial News NLP: A Multi-Architecture Audit with a Regime-Specific M&A Signal
Organizations: Predictive Labs Ltd · University of Oxford · Imperial College London · Independent Researcher
Abstract
Financial-news direction prediction has become a popular NLP benchmark, yet reported gains depend critically on whether the train-test split is chronological or random, i.e., on temporal leakage. We audit this dependence on a 49,799-article corpus across 16 feature-model combinations spanning TF-IDF, MiniLM, FinBERT, and fine-tuned RoBERTa-large / DeBERTa-v3-large, plus separate zero/few-shot and LoRA probes of Llama-3 and Qwen2.5 LLMs: random splits inflate MCC by to , tracking model capacity and feature richness, and end-to-end FinBERT fine-tuning re-amplifies rather than closes the gap (size-matched ratio ). Conditioning on event type, mergers and acquisitions (M&A) is the only audited category with a positive locked-test signal under near-temporal chronological evaluation (TF-IDF MCC train-only, under trainval refit; 10,000-permutation ); the signal does not transfer to FNSPID's 2009-2020 U.S. corpus, localising the headline to our 2024-2025 European-tilted M&A semantics rather than a universal predictor. Three independent role labellers converge on acquirer-tagged articles as the signal locus, a power-limited qualitative convergence rather than a hypothesis-tested asymmetry. Chronological splitting plays for financial NLP the role characteristics-purging plays for asset pricing: it strips the predictable, stale component of news and leaves a residual that is small, event-localized, and lexically shallow. We advocate leakage audits as a required disclosure for financial-NLP benchmarks.
Figures & tables
| Statistic | Value |
|---|---|
| Total articles | 56,409 |
| Date range | 2020-05–2025-08 |
| Articles from 2025 | 81% |
| Exchanges covered | 64 |
| Event types | 203 |
| After neutral removal | 49,799 |
| Features | Model | Random MCC ‡ | Temporal MCC | Ratio |
| TF-IDF title | LR | |||
| TF-IDF title | RF | |||
| TF-IDF title | GB | |||
| TF-IDF title+content | LR | |||
| TF-IDF title+content | RF | |||
| TF-IDF title+content | GB |
| Model | Random | Temporal | Ratio |
|---|---|---|---|
| TF-IDF title LR | |||
| TF-IDF title RF | |||
| TF-IDF title GB |
Appendix figures & tables45 assets
Supplementary material from the paper’s appendix.
Appendix
| max_f | sub | min_df | ngram | val MCC | ||
|---|---|---|---|---|---|---|
| 1 | 100 | 5.0 | F | 2 | (1,1) | 0.228 |
| 2 | 50 | 5.0 | F | 2 | (1,3) | 0.222 |
| 3 | 50 | 5.0 | F | 1 | (1,3) | 0.222 |
| 4 | 50 | 5.0 | T | 2 | (1,2) | 0.221 |
| 5 | 50 | 5.0 | F | 2 | (1,2) | 0.218 |
| 6 | 100 | 5.0 | F | 1 | (1,1) | 0.218 |
| Quantity | Headline | Extended |
|---|---|---|
| (Jun–Aug 2025) | (Mar–Aug 2025) | |
| Test pred-UP rate | ||
| Test label-UP rate | ||
| Test MCC |
| Month | MCC | pred-UP | label-UP | |
|---|---|---|---|---|
| 2025-03 | ||||
| 2025-04 | ||||
| 2025-05 | ||||
| 2025-06 | ||||
| 2025-07 | ||||
| 2025-08 |
| Protocol | MCC | ||
|---|---|---|---|
| Train-only locked test ( headline ; § 7.2 ) | |||
| Train val refit locked test (deployment-style; App. H.1 ) | |||
| Extended-window 6-month (App. B.3 ) |
| Bucket | MCC | True UP | |
|---|---|---|---|
| Head ( train articles) | 42 | ||
| Torso ( – train articles) | 128 | ||
| Tail-seen ( – train articles) | 180 | ||
| Unseen at train time | 436 |
| Variant | Locked-test MCC |
|---|---|
| Baseline (no removal) | |
| Top-5 tokens removed | |
| Top-10 tokens removed | |
| Top-20 tokens removed | |
| Top-40 tokens removed |
| Setup | / | MCC |
|---|---|---|
| Cross-year (train 2020, test 2021) | / | |
| Within-2021 random (mean of 5 seeds) | / |
| Variant | Locked-test MCC |
|---|---|
| Original titles | |
| ORG-tokens [ORG] | |
| (masked baseline) |
| Threshold rule | Test MCC | Pred-UP rate |
|---|---|---|
| Default ( ) | ||
| Val-optimal ( ) | ||
| (val-optimal default) | — |
| Month | MCC | True UP | Pred UP | |
|---|---|---|---|---|
| 2025-06 | ||||
| 2025-07 | ||||
| 2025-08 | ||||
| Pooled |
| Condition | Test MCC | Pred-UP rate |
|---|---|---|
| Original | ||
| ORG masked | ||
| ORG PERSON masked | ||
| Full mask (six entity types) | ||
| ORG-mask original | — | |
| full-mask original | — |
| Publisher bucket | # pubs | Test MCC | |
|---|---|---|---|
| Mid ( – train articles) | |||
| Tail ( train articles) | |||
| Unseen at train time |
| Split | Test MCC (mean std) | Test |
| Temporal | 17,279 | |
| Random (70/15/15) | 7,470 | |
| Random (size-matched 17,279) ♭ | 17,279 | |
| Random 70/15/15 / Temporal ratio ( unequal ) | ||
| Random / Temporal ratio ( matched ) | ||
| Model | Seeds | MCC mean std | Range |
|---|---|---|---|
| FinBERT-tone | 5 | ||
| DeBERTa-v3-large balanced | 5 | ||
| Multi-task FinBERT | 3 | ||
| TF-IDF specialist (1 cell) | 1 | — |
| Model (5 seeds unless noted) | MCC | Wall |
|---|---|---|
| TF-IDF LR specialist (1 seed) | s | |
| FinBERT-tone LoRA (v2) | 90s | |
| FinBERT-tone full SFT (v4) | 22s | |
| DeBERTa-v3-large bal. (v3) | 113s | |
| DeBERTa-v3-large bal. (v4) | 114s | |
| pooled 10-seed | — |
| Internal ID | Public API | Snapshot | Access date | Pipe |
|---|---|---|---|---|
| Claude Sonnet 4.5 | claude-sonnet-4.5 | 2026-04-29 | 2026-05-08 | v8 |
| Claude Opus 4.7 | claude-opus-4.7 (TBD) | 2026-05-15 | 2026-05-16 | v8 |
| GPT-5.4 | gpt-5.4 (TBD) | 2026-04-17 | 2026-05-09 | v8 |
| Qwen2.5-7B | Qwen/Qwen2.5-7B-Instruct | 2024-09-19 | 2026-05-12 | v9 |
| Llama-3-8B | meta-llama/Meta-Llama-3-8B-Instruct | 2024-04-18 | 2026-05-12 | v9 |
| Setup | Prompt | MCC | |
| Claude Sonnet 4.5, global sample | |||
| single | title-only | 500 | 0.077 |
| single | title+event | 476 | 0.026 |
| single | title+content | 475 | 0.051 |
| single | CoT | 500 | 0.055 |
| Sonnet/Opus/GPT consensus, global sample | |||
| Setup | Test MCC | Pred-UP rate |
|---|---|---|
| Llama-3-8B zero-shot | ||
| Llama-3-8B few-shot | ||
| Llama-3-8B few-shot | ||
| Llama-3-8B LoRA | ||
| Qwen2.5-7B zero-shot | ||
| Qwen2.5-7B few-shot |
| Subset | Test MCC | ||
|---|---|---|---|
| ACQUIRER specialist FinBERT | 113 | 125 | |
| TARGET specialist FinBERT | 35 | 85 |
| Model | Val MCC | Test MCC |
|---|---|---|
| TF-IDF LR (title) | ||
| TF-IDF num RF | ||
| MiniLM (frozen) LR | ||
| FinBERT [CLS] (frozen) LR | ||
| Multi-LLM consensus, title+event | — |
| Model | Val MCC |
|---|---|
| M&A text model (TF-IDF, paper HP) | |
| M&A metadata only (exchange) | |
| M&A metadata aggregate † |
| Cost | All-trade | Top-25%-conf | ||
| (bps/side) | Sharpe | Ret% | Sharpe | Ret% |
| 0 | — | |||
| 2 | — | |||
| 5 | — | |||
| 10 | — | |||
| 20 | — | |||
| Event | Val MCC | Test MCC | |
|---|---|---|---|
| Mergers & acquisitions | 786 | ||
| Earnings releases | 4138 | ||
| Financial results | 1815 | ||
| Changes in companys own shares | 1547 | ||
| Partnerships | 712 | ||
| Regulatory filings | 588 |
| Event | Train end | Test start | |||
|---|---|---|---|---|---|
| M&A | 2025-04-01 | 2025-06-01 | 731 | 369 | 786 |
| Clinical Study | 2025-04-01 | 2025-06-01 | 1,168 | 344 | 482 |
| Legal Issues | 2025-06-01 | 2025-07-15 | 121 | 34 | 1,017 |
| Earnings | 2025-04-01 | 2025-06-01 | 1,870 | 508 | 1,067 |
| Event | val-best HP | Chrono | Random (5s) | Ratio |
|---|---|---|---|---|
| M&A | mf 100 , | |||
| Clinical Study | mf 500 , | |||
| Legal Issues | mf 300 , | |||
| Earnings | mf 100 , |
| Event | MCC | bal-acc | perm | 95% CI | |
|---|---|---|---|---|---|
| M&A | 786 | ||||
| Clinical Study | 482 | ||||
| Legal Issues | 1,017 | ||||
| Earnings | 1,067 |
| Event | Month 1 | Month 2 | Month 3 |
|---|---|---|---|
| M&A | |||
| Clinical Study | |||
| Legal Issues | — | ||
| Earnings |
| Event | MCC | ROC-AUC | PR-AUC | Brier |
|---|---|---|---|---|
| M&A | ||||
| Clinical Study | ||||
| Legal Issues | ||||
| Earnings |
| Event | Baseline | ORG-masked | (base masked) |
|---|---|---|---|
| M&A | |||
| Clinical Study | |||
| Legal Issues | |||
| Earnings |
| Event | orig | mask ORG | mask ORG PER | mask ALL |
|---|---|---|---|---|
| M&A | ||||
| Clinical Study | ||||
| Legal Issues | ||||
| Earnings |
| Event | Default | Val-opt test MCC | |
|---|---|---|---|
| M&A | 731 | ||
| Clinical Study | 1,168 | ||
| Legal Issues | 121 | ||
| Earnings | 1,870 |
| Event | Pooled | Month 1 | Month 2 | Month 3 |
|---|---|---|---|---|
| M&A | ||||
| Clinical Study | ||||
| Legal Issues | — | |||
| Earnings |
| Event | Pooled MCC | Publisher buckets present |
|---|---|---|
| M&A | head, mid, tail, unseen | |
| Clinical Study | spans across buckets | |
| Legal Issues | articles from unseen publishers ( ) | |
| Earnings | unseen-publisher articles; spans across buckets |
| Model | M&A | CLN | LGL | ERN |
|---|---|---|---|---|
| FinBERT-tone (full SFT) | ||||
| DeBERTa-v3-large bal. | ||||
| XLM-R-large | — † | |||
| TF-IDF reference |
| LLM setting | M&A | CLN | LGL | ERN |
|---|---|---|---|---|
| Multi-seed (5 seeds , , top- ; mean std) | ||||
| Qwen-2.5-7B zero-shot | ||||
| Llama-3-8B zero-shot | ||||
| Qwen-2.5-7B CoT v2 strict § | ||||
| parse-fail rate (mean) | ||||
| Single-seed reference (seed=42, deterministic ) | ||||
| Protocol | MCC | |||
|---|---|---|---|---|
| A. proprietary proprietary (sanity) | 731 | 786 | ||
| B. proprietary FNSPID (cross) | 731 | 4,235 | ||
| C. FNSPID FNSPID (within) | 30,070 | 4,235 | ||
| D. FNSPID proprietary (reverse) | 30,070 | 786 | ||
| E. joint joint | 30,801 | 5,021 |
| Protocol | MCC (5-seed) | ||
|---|---|---|---|
| C. FNSPID FNSPID (within) | 30,070 | 4,235 | |
| B. proprietary FNSPID (forward) | 731 | 4,235 | |
| D. FNSPID proprietary (reverse) | 30,070 | 786 | |
| E. joint FNSPID (joint) | 30,801 | 4,235 | |
| E. joint proprietary (joint) | 30,801 | 786 |
Temporal Data Leakage
Temporal data leakage occurs when models use information unavailable at prediction time, making performance estimates and forecasts misleading.
See all 35 papers