mod note:
Why the Relative Vigor Index (RVI) Can Be a Better Confirmation Study Than RSI or Stochastics
The problem with the classic tools — RSI and Stochastics — is that they are extremely sensitive to bar‑to‑bar noise. They twitch, they overreact, and they often fire signals that have nothing to do with actual trend strength.
The Relative Vigor Index (RVI), originally developed by John Ehlers, takes a different approach. Instead of reacting to every tiny fluctuation, it measures whether price tends to close near the highs in an uptrend or near the lows in a downtrend, and it smooths that measurement with a FIR filter. The result is a calmer, more stable oscillator that behaves more like a trend confirmation tool and less like a panic generator.
A few resources to help you learn more about the RVI:
updated: 1/16/26
Why the Relative Vigor Index (RVI) Can Be a Better Confirmation Study Than RSI or Stochastics
The problem with the classic tools — RSI and Stochastics — is that they are extremely sensitive to bar‑to‑bar noise. They twitch, they overreact, and they often fire signals that have nothing to do with actual trend strength.
The Relative Vigor Index (RVI), originally developed by John Ehlers, takes a different approach. Instead of reacting to every tiny fluctuation, it measures whether price tends to close near the highs in an uptrend or near the lows in a downtrend, and it smooths that measurement with a FIR filter. The result is a calmer, more stable oscillator that behaves more like a trend confirmation tool and less like a panic generator.
thinkScript Code
Code:
# Relative Vigor Index
# Assembled by BenTen at useThinkScript.com
# Converted from https://www.tradingview.com/script/0pbCZxRN-Relative-Vigour-Index-RVI-Ehlers/
declare lower;
input p = 14;
def CO = close - open;
def HL = high - low;
def value1 = (CO + 2 * CO[1] + 2 * CO[2] + CO[3]) / 6;
def value2 = (HL + 2 * HL[1] + 2 * HL[2] + HL[3]) / 6;
def num = sum(value1, p);
def denom = sum(value2, p);
def RVI = if denom != 0 then num / denom else 0;
def RVIsig = (RVI + 2 * RVI[1] + 2 * RVI[2] + RVI[3]) / 6;
plot line1 = RVI;
plot line2 = RVIsig;
line1.setDefaultColor(getColor(0));
line2.setDefaultColor(getColor(1));
A few resources to help you learn more about the RVI:
Last edited by a moderator: