---
name: "growth_stock_screening"
description: "Screen growth stocks with the CANSLIM, Minervini SEPA Trend Template, and VCP frameworks. Triggers when the user wants a growth-stock watchlist, a screening methodology, ticker vetting against classic growth criteria, or a filter for momentum leaders with real earnings."
---

# Growth Stock Screening

## Purpose

Turn a raw universe of tickers into a short, defensible watchlist using the three classic growth-stock frameworks: O'Neil's CANSLIM, Minervini's SEPA Trend Template, and the Volatility Contraction Pattern (VCP). A mechanical screen plus fundamental overlay plus a false-positive gauntlet. Screening is a filter, not a recommendation.

## Workflow

1. **Define the universe.** Liquid names only: average daily volume above ~400K shares. Illiquid tickers fail every framework on slippage alone. Read candidates from args or a file (one ticker per line).
2. **Run the Trend Template filter.** The mechanical gate. Use `bin/screen_growth.py`:

   ```bash
   python3 bin/screen_growth.py AAPL NVDA PLTR
   python3 bin/screen_growth.py --file watchlist.txt
   python3 bin/screen_growth.py --json AAPL NVDA   # machine-readable
   ```

   The script fetches two years of daily data from Yahoo Finance (no key needed) and reports the eight Minervini template checks, an RS proxy vs SPY, a volume dry-up ratio, a contraction profile, and ATR. Treat its VERDICT as a first pass: REJECT means out, QUALIFIES and WATCH move forward.
3. **Layer the CANSLIM fundamentals.** Price action alone is half the job. For template-passing tickers, check the CANSLIM letters that data APIs can score: C (current quarterly EPS growth 25%+), A (annual earnings growth, ROE 17%+), N (a new product or catalyst you can name), I (rising institutional sponsorship). See `references/canslim.md` for the checklist. A stock with a perfect template and shrinking earnings is a trader's stock, not a growth stock.
4. **Check the base on a chart.** The script cannot count bases or confirm a VCP. Pull up the chart yourself: look for 2-5 tightening pullbacks with higher lows, drying volume in the final leg, and a clean pivot. See `references/vcp.md` for the anatomy and the disqualifiers.
5. **Run the false-positive gauntlet.** Most template passes still get cut here. See `references/false-positives.md`. The common kills: 4th-or-later base, extended more than 15% above the 50dma, Stage 3 distribution, expanding volume on the way down, market in correction.
6. **Gate on market direction.** O'Neil's M and Minervini's regime rule agree: in a correction, even perfect setups get shelved. Check SPY against its own 200dma before acting on any watchlist.
7. **Deliver the watchlist.** Follow the Output Contract. Every entry carries its verdict and, for rejects, the exact failed checks. No ticker appears without a reason.

## Output Contract

A watchlist with one block per ticker:

- ticker, price, and date of the screen
- Trend Template result: pass/fail per line (8 criteria), RS proxy value
- fundamental notes: C/A/N/I status from the CANSLIM pass
- base read: estimated base count, contraction tightening, volume dry-up ratio, ATR
- verdict: QUALIFIES (enter only on a chart-confirmed pivot break), WATCH (what would change it), or REJECT (which checks failed)
- market regime line: SPY vs its 200dma, uptrend or correction

## Operating Rules

- This is educational screening methodology, not investment advice. Never present a watchlist as a buy recommendation. Say so plainly whenever the output goes to a user.
- Accuracy rule, verbatim: "Every factual claim in a skill must be verified via web search or a primary source. Never invent numbers, dates, quotes, or events. Unverifiable = cut it or frame as opinion. No confident unverified claims, ever."
- RS in this skill is a proxy: trailing 12-month return vs SPY, not Investor's Business Daily's RS Rating. Label it as such whenever you report it. The Minervini bar is an IBD RS Rating of 70+.
- Never claim a base count or a confirmed VCP from the script alone. Base counting and pattern confirmation need a human looking at a chart.
- If price data cannot be fetched for a ticker, report the gap and move on. Never backfill with stale or invented data.
- Style law: no em dashes ever, no ChatGPT-speak. Plain, direct sentences.
