Post-earnings drift (equities)

LLM same-day-news-tone PEAD overlay

Resolved

The question

Is the post-earnings-announcement-drift edge durable and broad-based across the population, or driven by a handful of outlier names? The core go-live question for the equities sleeve.

How it was tested

The hypothesis, its exact trigger, the outcome it predicts, and the pass/fail bar were written down and cryptographically hash-locked before any data was tested, then held through a mandatory cooling-off period. The backfill ran exactly once against those frozen parameters — no re-tuning, no curve-fitting — using adversarial statistics (stationary-bootstrap confidence intervals, multiple-testing correction, purged cross-validation with an embargo, and walk-forward out-of-sample splits). The specific trigger thresholds are proprietary and omitted here.

The outcome

RAN 2026-06-30 (attended) → DATA-LIMITED / INCONCLUSIVE — NOT a NOISE result. The 5yr historical news-tone corpus cannot be assembled: FMP `/stable/news/stock` serves ONLY CURRENT news on the current subscription tier — a from/to historical query returns the FMP error 'Special Endpoint: this value set for from is not available under your current subscription'. This is exactly the load-bearing unknown the pre-reg flagged ('HISTORICAL per-event news depth is the load-bearing unknown; live-forward carries the verdict if thin'). No LLM-scoring run was attempted on a forward-only corpus (would burn tokens for no historical signal); sentimentDelta STAYS null, zero trade-path. Forward path (Rule #10-clean, data-access decision): the LIVE-FORWARD shadow (the pre-reg's designated validator) accrues a hindsight-free corpus going forward, OR acquire historical news (FMP tier upgrade / alt vendor) for a true historical backfill = a NEW data-acquisition decision, not a retune of this construct. `data/backfill/news_tone_pead_2026-06-30.json`. Run-once honored. — LOCKED 2026-06-22 (operator 'Yes to both'). The DATA-AVAILABLE sibling of transcript-tone (f444d917, transcript-BLOCKED). DISTINCT construct (news ≠ earnings-call transcript, different information set + data path) → Rule #10 compliant, NOT an iterate-retry. FMP `/stable/news/stock` confirmed LIVE (--validate-data: 5/5 tickers, 20 articles each). Same drift question (does textual tone add INCREMENTAL IC over the SUE?), same LLM-hindsight mitigations (redaction + outcome-forbidden frozen prompt + shuffled negative control + INFO_GRADE backfill cap; live-forward = the validator) + the same charter (sentimentDelta stays null, engine never calls the LLM). **HONEST PRIOR INFO_GRADE-leaning-NOISE — WEAKER than transcript-tone**: same-day NEWS often just RESTATES the public surprise the SUE already captures, so the no-subsumption-vs-SUE bar is harder than for the call's management language. LOAD-BEARING NEW caveat: HISTORICAL per-event news depth over the 5yr corpus is unverified (--validate-data probes per-event on run-day; live-forward carries the verdict if thin). Reuses pead-nlp-overlay primitives + `lib/tepper/signals/news-tone-overlay.ts` (frozen news prompt) + the research LLM provider (local Ollama when configured → pinned cutoff mitigates hindsight). Harness scripts/backfill-news-tone-pead.ts gated. DO-NOT-RUN before 2026-06-28.

The backfill ran and concluded — the hypothesis did not fail, but the result is informational rather than a clean strategy-grade pass. See the outcome below.

Pre-registration record

Registered
2026-06-22
Pre-registered
yes
SHA-256 hash
#a22432be…

The hash and timestamp are a contemporaneous, immutable record that the hypothesis and its success criteria were fixed before testing — not chosen with hindsight.