Bullish Scanner
Scans symbols for bullish trends and ranks them by composite score.
Instructions
Note: If uv is not installed or pyproject.toml is not found, replace uv run python with python in all commands below.
uv run python scripts/scan.py SYMBOLS [--top N] [--period PERIOD]
Arguments
SYMBOLS - Comma-separated ticker symbols (e.g., AAPL,MSFT,GOOGL,NVDA)
--top - Number of top results to return (default: 30)
--period - Historical period for analysis: 1mo, 3mo, 6mo (default: 3mo)
Scoring System (max ~8 points)
| Indicator |
Condition |
Points |
| SMA20 |
Price > SMA20 |
+1.0 |
| SMA50 |
Price > SMA50 |
+1.0 |
| RSI |
50-70 (bullish) |
+1.0 |
|
30-50 (neutral) |
+0.5 |
|
<30 (oversold) |
+0.25 |
| MACD |
MACD > Signal |
+1.0 |
|
Histogram rising |
+0.5 |
| ADX |
>25 with +DI > -DI |
+1.5 |
|
+DI > -DI only |
+0.5 |
| Momentum |
3mo return / 20 |
-1 to +2 |
Output
Returns JSON with:
scan_date - Timestamp of scan
symbols_scanned - Total symbols analyzed
results - Array sorted by score (highest first):
symbol, score, price
next_earnings, earnings_timing (BMO/AMC)
period_return_pct, pct_from_sma20, pct_from_sma50
rsi, macd, adx, dmp, dmn
signals - List of triggered conditions
Examples
# Scan a few symbols
uv run python scripts/scan.py AAPL,MSFT,GOOGL,NVDA,TSLA
# Get top 10 from larger list
uv run python scripts/scan.py AAPL,MSFT,GOOGL,NVDA,TSLA,AMD,AMZN,META --top 10
# Use 6-month lookback
uv run python scripts/scan.py AAPL,MSFT,GOOGL --period 6mo
Interpretation
- Score > 6: Strong bullish trend
- Score 4-6: Moderate bullish
- Score 2-4: Neutral/weak
- Score < 2: Bearish or no trend
Dependencies
pandas
pandas-ta
yfinance
1---2name: scanner-bullish3description: Scan stocks for bullish trends using technical indicators (SMA, RSI, MACD, ADX). Use when user asks to scan for bullish stocks, find trending stocks, or rank symbols by momentum.4---56# Bullish Scanner78Scans symbols for bullish trends and ranks them by composite score.910## Instructions1112> **Note:** If `uv` is not installed or `pyproject.toml` is not found, replace `uv run python` with `python` in all commands below.1314```bash15uv run python scripts/scan.py SYMBOLS [--top N] [--period PERIOD]16```1718## Arguments1920- `SYMBOLS` - Comma-separated ticker symbols (e.g., `AAPL,MSFT,GOOGL,NVDA`)21- `--top` - Number of top results to return (default: 30)22- `--period` - Historical period for analysis: 1mo, 3mo, 6mo (default: 3mo)2324## Scoring System (max ~8 points)2526| Indicator | Condition | Points |27|-----------|-----------|--------|28| SMA20 | Price > SMA20 | +1.0 |29| SMA50 | Price > SMA50 | +1.0 |30| RSI | 50-70 (bullish) | +1.0 |31| | 30-50 (neutral) | +0.5 |32| | <30 (oversold) | +0.25 |33| MACD | MACD > Signal | +1.0 |34| | Histogram rising | +0.5 |35| ADX | >25 with +DI > -DI | +1.5 |36| | +DI > -DI only | +0.5 |37| Momentum | 3mo return / 20 | -1 to +2 |3839## Output4041Returns JSON with:42- `scan_date` - Timestamp of scan43- `symbols_scanned` - Total symbols analyzed44- `results` - Array sorted by score (highest first):45 - `symbol`, `score`, `price`46 - `next_earnings`, `earnings_timing` (BMO/AMC)47 - `period_return_pct`, `pct_from_sma20`, `pct_from_sma50`48 - `rsi`, `macd`, `adx`, `dmp`, `dmn`49 - `signals` - List of triggered conditions5051## Examples5253```bash54# Scan a few symbols55uv run python scripts/scan.py AAPL,MSFT,GOOGL,NVDA,TSLA5657# Get top 10 from larger list58uv run python scripts/scan.py AAPL,MSFT,GOOGL,NVDA,TSLA,AMD,AMZN,META --top 105960# Use 6-month lookback61uv run python scripts/scan.py AAPL,MSFT,GOOGL --period 6mo62```6364## Interpretation6566- Score > 6: Strong bullish trend67- Score 4-6: Moderate bullish68- Score 2-4: Neutral/weak69- Score < 2: Bearish or no trend7071## Dependencies7273- `pandas`74- `pandas-ta`75- `yfinance`