VCP Screener – Minervini Volatilitätskontraktionsmuster
Durchsucht S&P 500-Aktien nach Mark Minervinis Volatilitätskontraktionsmuster (VCP) und identifiziert Stage-2-Aufwärtstrends mit kontrahierender Volatilität nahe Ausbruchspivotpunkten.
Wann verwenden
- Benutzer fragt nach VCP-Screening oder Minervini-Setups
- Benutzer möchte enge Basis-/Volatilitätskontraktionsmuster finden
- Benutzer fordert Stage-2-Momentum-Aktienscans an
- Benutzer fragt nach Ausbruchskandidaten mit definiertem Risiko
- Benutzer fragt "finde jedes historische VCP in " oder möchte die vergangenen VCP-Setups eines Tickers mit Vorwärtsergebnissen untersuchen (
--history --ticker SYM)
Voraussetzungen
- FMP-API-Schlüssel (setze Umgebungsvariable
FMP_API_KEYoder übergib--api-key) - Kostenloser Tarif (250 Aufrufe/Tag) ist ausreichend für das Standard-Screening (Top 100 Kandidaten)
- Kostenpflichtiger Tarif empfohlen für das vollständige S&P 500-Screening (
--full-sp500)
Arbeitsablauf
Schritt 1: Screening vorbereiten und ausführen
Führe das VCP-Screener-Skript aus:
# Standard: S&P 500, Top 100 Kandidaten
python3 skills/vcp-screener/scripts/screen_vcp.py --output-dir skills/vcp-screener/scripts
# Benutzerdefiniertes Universum
python3 skills/vcp-screener/scripts/screen_vcp.py --universe AAPL NVDA MSFT AMZN META --output-dir skills/vcp-screener/scripts
# Vollständiges S&P 500 (kostenpflichtiger API-Tarif)
python3 skills/vcp-screener/scripts/screen_vcp.py --full-sp500 --output-dir skills/vcp-screener/scripts
Strenger Modus (reines Minervini-Setup)
Gib nur Aktien zurück, bei denen valid_vcp=True UND execution_state in (Pre-breakout, Breakout) ist:
python3 skills/vcp-screener/scripts/screen_vcp.py --strict --output-dir reports/
Historischer Einzelticker-Modus
Durchläuft die mehrjährige Historie eines Tickers, erkennt jedes jemals gebildete VCP und fügt Vorwärts-Outcome-Statistiken hinzu (Ausbruch / Stop-Loss / Timeout, Tage bis zum Ergebnis, maximaler Gewinn, maximaler Verlust) pro Erkennung. Nützlich für Musterstudien und Backtesting-Kontext – kein Echtzeit-Screener.
# Standard: ~5 Jahre (1260 Handelstage), 5-Tage-Schritt, 60-Tage-Ergebnisfenster
python3 skills/vcp-screener/scripts/screen_vcp.py \
--history --ticker FIX --output-dir reports/
# Benutzerdefinierte Scanlänge: 750 Handelstage (~3 Jahre), 90-Tage-Ergebnisfenster
python3 skills/vcp-screener/scripts/screen_vcp.py \
--history 750 --ticker TSLA \
--stride-days 5 --outcome-days 90 \
--output-dir reports/
# Langer Scan: 10 Jahre (2520 Handelstage)
python3 skills/vcp-screener/scripts/screen_vcp.py \
--history 2520 --ticker NVDA --output-dir reports/
Ausgaben (mit Zeitstempel):
vcp_history_<SYM>_<YYYY-MM-DD_HHMMSS>.json– Zeitleiste der Erkennungen mit vollständigem Analyzer-Payload +forward_outcomepro Erkennung + Zusammenfassungsstatistiken.vcp_history_<SYM>_<YYYY-MM-DD_HHMMSS>.md– menschenlesbare Zeitleiste.
Modusspezifische Flags:
| Parameter | Standard | Bereich | Effekt |
|---|---|---|---|
--history [DAYS] | (aus) / 1260 wenn ohne Wert | 100-5040 | Aktiviert den historischen Modus; optional Angabe des Handelstag-Scanfensters (erfordert --ticker) |
--ticker SYM | — | — | Zu scannender Ticker |
--stride-days | 5 | 1-60 | Handelstag-Schritt zwischen den Cursorpositionen |
--outcome-days | 60 | 5-252 | Vorwärtsfenster, das pro Erkennung ausgewertet wird |
Hinweise:
- Zwei FMP-API-Aufrufe pro Scan (Ticker + SPY-Historie), nicht 100+ wie beim Querschnitts-Pipeline.
marketCapund absolutes RS-Perzentil beziehen sich auf den isolierten Ticker, nicht auf das Live-Screening-Universum – verwende diesen Report für Musterstudien, nicht für die Portfoliogrößenbestimmung.- Erkennungen werden nach
(T1_high_date, last_low_date, pivot)dedupliziert, sodass dasselbe VCP nicht wiederholt gemeldet wird, während der Cursor altert.
Erweiterte Abstimmung (für Backtesting)
Passe VCP-Erkennungsparameter für Forschung und Backtesting an:
python3 skills/vcp-screener/scripts/screen_vcp.py \
--min-contractions 3 \
--t1-depth-min 12.0 \
--breakout-volume-ratio 2.0 \
--trend-min-score 90 \
--atr-multiplier 1.5 \
--output-dir reports/
| Parameter | Standard | Bereich | Effekt |
|---|---|---|---|
--min-contractions | 2 | 2-4 | Höher = weniger, aber qualitativ hochwertigere Muster |
--t1-depth-min | 10.0% | 1-50 | Höher = schließt flache erste Korrekturen aus |
--breakout-volume-ratio | 1.5x | 0.5-10 | Höher = strengere Volumenbestätigung |
--trend-min-score | 85 | 0-100 | Höher = strengerer Stage-2-Filter |
--atr-multiplier | 1.5 | 0.5-5 | Niedriger = empfindlichere Swing-Erkennung |
--contraction-ratio | 0.70 | 0.1-1 | Niedriger = erfordert engere Kontraktionen |
--min-contraction-days | 5 | 1-30 | Höher = längere Mindestkontraktionsdauer |
--lookback-days | 120 | 30-365 | Länger = findet ältere Muster |
--max-sma200-extension | 50.0% | — | SMA200-Distanzschwelle für den Status "Überdehnt" und Abzug |
--wide-and-loose-threshold | 15.0% | — | Endkontraktionstiefe, oberhalb derer das Flag "Weit und locker" ausgelöst wird |
--strict | aus | — | Strenger Minervini-Modus: nur Pre-Breakout oder Breakout mit gültigem VCP |
Schritt 2: Ergebnisse prüfen
- Lies die generierten JSON- und Markdown-Reports
- Lade
references/vcp_methodology.mdfür Musterinterpretationskontext - Lade
references/scoring_system.mdfür Bewertungsschwellen-Richtlinien
Schritt 3: Analyse präsentieren
Präsentiere für jeden Top-Kandidaten:
- Qualität (
composite_score/ Bewertung) – wie gut ist das VCP-Muster ausgeprägt? - Ausführungsstatus (
execution_state) – ist es jetzt kaufbar? (Pre-breakout / Breakout = handelbar) - Musterart (
pattern_type) – Lehrbuch-VCP / VCP-ähnlich / Post-Breakout / Erweiterter Leader / Beschädigt ★-Markierung, wenn eine Statusobergrenze angewendet wurde (Rohpunktzahl herabgestuft)- Kontraktionsdetails (T1/T2/T3 Tiefen und Verhältnisse)
- Trade-Setup: Pivot-Preis, Stop-Loss, Risikoprozent
- Volumen-Austrocknungsverhältnis und breakout_volume_score
- Relative Stärke Rang
Schritt 4: Umsetzbare Anleitung geben
Nach Ausführungsstatus (primärer Filter):
- Pre-breakout / Breakout: Muster befindet sich im aktiven Einstiegsfenster – wende bewertungsbasierte Positionsgröße an
- Früher Post-Breakout: Ausbruch im Gange, aber über idealem Einstieg – reduzierte Größe oder auf Pullback warten
- Erweitert / Überdehnt: Trade verpasst – zur Beobachtungsliste für die nächste Basis hinzufügen
- Beschädigt / Ungültig: Setup ungültig – nicht einsteigen
Nach Bewertung (sekundär, nachdem der Status die Handelbarkeit bestätigt):
- Lehrbuch-VCP (90+): Kaufe am Pivot mit aggressiver Positionsgröße (1,5-2x)
- Starkes VCP (80-89): Kaufe am Pivot mit Standard-Positionsgröße (1x)
- Gutes VCP (70-79): Kaufe bei Volumenbestätigung über Pivot (0,75x)
- In Entwicklung (60-69): Zur Beobachtungsliste hinzufügen, auf engere Kontraktion warten
- Schwaches/Kein VCP (<60): Nur beobachten oder überspringen
3-Phasen-Pipeline
- Vorfilter – Kursbasiertes Screening (Preis, Volumen, 52w-Position) ~101 API-Aufrufe
- Trend-Vorlage – 7-Punkt-Stage-2-Filter mit 260-Tage-Historien ~100 API-Aufrufe
- VCP-Erkennung – Musteranalyse, Bewertung, Berichterstellung (keine zusätzlichen API-Aufrufe)
Ausgabe
vcp_screener_YYYY-MM-DD_HHMMSS.json– Strukturierte Ergebnissevcp_screener_YYYY-MM-DD_HHMMSS.md– Menschenlesbarer Bericht
Ressourcen
references/vcp_methodology.md– VCP-Theorie und Erklärung der Trend-Vorlagereferences/scoring_system.md– Bewertungsschwellen und Komponentengewichtereferences/fmp_api_endpoints.md– API-Endpunkte und Ratenbegrenzungen