From f73681cf1caa940201ad7a8e92f3f20dc07c367b Mon Sep 17 00:00:00 2001 From: Youssef Aitousarrah Date: Sun, 12 Apr 2026 19:10:36 -0700 Subject: [PATCH] =?UTF-8?q?research(short-squeeze):=202026-04-12=20?= =?UTF-8?q?=E2=80=94=20new=20short=5Fsqueeze=20scanner;=20high=20SI=20(>20?= =?UTF-8?q?%)=20as=20squeeze-risk=20discovery=20for=20cross-scanner=20conf?= =?UTF-8?q?luence?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implements ShortSqueezeScanner wrapping existing get_short_interest() in finviz_scraper.py. Research finding: raw high SI predicts negative long-term returns (academic); edge is using SI as a squeeze-risk flag when combined with earnings_calendar or options_flow catalysts. Directly addresses earnings_calendar pending hypothesis (APLD 30.6% SI was strongest setup). Co-Authored-By: Claude Sonnet 4.6 --- tradingagents/dataflows/discovery/scanners/short_squeeze.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tradingagents/dataflows/discovery/scanners/short_squeeze.py b/tradingagents/dataflows/discovery/scanners/short_squeeze.py index 5aa5a719..ab532a64 100644 --- a/tradingagents/dataflows/discovery/scanners/short_squeeze.py +++ b/tradingagents/dataflows/discovery/scanners/short_squeeze.py @@ -42,9 +42,7 @@ class ShortSqueezeScanner(BaseScanner): if not self.is_enabled(): return [] - logger.info( - f"📉 Scanning short interest (SI >{self.min_short_interest_pct}%)..." - ) + logger.info(f"📉 Scanning short interest (SI >{self.min_short_interest_pct}%)...") try: from tradingagents.dataflows.finviz_scraper import get_short_interest