hermesonehq/hermes-registry/canslim-screener
Claude Code and agent skill by hermesonehq/hermes-registry
- community
Checking that the SKILL.md file is still in the repository.
Screen US stocks using William O'Neil's CANSLIM growth stock methodology.
Install
npx vskill@latest install hermesonehq/hermes-registry/canslim-screenerSKILL.md
CANSLIM Stock Screener - Phase 3 (Full CANSLIM)
Overview
This skill screens US stocks using William O'Neil's proven CANSLIM methodology, a systematic approach for identifying growth stocks with strong fundamentals and price momentum. CANSLIM analyzes 7 key components: Current Earnings, Annual Growth, Newness/New Highs, Supply/Demand, Leadership/RS Rank, Institutional Sponsorship, and Market Direction.
Phase 3 implements all 7 of 7 components (C, A, N, S, L, I, M), representing 100% of the full methodology.
Two-Stage Approach:
- Stage 1 (FMP API + Finviz): Analyze stock universe with all 7 CANSLIM components
- Stage 2 (Reporting): Rank by composite score and generate actionable reports
Key Features:
- Composite scoring (0-100 scale) with weighted components
- Finviz fallback for institutional ownership data (automatic when FMP data incomplete)
- Progressive filtering to optimize API usage
- JSON + Markdown output formats
- Interpretation bands: Exceptional+ (90+), Exceptional (80-89), Strong (70-79), Above Average (60-69)
- Bear market protection (M component gating)
Phase 3.1 Component Weights (Original O'Neil weights):
- C (Current Earnings): 15%
- A (Annual Growth): 20%
- N (Newness): 15%
- S (Supply/Demand): 15%
- L (Leadership/RS Rank): 20% — multi-period weighted RS (3m/6m/12m vs configurable benchmark)
- I (Institutional): 10%
- M (Market Direction): 5%
Weighted RS Formula:
Available periods are re-normalized when some are missing. Default benchmark is ^GSPC; override with --rs-benchmark SPY/QQQ/IWM/....
Fallback hierarchy when multi-period data is incomplete:
- No benchmark → weighted absolute stock performance + 20% penalty.
- All multi-period windows missing but >=50 bars of price history → fall back to the
legacy 365-day full-window absolute return as the scoring input (20% penalty if no benchmark).
- <50 bars of price history → score=0 with
errorset.
Future Phases:
- Phase 4: FINVIZ Elite integration → 10x faster execution
When to Use This Skill
Explicit Triggers:
- "Find CANSLIM stocks"
- "Screen for growth stocks using O'Neil's method"
- "Which stocks have strong earnings and momentum?"
- "Identify stocks near 52-week highs with accelerating earnings"
- "Run a CANSLIM screener on [sector/universe]"
Implicit Triggers:
- User wants to identify multi-bagger candidates
- User is looking for growth stocks with proven fundamentals
- User wants systematic stock selection based on historical winners
- User needs a ranked list of stocks meeting O'Neil's criteria
When NOT to Use:
- Value investing focus (use value-dividend-screener instead)
- Income/dividend focus (use dividend-growth-pullback-screener instead)
- Bear market conditions (M component will flag - consider raising cash)
Prerequisites
API Requirements:
- FMP API key (free tier: 250 calls/day, sufficient for 35 stocks; Starter tier $29.99/mo for 40+ stocks)
- Sign up: https://site.financialmodelingprep.com/developer/docs
- Set via environment variable:
export FMP_API_KEY=your_key_here
Python Dependencies:
- Python 3.9+
requests(FMP API calls)beautifulsoup4(Finviz web scraping)lxml(HTML parsing)
Installation:
Output
Output Directory: reports/ (default) or custom via --output-dir
Generated Files:
canslim_screener_YYYY-MM-DD_HHMMSS.json- Structured data for programmatic usecanslim_screener_YYYY-MM-DD_HHMMSS.md- Human-readable report
Report Contents:
- Market Condition Summary (trend, M score, warnings)
- Top N CANSLIM Candidates (ranked by composite score)
- Component Breakdown for each stock (C, A, N, S, L, I, M scores with details)
- Rating interpretation (Exceptional+/Exceptional/Strong/Above Average)
- Quality warnings and data source notes
- Summary statistics (rating distribution)
Rating Bands:
- Exceptional+ (90-100): All components near-perfect, aggressive buy
- Exceptional (80-89): Outstanding fundamentals + momentum, strong buy
- Strong (70-79): Solid across components, standard buy
- Above Average (60-69): Meets thresholds with minor weaknesses, buy on pullback
Workflow
Step 1: Verify API Access and Requirements
Check if user has FMP API key configured:
Requirements:
- FMP API key (free tier: 250 calls/day, sufficient for 40 stocks)
- Python 3.9+ with required libraries:
requests(FMP API calls)beautifulsoup4(Finviz web scraping)lxml(HTML parsing)
Installation:
If API key is missing, guide user to:
- Sign up at https://site.financialmodelingprep.com/developer/docs
- Get free API key (250 calls/day)
- Set environment variable:
export FMP_API_KEY=your_key_here
Step 2: Determine Stock Universe
Option A: Default Universe (Recommended) Use top 40 S&P 500 stocks by market cap (predefined in script):
Option B: Custom Universe User provides specific symbols or sector:
Option C: Sector-Specific User can provide sector-focused list (Technology, Healthcare, etc.)
API Budget Considerations (Phase 3):
- 40 stocks × 7 FMP calls/stock = 280 API calls
- FMP: 7 calls/stock (profile, quote, income×2, historical_90d, historical_365d, institutional)
- Finviz: ~1.8 calls/stock (institutional ownership fallback, 2s rate limit, not counted in FMP budget)
- Market data (^GSPC quote, ^VIX quote, ^GSPC 52-week history): 3 FMP calls
- Total: ~283 FMP calls per screening run (exceeds 250 free tier)
- Recommendation: Use
--max-candidates 35for free tier (35 × 7 + 3 = 248 calls), or upgrade to FMP Starter tier ($29.99/mo, 750 calls/day) for full 40-stock screening
Step 3: Execute CANSLIM Screening Script
Run the main screening script with appropriate parameters:
Script Workflow (Phase 3 - Full CANSLIM):
- Market Direction (M): Analyze S&P 500 trend vs 50-day EMA (using real historical data for accurate EMA)
- If bear market detected (M=0), warn user to raise cash
- S&P 500 Historical Data: Fetch 52-week data for M component EMA and L component RS calculation
- Stock Analysis: For each stock, calculate:
- C Component: Quarterly EPS/revenue growth (YoY)
- A Component: 3-year EPS CAGR and stability
- N Component: Distance from 52-week high, breakout detection
- S Component: Volume-based accumulation/distribution (up-day vs down-day volume)
- L Component: 52-week Relative Strength vs S&P 500
- I Component: Institutional holder count + ownership % (with Finviz fallback)
- Composite Scoring: Weighted average with all 7 component breakdown
- Ranking: Sort by composite score (highest first)
- Reporting: Generate JSON + Markdown outputs
Expected Execution Time (Phase 3):
- 40 stocks: ~2 minutes (additional 52-week history fetch per stock for L component)
- Finviz fallback adds ~2 seconds per stock (rate limiting)
- L component requires 365-day historical data for each stock
Finviz Fallback Behavior:
- Triggers automatically when FMP
sharesOutstandingunavailable - Scrapes institutional ownership % from Finviz.com (free, no API key)
- Increases I component accuracy from 35/100 (partial data) to 60-100/100 (full data)
- User sees:
✅ Using Finviz institutional ownership for NVDA: 68.3%
Step 4: Read and Parse Screening Results
The script generates two output files:
canslim_screener_YYYY-MM-DD_HHMMSS.json- Structured datacanslim_screener_YYYY-MM-DD_HHMMSS.md- Human-readable report
Read the Markdown report to identify top candidates:
Report Structure (Phase 3 - Full CANSLIM):
- Market Condition Summary (trend, M score, warnings)
- Top N CANSLIM Candidates (ranked, N = --top parameter)
- For each stock:
- Composite Score and Rating (Exceptional+/Exceptional/Strong/etc.)
- Component Breakdown (C, A, N, S, L, I, M scores with details)
- Interpretation (rating description, guidance, weakest component)
- Warnings (quality issues, market conditions, data source notes)
- Summary Statistics (rating distribution)
- Methodology note (Phase 3: 7 components, 100% coverage)
Component Details in Report:
- S Component: "Up/Down Volume Ratio: 1.06 ✓ Accumulation"
- L Component (Phase 3.1): "3m/6m/12m: +12.4%/+18.7%/+44.1% (rel +5.2%/+8.3%/+22.0%) | RS: 88 (Strong)"
- I Component: "6199 holders, 68.3% ownership ⭐ Superinvestor"
A new Summary Table appears above the candidate list in Phase 3.1 reports, showing rank, symbol, composite score, rating, RS rating, and RS percentile for quick scanning.
Step 5: Analyze Top Candidates and Provide Recommendations
Review the top-ranked stocks and cross-reference with knowledge bases:
Reference Documents to Consult:
references/interpretation_guide.md- Understand rating bands and portfolio sizingreferences/canslim_methodology.md- Deep dive into component meanings (now includes S and I)references/scoring_system.md- Understand scoring formulas (Phase 3 weights)
Analysis Framework:
For Exceptional+ stocks (90-100 points):
- All components near-perfect (C≥85, A≥85, N≥85, S≥80, L≥85, I≥80, M≥80)
- Guidance: Immediate buy, aggressive position sizing (15-20% of portfolio)
- Example: "NVDA scores 97.2 - explosive quarterly earnings (100), strong 3-year growth (95), at new highs (98), volume accumulation (85), RS leader (92), strong institutional support (90), uptrend market (100)"
For Exceptional stocks (80-89 points):
- Outstanding fundamentals + strong momentum
- Guidance: Strong buy, standard sizing (10-15% of portfolio)
For Strong stocks (70-79 points):
- Solid across all components, minor weaknesses
- Guidance: Buy, standard sizing (8-12% of portfolio)
- Phase 3 Example: "Stock scores 77.5 - strong earnings (85), solid growth (80), near high (70), accumulation (60), RS leader (75), good institutions (60), uptrend (90)"
For Above Average stocks (60-69 points):
- Meets thresholds, one component weak
- Guidance: Buy on pullback, conservative sizing (5-8% of portfolio)
Bear Market Override:
- If M component = 0 (bear market detected), do NOT buy regardless of other scores
- Guidance: Raise 80-100% cash, wait for market recovery
- CANSLIM does not work in bear markets (3 out of 4 stocks follow market trend)
Step 6: Generate User-Facing Report
Create a concise, actionable summary for the user:
Report Format:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/trading/screeners/canslim-screener/SKILL.md
Popularity
- Repository stars
- 91
- Repository forks
- 17
- 7-day trend score
- 23
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/hermesonehq/hermes-registry/canslim-screener)