--- id: staskh/trading_skills/technical-analysis version: "ac3df5b9" license: MIT install: manual updated: 2026-07-20 --- # technical-analysis — Compute technical indicators including RSI, MACD, Bollinger Bands, and moving averages for single or multiple stocks. Get buy/sell signals, crossover detection, volatility metrics, and Sharpe ratios across configurable time periods. Optionally include earnings data and correlation analysis for portfolio diversification. Publisher: staskh · Stars: 299 · Updated: 2026-07-20 Install (manual): `git clone https://github.com/staskh/trading_skills` ## SKILL.md # 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. ```bash 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 ```bash # 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 ```bash 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 ```bash # 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. [View on SkillFed](https://skillfed.io/staskh/trading_skills/technical-analysis) · [View on GitHub](https://github.com/staskh/trading_skills)