RVI (Relative Vigor Index) Indicator Explanation
The Relative Vigor Index (RVI) is a momentum oscillator that measures the conviction of a trend by comparing the closing price to the opening price relative to the trading range. Developed by John Ehlers in 2002, the RVI is based on the observation that in an upward trend, prices tend to close higher than they open, and in a downward trend, prices tend to close lower than they open. The RVI compares this relationship to the trading range (high minus low) and smooths the result with a moving average. The indicator oscillates around a zero line, with positive values indicating upward momentum and negative values indicating downward momentum.
How RVI Works: RVI is calculated by comparing the closing price to the opening price relative to the trading range over a specified period (typically 10 periods). The formula is: RVI = SMA((Close - Open) / (High - Low), period), where SMA is a simple moving average. The numerator (Close - Open) measures the price movement direction, while the denominator (High - Low) measures the trading range. When prices close higher than they open (positive numerator), RVI is positive, indicating upward momentum. When prices close lower than they open (negative numerator), RVI is negative, indicating downward momentum. The ratio normalizes the measurement relative to volatility, making RVI comparable across different price levels and timeframes.
When to Use RVI:
- Trend Conviction Identification: RVI is highly effective at identifying the conviction or strength of a trend through the relationship between close and open prices. Positive and rising RVI indicates strong upward conviction, while negative and falling RVI indicates strong downward conviction. The normalization by trading range makes RVI particularly useful for comparing trend strength across different assets.
- Divergence Analysis: RVI divergence occurs when price makes new highs or lows while RVI fails to confirm, often signaling potential trend reversals. Bullish divergence (price makes lower low, RVI makes higher low) suggests upward momentum building, while bearish divergence (price makes higher high, RVI makes lower high) suggests downward momentum building.
- Signal Line Crossovers: RVI crossovers with its signal line (typically a 4-period SMA of RVI) generate buy and sell signals. When RVI crosses above its signal line, it generates a bullish signal, and when it crosses below, it generates a bearish signal. These crossovers work well with the zero line for confirmation.
Advantages:
- Provides normalized momentum signals that are comparable across different price levels and timeframes, making it ideal for cross-asset analysis. The ratio format eliminates price-level bias and volatility differences.
- Works effectively across multiple timeframes and asset classes, including stocks, forex, commodities, and cryptocurrencies. The normalization ensures consistent interpretation regardless of asset characteristics.
- Helps identify trend conviction early through divergence analysis and signal line crossovers, providing clear signals for entry and exit points. The trend conviction measurement improves reliability.
Limitations:
- RVI can be prone to whipsaws in ranging markets when close-open relationships oscillate around zero without clear directional bias. The indicator works best in trending markets where trend conviction is more clearly defined.
- The indicator may lag behind price movements during rapid market changes, as it relies on moving average smoothing. This lag can result in delayed entry and exit signals.
- RVI does not provide information about overbought or oversold conditions on its own, only trend conviction and momentum direction. Traders should combine it with other indicators for more comprehensive analysis.
In summary, RVI is a valuable momentum oscillator that measures trend conviction through normalized close-open price relationships, making it ideal for identifying trend strength and momentum shifts across different assets. For comprehensive understanding, refer to Ehlers' original work on the Relative Vigor Index, Investopedia's RVI guide, TradingView's RVI documentation, and academic research on momentum oscillators in technical analysis published in journals such as the Journal of Financial Markets and the Review of Financial Studies.
Practical Example: Using the RVI Indicator in a Trading Strategy
The Relative Vigor Index (RVI) is a momentum oscillator used to identify trend conviction and momentum shifts through normalized close-open price analysis. In a trading strategy, the RVI indicator helps traders make entry and exit decisions based on trend conviction and signal line crossovers.
Scenario: You're creating a trend-following strategy for EUR/USD on a 1-hour chart. You want to buy when RVI crosses above zero and above its signal line (indicating upward conviction), and sell when it crosses below zero or below its signal line (indicating downward conviction).
Strategy Logic:
- Calculate the RVI(10) with a 4-period signal line. The RVI oscillates around zero, with positive values indicating upward momentum and negative values indicating downward momentum. The normalized format makes values comparable across different price levels.
- Buy signal: When RVI crosses above zero and above its signal line, indicating upward conviction beginning with confirmation from both zero line and signal line.
- Sell signal: When RVI crosses below zero or below its signal line, indicating downward conviction beginning or upward conviction weakening.
Backtrader Example:
import backtrader as bt
class RVITrendStrategy(bt.Strategy):
params = dict(
rvi_period=10,
signal_period=4
)
def __init__(self):
# Calculate RVI: SMA((Close - Open) / (High - Low), period)
price_range = self.data.high - self.data.low
# Avoid division by zero
price_change = (self.data.close - self.data.open) / bt.ind.If(price_range > 0, price_range, 1.0)
self.rvi = bt.ind.SMA(price_change, period=self.p.rvi_period)
self.signal = bt.ind.SMA(self.rvi, period=self.p.signal_period)
def next(self):
if not self.position:
# Buy when RVI crosses above zero and signal line
if (self.rvi[0] > 0 and self.rvi[0] > self.signal[0] and
self.rvi[-1] <= self.signal[-1]):
self.buy()
else:
# Sell when RVI crosses below zero or signal line
if (self.rvi[0] < 0 or
(self.rvi[0] < self.signal[0] and self.rvi[-1] >= self.signal[-1])):
self.sell()
# Usage
cerebro = bt.Cerebro()
cerebro.addstrategy(RVITrendStrategy)
Expected Outcome: By using the RVI indicator, your strategy identifies trend conviction through normalized close-open price analysis, helping you enter trades when trend conviction is building and exit when conviction weakens. This approach leads to better trend-following entries, improved conviction identification, and enhanced consistency by trading only when trend conviction is clearly defined.
💡 Bonus Tip
Consider using RVI in combination with price action analysis for confirmation. When RVI is positive and price is making higher highs and higher lows, it suggests strong upward conviction with higher probability of trend continuation. This technique, documented in technical analysis literature, can significantly improve the reliability of RVI-based trading strategies.
Using the RVI indicator ensures your strategy captures trend conviction effectively, improving entry and exit timing based on normalized momentum measurements.
%20Indicator.webp)