All indicators

Negative Volume Index (NVI)

A cumulative index starting at 100 that follows the price change only on bars whose volume fell against the bar before.

BTCUSD1h
Fixed data to Oct 6, 2026, UTC
Loading the chart

The Negative Volume Index tracks what price does on quieter bars. It starts at 100. On each bar whose volume is lower than the previous bar's volume, the index is multiplied by this bar's price divided by the previous bar's price, so it takes on that bar's percentage change. On every other bar, when volume rose or stayed the same, the index holds flat.

The first bar has no previous bar, so it holds at 100. A bar is skipped as well when the previous price is zero or the previous volume is not above zero, which avoids dividing by nothing. The price followed is the Price Source setting, the close by default.

How to read Negative Volume Index (NVI)

Because the index only moves on bars where volume fell, it shows the trend made on the quieter bars. A rising index means price has tended to advance on falling volume; a falling one means it has tended to decline on falling volume. Many traders compare the index with a long moving average of itself to judge the trend.

The level is the compounded price change on the quieter bars since the start at 100, not a price, so read the direction and the slope. On a series without volume the index stays flat at 100, since no bar can show falling volume.

Settings

Price Source
The price whose percentage change the index takes on the qualifying bars, the close by default.

Frequently asked questions

Why does the line stay flat for stretches?

It only moves on bars whose volume is lower than the bar before. Through a run of rising volume it holds its last value.

What does the value 100 mean?

It is only the starting point. The index compounds price changes from there, so its level tells you the combined change on the quieter bars since the first bar.

Write your own in OpenScript

Every study here is plain OpenScript. Change a setting, combine two, or turn one into a strategy, then backtest it in /trading and run it in sandbox trading (analyzer mode in OpenAlgo) before going further.