Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
.claude/skills/staskh-technical-analysis/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | -10% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -13% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -42% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -15% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -15% | 0% |
Compute technical indicators using pandas-ta. Supports multi-symbol analysis and earnings data.
> Note: If uv is not installed or pyproject.toml is not found, replace uv run python with python in all commands below.
bashuv run python scripts/technicals.py SYMBOL [--period PERIOD] [--indicators INDICATORS] [--earnings]
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)Single symbol returns:
price - Current price and recent changeindicators - Computed values for each indicatorrisk_metrics - Volatility (annualized %) and Sharpe ratiosignals - Buy/sell signals based on indicator levelsearnings - Upcoming date and EPS history (if --earnings)Multiple symbols returns:
results - Array of individual symbol resultsindicators.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.
crossover.days_ago of 0-5 = fresh signalbash# 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
Compute price correlation matrix between multiple symbols for diversification analysis.
bashuv run python scripts/correlation.py SYMBOLS [--period PERIOD]
SYMBOLS - Comma-separated ticker symbols (minimum 2)--period - Historical period: 1mo, 3mo, 6mo, 1y (default: 3mo)symbols - List of symbols analyzedperiod - Time period usedcorrelation_matrix - Nested dict with correlation values between all pairsbash# 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
numpypandaspandas-tayfinanceAll 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.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 14,787 | 8,522 | -42% | 1 | 1 | 0% | 3,068 | 1,237 | -60% | 0 | 0 | — |
case-02 | fail→fail | 7,436 | 5,265 | -29% | 1 | 1 | 0% | 1,433 | 1,243 | -13% | 0 | 0 | — |
case-03 | fail→fail | 14,180 | 4,275 | -70% | 1 | 1 | 0% | 2,900 | 1,198 | -59% | 0 | 0 | — |
case-04 | pass→pass | 18,986 | 29,667 | +56% | 1 | 1 | 0% | 3,996 | 7,194 | +80% | 0 | 0 | — |
case-05 | pass→pass | 18,296 | 12,050 | -34% | 1 | 1 | 0% | 4,020 | 3,102 | -23% | 0 | 0 | — |
case-06 | pass→pass | 14,039 | 9,050 | -36% | 1 | 1 | 0% | 2,988 | 2,811 | -6% | 0 | 0 | — |
case-07 | fail→pass | 8,004 | 1,440 | -82% | 1 | 1 | 0% | 1,330 | 1,202 | -10% | 0 | 0 | — |
case-08 | fail→pass | 9,535 | 2,428 | -75% | 1 | 1 | 0% | 1,604 | 1,403 | -13% | 0 | 0 | — |
case-09 | fail→pass | 12,444 | 1,933 | -84% | 1 | 1 | 0% | 2,229 | 1,302 | -42% | 0 | 0 | — |
case-10 | fail→pass | 9,326 | 2,434 | -74% | 1 | 1 | 0% | 1,606 | 1,364 | -15% | 0 | 0 | — |
case-11 | fail→pass | 11,183 | 4,420 | -60% | 1 | 1 | 0% | 2,238 | 1,898 | -15% | 0 | 0 | — |
case-12 | fail→pass | 12,228 | 2,933 | -76% | 1 | 1 | 0% | 2,228 | 1,568 | -30% | 0 | 0 | — |
case-13 | pass→pass | 11,544 | 2,451 | -79% | 1 | 1 | 0% | 2,240 | 1,400 | -38% | 0 | 0 | — |
case-14 | pass→pass | 5,950 | 1,412 | -76% | 1 | 1 | 0% | 1,025 | 1,193 | +16% | 0 | 0 | — |
case-15 | fail→pass | 11,085 | 2,443 | -78% | 1 | 1 | 0% | 1,693 | 1,343 | -21% | 0 | 0 | — |
case-16 | pass→pass | 9,702 | 2,314 | -76% | 1 | 1 | 0% | 1,349 | 1,423 | +5% | 0 | 0 | — |
case-17 | pass→pass | 7,268 | 4,408 | -39% | 1 | 1 | 0% | 1,153 | 1,758 | +52% | 0 | 0 | — |
case-18 | fail→pass | 4,171 | 1,551 | -63% | 1 | 1 | 0% | 686 | 1,208 | +76% | 0 | 0 | — |
case-19 | pass→pass | 4,731 | 3,001 | -37% | 1 | 1 | 0% | 758 | 1,436 | +89% | 0 | 0 | — |
case-20 | fail→pass | 5,639 | 1,351 | -76% | 1 | 1 | 0% | 785 | 1,148 | +46% | 0 | 0 | — |
case-21 | fail→pass | 3,369 | 1,266 | -62% | 1 | 1 | 0% | 475 | 1,182 | +149% | 0 | 0 | — |
case-22 | fail→pass | 7,156 | 1,331 | -81% | 1 | 1 | 0% | 972 | 1,199 | +23% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +50 percentage points is the difference between those two pass rates over the 19 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.