Technical Analysis
Compute technical indicators using pandas-ta. Supports multi-symbol analysis and earnings data.
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/technicals.py SYMBOL [--period PERIOD] [--indicators INDICATORS] [--earnings]
Arguments
SYMBOL - Ticker symbol or comma-separated list (e.g., AAPL or AAPL,MSFT,GOOGL)
--period - Historical period: 1mo, 3mo, 6mo, 1y (default: 3mo)
--indicators - Comma-separated list: rsi,macd,bb,sma,ema,atr,adx (default: all)
--earnings - Include earnings data (upcoming date + history)
Output
Single symbol returns:
price - Current price and recent change
indicators - Computed values for each indicator
risk_metrics - Volatility (annualized %) and Sharpe ratio
signals - Buy/sell signals based on indicator levels
earnings - Upcoming date and EPS history (if --earnings)
Multiple symbols returns:
results - Array of individual symbol results
Crossovers
indicators.macd.crossover - Most recent MACD line/signal crossover, or null:
direction - "up" (MACD crossed above signal = bullish) or "down" (crossed below = bearish)
days_ago - Trading bars since the crossover (0 = happened on the most recent bar)
indicators.ema.crossover - Most recent EMA9/EMA21 crossover (same shape; null if none).
indicators.ema also reports ema9 and ema21 alongside ema12/ema26.
Interpretation
- RSI > 70 = overbought, RSI < 30 = oversold
- MACD crossover = momentum shift;
crossover.days_ago of 0-5 = fresh signal
- EMA9/21 crossover confirms short-term momentum; MACD typically leads, EMA confirms
- Price near Bollinger Band = potential reversal
- Golden cross (SMA20 > SMA50) = bullish
- ADX > 25 = strong trend
- Sharpe ratio > 1 = good risk-adjusted returns, > 2 = excellent
- Volatility (annualized) = standard deviation of returns scaled to annual basis
Examples
# Single symbol with all indicators
uv run python scripts/technicals.py AAPL
# Multiple symbols
uv run python scripts/technicals.py AAPL,MSFT,GOOGL
# With earnings data
uv run python scripts/technicals.py NVDA --earnings
# Specific indicators only
uv run python scripts/technicals.py TSLA --indicators rsi,macd
Correlation Analysis
Compute price correlation matrix between multiple symbols for diversification analysis.
Instructions
uv run python scripts/correlation.py SYMBOLS [--period PERIOD]
Arguments
SYMBOLS - Comma-separated ticker symbols (minimum 2)
--period - Historical period: 1mo, 3mo, 6mo, 1y (default: 3mo)
Output
symbols - List of symbols analyzed
period - Time period used
correlation_matrix - Nested dict with correlation values between all pairs
Interpretation
- Correlation near 1.0 = highly correlated (move together)
- Correlation near -1.0 = negatively correlated (move opposite)
- Correlation near 0 = uncorrelated (independent movement)
- For diversification, prefer low/negative correlations
Examples
# Portfolio correlation
uv run python scripts/correlation.py AAPL,MSFT,GOOGL,AMZN
# Sector comparison
uv run python scripts/correlation.py XLF,XLK,XLE,XLV --period 6mo
# Check hedge effectiveness
uv run python scripts/correlation.py SPY,GLD,TLT
Dependencies
numpy
pandas
pandas-ta
yfinance
Timezone
All timestamps and time-based calculations must use the America/New_York timezone. All JSON output must include generated_at (NY time string) and data_delay fields.
1---2name: technical-analysis3description: Compute technical indicators like RSI, MACD, Bollinger Bands, SMA, EMA for a stock. Use when user asks about technical analysis, indicators, RSI, MACD, moving averages, overbought/oversold, or chart analysis.4---56# Technical Analysis78Compute technical indicators using pandas-ta. Supports multi-symbol analysis and earnings data.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/technicals.py SYMBOL [--period PERIOD] [--indicators INDICATORS] [--earnings]16```1718## Arguments1920- `SYMBOL` - Ticker symbol or comma-separated list (e.g., `AAPL` or `AAPL,MSFT,GOOGL`)21- `--period` - Historical period: 1mo, 3mo, 6mo, 1y (default: 3mo)22- `--indicators` - Comma-separated list: rsi,macd,bb,sma,ema,atr,adx (default: all)23- `--earnings` - Include earnings data (upcoming date + history)2425## Output2627Single symbol returns:28- `price` - Current price and recent change29- `indicators` - Computed values for each indicator30- `risk_metrics` - Volatility (annualized %) and Sharpe ratio31- `signals` - Buy/sell signals based on indicator levels32- `earnings` - Upcoming date and EPS history (if `--earnings`)3334Multiple symbols returns:35- `results` - Array of individual symbol results3637### Crossovers3839- `indicators.macd.crossover` - Most recent MACD line/signal crossover, or `null`:40 - `direction` - `"up"` (MACD crossed above signal = bullish) or `"down"` (crossed below = bearish)41 - `days_ago` - Trading bars since the crossover (0 = happened on the most recent bar)42- `indicators.ema.crossover` - Most recent EMA9/EMA21 crossover (same shape; `null` if none).43 `indicators.ema` also reports `ema9` and `ema21` alongside `ema12`/`ema26`.4445## Interpretation4647- RSI > 70 = overbought, RSI < 30 = oversold48- MACD crossover = momentum shift; `crossover.days_ago` of 0-5 = fresh signal49- EMA9/21 crossover confirms short-term momentum; MACD typically leads, EMA confirms50- Price near Bollinger Band = potential reversal51- Golden cross (SMA20 > SMA50) = bullish52- ADX > 25 = strong trend53- Sharpe ratio > 1 = good risk-adjusted returns, > 2 = excellent54- Volatility (annualized) = standard deviation of returns scaled to annual basis5556## Examples5758```bash59# Single symbol with all indicators60uv run python scripts/technicals.py AAPL6162# Multiple symbols63uv run python scripts/technicals.py AAPL,MSFT,GOOGL6465# With earnings data66uv run python scripts/technicals.py NVDA --earnings6768# Specific indicators only69uv run python scripts/technicals.py TSLA --indicators rsi,macd70```7172---7374# Correlation Analysis7576Compute price correlation matrix between multiple symbols for diversification analysis.7778## Instructions7980```bash81uv run python scripts/correlation.py SYMBOLS [--period PERIOD]82```8384## Arguments8586- `SYMBOLS` - Comma-separated ticker symbols (minimum 2)87- `--period` - Historical period: 1mo, 3mo, 6mo, 1y (default: 3mo)8889## Output9091- `symbols` - List of symbols analyzed92- `period` - Time period used93- `correlation_matrix` - Nested dict with correlation values between all pairs9495## Interpretation9697- Correlation near 1.0 = highly correlated (move together)98- Correlation near -1.0 = negatively correlated (move opposite)99- Correlation near 0 = uncorrelated (independent movement)100- For diversification, prefer low/negative correlations101102## Examples103104```bash105# Portfolio correlation106uv run python scripts/correlation.py AAPL,MSFT,GOOGL,AMZN107108# Sector comparison109uv run python scripts/correlation.py XLF,XLK,XLE,XLV --period 6mo110111# Check hedge effectiveness112uv run python scripts/correlation.py SPY,GLD,TLT113```114115## Dependencies116117- `numpy`118- `pandas`119- `pandas-ta`120- `yfinance`121122123## Timezone124125All timestamps and time-based calculations must use the `America/New_York` timezone. All JSON output must include `generated_at` (NY time string) and `data_delay` fields.