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> |
||
|---|---|---|
| .. | ||
| performance | ||
| scanners | ||
| __init__.py | ||
| analytics.py | ||
| candidate.py | ||
| common_utils.py | ||
| discovery_config.py | ||
| filter.py | ||
| ranker.py | ||
| scanner_registry.py | ||
| ticker_matcher.py | ||
| utils.py | ||