Skip to content

Paper revision 2.1: the control test was never exercised - #5

Merged
zariffromlatif merged 1 commit into
mainfrom
claude/laughing-gates-gmc4fm
Oct 16, 2026
Merged

zariffromlatif merged 1 commit into
mainfrom
claude/laughing-gates-gmc4fm

Conversation

@zariffromlatif

Copy link
Copy Markdown
Owner

Summary

What changed?

A pre-publication check found that no observation in any of the three frozen corpora maps to a control name (MSFT in SVB and FTX, DTE in Wirecard). The fixture builder did query GDELT for each control, and GDELT returned articles that matched in their body text. But the pipeline scores headlines only, and none of those headlines names the control. So "0 false positives on 3 controls" was vacuous. Text in Revisions 1 and 2 describing control headlines ("MSFT appeared in benign product coverage", "DTE appeared … in mundane telecom coverage") was false.

  • Paper (Revision 2.1)
    • New §4.6 "The control test was not exercised".
    • Abstract, §1, §2.4, the §4.1 table, §5.2 and §7 corrected.
    • The false-positive confidence interval removed.
    • Related work (§1.1) and a References section added: Tetlock 2007; Tetlock, Saar-Tsechansky & Macskassy 2008; Loughran & McDonald 2011; Fama, Fisher, Jensen & Roll 1969; Clopper & Pearson 1934; Leetaru & Schrodt 2013.
    • Keywords, JEL codes and an "independent researcher" affiliation added.
    • Disclosed that the §4.5 price-reaction pattern was written after reading the headlines.
    • The anchor-removal robustness claim is now verified and stated for all three events.
    • Future work adds real controls and the Loughran–McDonald word list.
  • market_reaction_check.py: new control_coverage(), printed with the results; corrected the code comment that claimed the pattern was fixed in advance.
  • run_backtest.py: prints controls matched in corpus: N next to the false-positive count. The metrics files are unchanged.
  • Test: test_controls_never_appear_in_the_frozen_corpora pins zero coverage, so the paper must be updated if a fixture is ever rebuilt.
  • README, site, social card, demo GIF, stress-test deck: no longer claim "0 / 3 controls flagged". False alarms are marked untested, with a pointer to the forward test.

Why was this needed? The paper is about to be posted on SSRN under the author's name. A false claim about specificity would undermine the paper's main credibility argument, which is honest reporting.

Validation

  • Relevant tests pass (pytest -q aetherius/tests): 122 passed.
  • SVB-2023 backtest still passes: metrics for all three events are bit-identical, and simulations/validation/ is unchanged.
  • Lint passes (ruff check aetherius simulations scripts).
  • Docs updated: paper (MD, HTML and a re-rendered PDF), README, site.

Scope

  • Ingestion, entity mapping, scoring, or signals (aetherius/app/services/...)
  • Delivery / templates / review workflow (deck track-record text and table)
  • Backtests (simulations/backtest/...): diagnostics output only
  • Docs / governance / landing page only

Safety Checklist

  • No secrets committed (.env, API keys, tokens)
  • No generated artifacts committed (simulations/artifacts/, runtime logs)
  • No client-specific / private data included
  • Marketing / README claims still match implementation reality: this PR exists to make them match.

Notes for Reviewers

  • The six references were written from memory. Check each against its journal page before posting the paper on SSRN.
  • No migration or compatibility impact.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HTqzkhjyuhZZun8Az1tW6C


Generated by Claude Code

A pre-publication check found that no observation in any of the three
frozen corpora maps to a control name (MSFT, DTE): GDELT returned body
matches, but the pipeline scores headlines only and none names the
control. The '0 false positives on 3 controls' result was therefore
vacuous, and earlier text describing control headlines was wrong.

- Paper: new section 4.6, corrected abstract, results table, sections
  2.4 and 5.2; adds related work and references, keywords, JEL codes and
  affiliation; discloses that the 4.5 price-reaction pattern was written
  after reading the headlines; anchor-removal robustness now stated for
  all three events (verified).
- market_reaction_check.py: control_coverage(); corrected comment.
- run_backtest.py prints control coverage next to the false-positive
  count (metrics files unchanged).
- Test pins zero control coverage so the paper must change if fixtures do.
- README, site, social card, demo GIF and deck no longer claim 0/3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTqzkhjyuhZZun8Az1tW6C
Copilot AI balanced review requested due to automatic review settings October 16, 2026 15:47

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@zariffromlatif
zariffromlatif merged commit f7b011f into main Oct 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants