OPEN-SOURCE SCRIPT
Aggiornato Normalized Volume Index

In the realm of technical analysis, volume is more than just a measure of market activity—it’s a window into trader psychology. Two classic indicators that harness this insight are the Positive Volume Index (PVI) and Negative Volume Index (NVI). Developed in the early 20th century by Paul L. Dysart and later refined by Norman G. Fosback in 1976, these tools aim to distinguish between the behavior of the so-called “smart money” and the broader market crowd.
- Positive Volume Index (PVI) tracks price changes only on days when trading volume increases. It assumes that rising volume reflects the actions of less-informed retail traders—those who follow the herd.
- Negative Volume Index (NVI), on the other hand, focuses on days when volume decreases, under the premise that institutional investors (the “smart money”) are more active when the market is quiet.
This dichotomy allows traders to interpret market sentiment through the lens of volume behavior. For example, a rising NVI during a price uptrend may suggest that institutional investors are quietly accumulating positions—often a bullish signal.
Traders use PVI and NVI to:
- Confirm trends: If NVI is above its moving average, it often signals a strong underlying trend supported by smart money.
- Spot reversals: Divergences between price and either index can hint at weakening momentum or upcoming reversals.
- Gauge participation: PVI rising faster than price may indicate overenthusiastic retail buying—potentially a contrarian signal.
These indicators are often paired with moving averages (e.g., 255-day EMA) to generate actionable signals. Fosback’s research suggested that when NVI is above its one-year EMA, there’s a high probability of a bull market.
While PVI and NVI are cumulative indices, normalizing them—for example, by rebasing to 100 or converting to percentage changes—offers several benefits:
- Comparability: Normalized indices can be compared across different assets or timeframes.
- Clarity: It becomes easier to visualize relative strength or weakness.
- Backtesting: Normalized values are more suitable for algorithmic strategies and statistical analysis.
Normalization also helps when combining PVI/NVI with other indicators in multi-factor models, ensuring no single metric dominates due to scale differences
In essence, PVI and NVI offer a nuanced view of market dynamics by separating the noise of volume surges from the quiet confidence of institutional moves. When normalized and interpreted correctly, they become powerful allies in a trader’s decision-making toolkit.
How to use this (Educational material):
For instance, on average, when the Negative Volume Index (NVI) remains above its midline, the market tends to trend positively, reflecting consistent institutional participation. However, when the NVI dips and stays below the midline, it often signals a negative trend, indicating that smart money is stepping away or reducing exposure.
Another telling scenario occurs when the Positive Volume Index (PVI) drops below the NVI. While this might coincide with a brief price dip, institutions often interpret this as an opportunity to buy the dip, quietly accumulating positions while retail participants exit in panic. The result? A market recovery driven by smart money.
Conversely, when the PVI consistently remains above the NVI, it may point to retail enthusiasm outpacing institutional support. This imbalance can flag a tired or overextended trend, where the smart money has already positioned itself defensively. When this pattern persists, there's a high likelihood that institutions will pull the plug, leading to a pronounced trend reversal.
- Positive Volume Index (PVI) tracks price changes only on days when trading volume increases. It assumes that rising volume reflects the actions of less-informed retail traders—those who follow the herd.
- Negative Volume Index (NVI), on the other hand, focuses on days when volume decreases, under the premise that institutional investors (the “smart money”) are more active when the market is quiet.
This dichotomy allows traders to interpret market sentiment through the lens of volume behavior. For example, a rising NVI during a price uptrend may suggest that institutional investors are quietly accumulating positions—often a bullish signal.
Traders use PVI and NVI to:
- Confirm trends: If NVI is above its moving average, it often signals a strong underlying trend supported by smart money.
- Spot reversals: Divergences between price and either index can hint at weakening momentum or upcoming reversals.
- Gauge participation: PVI rising faster than price may indicate overenthusiastic retail buying—potentially a contrarian signal.
These indicators are often paired with moving averages (e.g., 255-day EMA) to generate actionable signals. Fosback’s research suggested that when NVI is above its one-year EMA, there’s a high probability of a bull market.
While PVI and NVI are cumulative indices, normalizing them—for example, by rebasing to 100 or converting to percentage changes—offers several benefits:
- Comparability: Normalized indices can be compared across different assets or timeframes.
- Clarity: It becomes easier to visualize relative strength or weakness.
- Backtesting: Normalized values are more suitable for algorithmic strategies and statistical analysis.
Normalization also helps when combining PVI/NVI with other indicators in multi-factor models, ensuring no single metric dominates due to scale differences
In essence, PVI and NVI offer a nuanced view of market dynamics by separating the noise of volume surges from the quiet confidence of institutional moves. When normalized and interpreted correctly, they become powerful allies in a trader’s decision-making toolkit.
How to use this (Educational material):
For instance, on average, when the Negative Volume Index (NVI) remains above its midline, the market tends to trend positively, reflecting consistent institutional participation. However, when the NVI dips and stays below the midline, it often signals a negative trend, indicating that smart money is stepping away or reducing exposure.
Another telling scenario occurs when the Positive Volume Index (PVI) drops below the NVI. While this might coincide with a brief price dip, institutions often interpret this as an opportunity to buy the dip, quietly accumulating positions while retail participants exit in panic. The result? A market recovery driven by smart money.
Conversely, when the PVI consistently remains above the NVI, it may point to retail enthusiasm outpacing institutional support. This imbalance can flag a tired or overextended trend, where the smart money has already positioned itself defensively. When this pattern persists, there's a high likelihood that institutions will pull the plug, leading to a pronounced trend reversal.
Note di rilascio
- Included Bollinger Bands to empirically assess the statistical significance during trend changes at crossover points between the normalized NVI and its midline.Note di rilascio
- Added a toggle to switch calculations between raw values and smoothed values through smema for both NVI and PVI.Note di rilascio
- Added length input for the ROC of NVI/PVINote di rilascio
- Introduced a toggle to enable fast-period calculations for NVI and PVI, offering enhanced insight into short-term volume-driven sentiment. This allows traders to compare immediate fluctuations—often driven by retail activity—with longer-term trends, potentially reflecting institutional positioning and identifying shifts in market sentiment.Note di rilascio
- Updated the default normalization window to 3 for the fast trend, enhancing reactive visualization responsiveness.Note di rilascio
- Revised the default value for Fast NVI normalization length from 3 to 19.While a length of 3 may still be adequate for detecting imbalances between short-term retail activity and institutional flows on higher timeframes (4H and above), it proved to be too noisy on lower timeframes—particularly for intraday setups on the 1H and 15M charts. The updated default of 19 offers a more stable signal in these shorter intervals.
Note di rilascio
- ChartNote di rilascio
- Added a total bullish score oscillator, derived from the permutations between fast and slow PVI and NVI curves. By analysing the crossovers of each individual volume curve in relation to the overall oscillator, we can now delineate bullish and bearish zones.These zones are not intended as direct buy or sell signals. Instead, they serve as filters for trade setups. For example, when the oscillator characterizes an area as bullish, you should only consider long entries—ideally confirmed by price action—and avoid short setups entirely. Conversely, in a bearish zone, your focus should shift to identifying high-probability short entries after confirmation and confluence, while disregarding any potential long opportunities.
Note di rilascio
- Improved the logic of determining bullish and bearish zones- Enhanced visual options
Note di rilascio
- Updated the default values to 200 for the slow volume index and 50 for the fast volume index to align with widely recognized moving average standards.Note di rilascio
- Updated the filtering levels for OB/OS to avoid false signals when the the composite volume oscillator is at extremes. Note di rilascio
- Updated extreme conditionsNote di rilascio
- Updated extreme conditions (work in progress)Note di rilascio
- Remove some test codeNote di rilascio
- Updated visualisationsNote di rilascio
- Simplified extreme conditions (work in progress)Note di rilascio
Simplified how bullish and bearish areas are identified:- Bearish Areas: Triggered when either the Composite Bullish Volume Index or Fast Positive Volume Index is exhausted from extreme positions (≥1 SD from the midline). This signals buyer fatigue or retail exit from overbought zones. These areas act as filters—no long setups should be considered here.
- Bullish Areas: Only valid when the Composite Bullish Volume Index is rising from an oversold position (≤1 SD from the midline), indicating institutional momentum. These zones filter out short setups.
- Exception: In strong market pumps, volume exhaustion may appear while price still makes higher highs. In such cases, additional confluence is needed (e.g. moving average crossovers, 50 vs 200 EMA distance) to confirm trend strength.
These updates should help prevent retail traders from entering trades against dominant market sentiment.
Note di rilascio
- Updated the logic so that bullish and bearish areas remain active continuously until a reverse signal occurs—once a bullish area begins printing, it will persist on each candle until a bearish area takes over, and vice versa.Note di rilascio
- Changed OB/OS SD zone threshold to input based with 1 SD being the defaultNote di rilascio
- Updated the oversold (OS) condition to activate only when retail activity falls below its zero mean, signaling that a significant portion of retail traders has exited, potentially creating space for institutional buyers to begin accumulating on the dip.Note di rilascio
- Improved the detection of bullish and bearish extreme areas to be more responsive to the most recent market conditions.Note di rilascio
- Added Buy/Sell signal based on oscillator position at OS/OB and momentum shift.Note di rilascio
- Implemented a filter for relative volatility to reduce the amount of false reversal signals.Note di rilascio
- Updated the visuals of the bullish vs bearish sentimentNote di rilascio
- Enhanced visualisation of trend sentiment and OB/OS zones.- Simplified the code.
Note di rilascio
- Updated the signal input so that any of the four NVI can be used as signal to be compared vs the compositeNote di rilascio
- ChartNote di rilascio
- Updated visuals, color-coded signal line and composite index for bullish/bearish conditions and removed background colour band to improve clarity while retaining multi-line plotting.- Buy/sell labels replaced with minimalist triangle icons.
Note di rilascio
- Improved visuals- Brought back buy/sell labels to enhance signalling standout
Script open-source
In pieno spirito TradingView, il creatore di questo script lo ha reso open-source, in modo che i trader possano esaminarlo e verificarne la funzionalità. Complimenti all'autore! Sebbene sia possibile utilizzarlo gratuitamente, ricorda che la ripubblicazione del codice è soggetta al nostro Regolamento.
Declinazione di responsabilità
Le informazioni ed i contenuti pubblicati non costituiscono in alcun modo una sollecitazione ad investire o ad operare nei mercati finanziari. Non sono inoltre fornite o supportate da TradingView. Maggiori dettagli nelle Condizioni d'uso.
Script open-source
In pieno spirito TradingView, il creatore di questo script lo ha reso open-source, in modo che i trader possano esaminarlo e verificarne la funzionalità. Complimenti all'autore! Sebbene sia possibile utilizzarlo gratuitamente, ricorda che la ripubblicazione del codice è soggetta al nostro Regolamento.
Declinazione di responsabilità
Le informazioni ed i contenuti pubblicati non costituiscono in alcun modo una sollecitazione ad investire o ad operare nei mercati finanziari. Non sono inoltre fornite o supportate da TradingView. Maggiori dettagli nelle Condizioni d'uso.