Commit Graph

235 Commits

Author SHA1 Message Date
github-actions[bot] 1f92269fcb chore: update performance tracking 2026-04-06 2026-04-06 21:22:28 +00:00
github-actions[bot] 4935baa34c chore: daily discovery 2026-04-06 2026-04-06 21:22:12 +00:00
Youssef Aitousarrah b68a43ec0d feat(scanners): add minervini scanner to registry
minervini.py existed but was never committed. Without the file on the
remote, the __init__.py import added in the previous fix causes an
ImportError in CI.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 13:51:42 -07:00
github-actions[bot] 8706484c16 chore: update performance tracking 2026-04-06 2026-04-06 20:50:00 +00:00
Youssef Aitousarrah 32d89c3bfc fix(ci): restore daily discovery workflow
- Add permissions: contents: write so git push works (was failing with 403)
- Add continue-on-error: true on discovery step so partial output still commits
- Change all commit/tracking/position steps to if: always() so they run regardless of discovery outcome
- Use commit-then-pull-rebase-then-push pattern to handle branch divergence
- Fix minervini scanner missing from scanners/__init__.py (enabled in config but never loaded)
- Fix .gitignore: results/* + !results/discovery/ so CI run logs can be committed

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 13:46:21 -07:00
Youssef Aitousarrah 719a2d3f4e fix(scanners): rank by signal quality before limiting in 3 more scanners
Same issue as options_flow: early exit on candidate count discards strong
signals that happen to be later in iteration order.

insider_buying: Dict iteration order matched OpenInsider HTML scrape order,
not signal quality. Now scores by cluster buys + C-suite + dollar value,
then takes top N.

technical_breakout: Stopped at limit*2 in file order despite data already
being batch-downloaded (zero API cost to check all). Removed early exit,
scan full universe, sort by volume_multiple.

sector_rotation: Checked laggards in arbitrary dict order, spending API
calls on random tickers. Now sorts by most-negative 5d return first so
the strongest laggard candidates are checked before hitting the budget.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 13:46:21 -07:00
Youssef Aitousarrah 136fa47645 fix(options_flow): scan full universe before applying limit, rank by signal strength
Previously the scanner stopped as soon as self.limit candidates were found
from as_completed() futures. Since futures complete in non-deterministic
network-latency order, this was equivalent to random sampling — fast-to-
respond tickers won regardless of how strong their options signal was.

Fix: collect all candidates from the full universe, then sort by options_score
(unusual strike count weighted 1.5x for calls to favor bullish flow) before
applying the limit. The top-N strongest signals are now always returned.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 13:46:21 -07:00
Youssef Aitousarrah 61b731ac28 fix(filter): replace tqdm with logger in batch news functions to fix I/O error
tqdm writes to stderr immediately on __enter__, before any loop iteration.
In Streamlit's thread/subprocess context stderr can be a closed pipe, causing
'I/O operation on closed file' which _run_call catches and returns {} — so
the entire news enrichment step was silently skipped every run.

Replaced tqdm progress bars with logger.info() calls in:
- get_batch_stock_news_google() in openai.py
- get_batch_stock_news_openai() in openai.py
- Reddit DD parallel evaluation in reddit_api.py

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 13:46:21 -07:00
github-actions[bot] 21b33c6709 chore: update performance tracking 2026-04-06 2026-04-06 13:57:37 +00:00
github-actions[bot] 76b91fbccb chore: daily discovery 2026-04-06 2026-04-06 13:57:19 +00:00
github-actions[bot] 5749c8e33e chore: update performance tracking 2026-04-05 2026-04-05 13:39:10 +00:00
github-actions[bot] 7b2b4f7052 chore: daily discovery 2026-04-05 2026-04-05 13:38:54 +00:00
github-actions[bot] 42999857af chore: update performance tracking 2026-04-04 2026-04-04 13:37:06 +00:00
github-actions[bot] 1e06895946 chore: daily discovery 2026-04-04 2026-04-04 13:36:51 +00:00
github-actions[bot] a8ccb0e396 chore: update performance tracking 2026-04-03 2026-04-03 13:46:52 +00:00
github-actions[bot] d5cebd9dff chore: daily discovery 2026-04-03 2026-04-03 13:46:37 +00:00
github-actions[bot] fba5b91242 chore: update performance tracking 2026-04-02 2026-04-02 14:04:43 +00:00
github-actions[bot] a82199be5c chore: daily discovery 2026-04-02 2026-04-02 14:04:29 +00:00
github-actions[bot] 9edee768e9 chore: update performance tracking 2026-04-01 2026-04-01 14:13:16 +00:00
github-actions[bot] 28c5392fa3 chore: daily discovery 2026-04-01 2026-04-01 14:13:10 +00:00
github-actions[bot] f9ad043be0 chore: update performance tracking 2026-03-31 2026-03-31 14:10:53 +00:00
github-actions[bot] 23d1f3db99 chore: daily discovery 2026-03-31 2026-03-31 14:10:48 +00:00
github-actions[bot] d764cee16d chore: update performance tracking 2026-03-30 2026-03-30 14:08:52 +00:00
github-actions[bot] 33ab46f302 chore: daily discovery 2026-03-30 2026-03-30 14:08:46 +00:00
github-actions[bot] e737204ef8 chore: update performance tracking 2026-03-29 2026-03-29 13:37:26 +00:00
github-actions[bot] 3e02014c6c chore: daily discovery 2026-03-29 2026-03-29 13:37:08 +00:00
github-actions[bot] 85a5cf9e46 chore: update performance tracking 2026-03-28 2026-03-28 13:35:54 +00:00
github-actions[bot] 2f794608b1 chore: daily discovery 2026-03-28 2026-03-28 13:35:35 +00:00
github-actions[bot] 01019b3533 chore: update performance tracking 2026-03-27 2026-03-27 13:51:12 +00:00
github-actions[bot] e662a1f4dc chore: daily discovery 2026-03-27 2026-03-27 13:51:04 +00:00
github-actions[bot] 6328458f90 chore: update performance tracking 2026-03-26 2026-03-26 14:07:03 +00:00
github-actions[bot] 88efff970e chore: daily discovery 2026-03-26 2026-03-26 14:06:58 +00:00
github-actions[bot] 0a60b5d66c chore: update performance tracking 2026-03-25 2026-03-25 13:57:05 +00:00
github-actions[bot] dd982b91d2 chore: daily discovery 2026-03-25 2026-03-25 13:56:57 +00:00
github-actions[bot] bfd171e063 chore: update performance tracking 2026-03-24 2026-03-24 13:57:58 +00:00
github-actions[bot] 5d37c89eea chore: daily discovery 2026-03-24 2026-03-24 13:57:52 +00:00
github-actions[bot] 91a628c9d3 chore: update performance tracking 2026-03-23 2026-03-23 13:58:13 +00:00
github-actions[bot] 4399485ec7 chore: daily discovery 2026-03-23 2026-03-23 13:57:49 +00:00
github-actions[bot] eea54221ee chore: update performance tracking 2026-03-22 2026-03-22 13:31:32 +00:00
github-actions[bot] 218ac20f59 chore: daily discovery 2026-03-22 2026-03-22 13:31:12 +00:00
github-actions[bot] 3e96b58b0b chore: update performance tracking 2026-03-21 2026-03-21 13:30:20 +00:00
github-actions[bot] 06ff0b4d19 chore: daily discovery 2026-03-21 2026-03-21 13:29:50 +00:00
github-actions[bot] 4512a70339 chore: update performance tracking 2026-03-20 2026-03-20 13:48:18 +00:00
github-actions[bot] fbd8bbbd1a chore: daily discovery 2026-03-20 2026-03-20 13:47:43 +00:00
github-actions[bot] c8890761d2 chore: update performance tracking 2026-03-19 2026-03-19 13:57:11 +00:00
github-actions[bot] 9cc33256bc chore: daily discovery 2026-03-19 2026-03-19 13:56:36 +00:00
github-actions[bot] 39fdc47e2b chore: update performance tracking 2026-03-18 2026-03-18 14:01:39 +00:00
github-actions[bot] 52c4a519ac chore: daily discovery 2026-03-18 2026-03-18 14:01:31 +00:00
github-actions[bot] 3aca3174ab chore: update performance tracking 2026-03-17 2026-03-17 14:07:05 +00:00
github-actions[bot] 571a026146 chore: daily discovery 2026-03-17 2026-03-17 14:06:26 +00:00