baggat236/uptrend-analyzer
Analyzes market breadth using Monty's Uptrend Ratio Dashboard data to diagnose the current market environment. Generates a 0-100 composite score from 5 components (breadth, sector participation, rotation, momentum, historical context). Use when asking about market breadth, uptrend ratios, or whether the market environment supports equity exposure. No API key required.
npx skills add https://github.com/BaggaT236/AI-Trading-Skills --skill uptrend-analyzer
Diagnose market breadth health using Monty's Uptrend Ratio Dashboard, which tracks ~2,800 US stocks across 11 sectors. Generates a 0-100 composite score (higher = healthier) with exposure guidance.
Unlike the Market Top Detector (API-based risk scorer), this skill uses free CSV data to assess "participation breadth" - whether the market's advance is broad or narrow.
English:
Japanese:
requests library (CSV parsing uses the stdlib csv/io modules)| Aspect | Uptrend Analyzer | Market Top Detector |
|--------|-----------------|-------------------|
| Score Direction | Higher = healthier | Higher = riskier |
| Data Source | Free GitHub CSV | FMP API (paid) |
| Focus | Breadth participation | Top formation risk |
| API Key | Not required | Required (FMP) |
| Methodology | Monty Uptrend Ratios | O'Neil/Minervini/Monty |
Run the analysis script (no API key needed):
python3 skills/uptrend-analyzer/scripts/uptrend_analyzer.py
The script will:
Present the generated Markdown report to the user, highlighting:
| # | Component | Weight | Key Signal |
|---|-----------|--------|------------|
| 1 | Market Breadth (Overall) | 30% | Ratio level + trend direction |
| 2 | Sector Participation | 25% | Uptrend sector count + ratio spread |
| 3 | Sector Rotation | 15% | Cyclical vs Defensive balance |
| 4 | Momentum | 20% | Slope direction + acceleration |
| 5 | Historical Context | 10% | Percentile rank in history |
| Score | Zone | Exposure Guidance |
|-------|------|-------------------|
| 80-100 | Strong Bull | Full Exposure (100%) |
| 60-79 | Bull | Normal Exposure (80-100%) |
| 40-59 | Neutral | Reduced Exposure (60-80%) |
| 20-39 | Cautious | Defensive (30-60%) |
| 0-19 | Bear | Capital Preservation (0-30%) |
Each scoring zone is further divided into sub-zones for finer-grained assessment:
| Score | Zone Detail | Color |
|-------|-------------|-------|
| 80-100 | Strong Bull | Green |
| 70-79 | Bull-Upper | Light Green |
| 60-69 | Bull-Lower | Light Green |
| 40-59 | Neutral | Yellow |
| 30-39 | Cautious-Upper | Orange |
| 20-29 | Cautious-Lower | Orange |
| 0-19 | Bear | Red |
Active warnings trigger exposure penalties that tighten guidance even when the composite score is high:
| Warning | Condition | Penalty |
|---------|-----------|---------|
| Late Cycle | Commodity avg > both Cyclical and Defensive | -5 |
| High Spread | Max-min sector ratio spread > 40pp | -3 |
| Divergence | Intra-group std > 8pp, spread > 20pp, or trend dissenters | -3 |
Penalties stack (max -10) + multi-warning discount (+1 when ≥2 active). Applied after composite scoring.
Slope values are smoothed using EMA(3) (Exponential Moving Average, span=3) before scoring. Acceleration is calculated by comparing the recent 10-point average vs prior 10-point average of smoothed slopes (10v10 window), with fallback to 5v5 when fewer than 20 data points are available.
The Historical Context component includes a confidence assessment based on:
Confidence levels: High, Medium, Low.
Required: None (uses free GitHub CSV data)
uptrend_analysis_YYYY-MM-DD_HHMMSS.jsonuptrend_analysis_YYYY-MM-DD_HHMMSS.mdreferences/uptrend_methodology.mduptrend_methodology.md for full framework understandingTake baggat236/uptrend-analyzer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.