OPEN-SOURCE SCRIPT
VCP Tightness Score

VCP Tightness Score
Original concept and script by joshdm_94 (@ETFbreakouts on X). Modified and extended with a 3-zone color system and single dot display.
Spotting a true Volatility Contraction Pattern requires more than just looking for small candles. A 5% price swing might be tight for a high-beta growth stock but extremely loose for a slower mover. This indicator solves that by measuring how tight a stock's recent price action is relative to its own historical volatility — not against a fixed number.
How It Works
The script calculates two metrics over your chosen lookback period (default 5 bars):
- Closing Spread: the percentage difference between the highest and lowest close
- Total Swing Spread: the percentage difference between the absolute high and low
Both are divided by the stock's Average Daily Range % and normalized on a 0–100 scale based on a historical baseline window (default 50 bars). A score near 0 means the stock is compressing tighter than at any point in the baseline period. A score near 100 means price action is wide and volatile.
How to Read It
A single colored dot in the top right corner of your chart updates in real time:
- 🟢 Green (0–15): Entry zone. Price is compressed and ready. Look for a pivot with volume dry-up confirmation.
- 🟠 Orange (16–40): Still contracting. Keep it on your watchlist and check back daily.
- 🔴 Red (41–100): Too loose. Stay away until volatility contracts further.
Inputs
- Tightness Lookback: bars to measure current compression (default 5)
- ADR Lookback: bars to calculate the stock's normal volatility (default 20)
- Historical Baseline: normalization window for the 0–100 score (default 50)
Best Use Cases
Designed for daily and weekly charts. Most effective when used alongside volume dry-ups to confirm VCPs, high tight flags, and cup and handle bases before the breakout.
Original concept and script by joshdm_94 (@ETFbreakouts on X). Modified and extended with a 3-zone color system and single dot display.
Spotting a true Volatility Contraction Pattern requires more than just looking for small candles. A 5% price swing might be tight for a high-beta growth stock but extremely loose for a slower mover. This indicator solves that by measuring how tight a stock's recent price action is relative to its own historical volatility — not against a fixed number.
How It Works
The script calculates two metrics over your chosen lookback period (default 5 bars):
- Closing Spread: the percentage difference between the highest and lowest close
- Total Swing Spread: the percentage difference between the absolute high and low
Both are divided by the stock's Average Daily Range % and normalized on a 0–100 scale based on a historical baseline window (default 50 bars). A score near 0 means the stock is compressing tighter than at any point in the baseline period. A score near 100 means price action is wide and volatile.
How to Read It
A single colored dot in the top right corner of your chart updates in real time:
- 🟢 Green (0–15): Entry zone. Price is compressed and ready. Look for a pivot with volume dry-up confirmation.
- 🟠 Orange (16–40): Still contracting. Keep it on your watchlist and check back daily.
- 🔴 Red (41–100): Too loose. Stay away until volatility contracts further.
Inputs
- Tightness Lookback: bars to measure current compression (default 5)
- ADR Lookback: bars to calculate the stock's normal volatility (default 20)
- Historical Baseline: normalization window for the 0–100 score (default 50)
Best Use Cases
Designed for daily and weekly charts. Most effective when used alongside volume dry-ups to confirm VCPs, high tight flags, and cup and handle bases before the breakout.
Script de código abierto
Fiel al espíritu de TradingView, el creador de este script lo ha convertido en código abierto, para que los traders puedan revisar y verificar su funcionalidad. ¡Enhorabuena al autor! Aunque puede utilizarlo de forma gratuita, recuerde que cualquier republicación del código está sujeta a nuestras Normas internas.
Exención de responsabilidad
La información y las publicaciones no constituyen, ni deben considerarse como, asesoramiento o recomendaciones financieras, de inversión, de trading u otro tipo, proporcionadas o respaldadas por TradingView. Obtenga más información en Condiciones de uso.
Script de código abierto
Fiel al espíritu de TradingView, el creador de este script lo ha convertido en código abierto, para que los traders puedan revisar y verificar su funcionalidad. ¡Enhorabuena al autor! Aunque puede utilizarlo de forma gratuita, recuerde que cualquier republicación del código está sujeta a nuestras Normas internas.
Exención de responsabilidad
La información y las publicaciones no constituyen, ni deben considerarse como, asesoramiento o recomendaciones financieras, de inversión, de trading u otro tipo, proporcionadas o respaldadas por TradingView. Obtenga más información en Condiciones de uso.