The Relative Vigor Index measures the "vigor" of price movement — specifically, the relationship between where price closed relative to where it opened. A bullish bar closes higher than it opened. The RVI captures this pattern across N bars, normalized by the bar's high-low range. Unlike RSI, which measures close-to-close momentum, RVI measures the quality of each bar's directional movement.
Section 1: Core Mechanics
RVI was introduced by John Ehlers in his work on cycle analysis and technical indicators. The core insight: in bullish markets, bars tend to close in the upper portion of their range (close > open). In bearish markets, bars close in the lower portion (close < open). By averaging this relationship over N bars and normalizing by the true range, RVI produces a smooth oscillator centered around zero.
Formula
The RVI uses a symmetric triangular weighting — [1, 2, 2, 1] divided by 6 — applied over four consecutive bars.
Step 1 — Numerator (smoothed close-minus-open):
Step 2 — Denominator (smoothed true range):
Step 3 — RVI value (N-period sum ratio):
Step 4 — Signal line (same triangular weighting applied to RVI):
The Signal line is a 4-bar weighted average of the RVI — identical to MACD's signal line concept, but using the triangular weighting instead of EMA.
Why Triangular Weighting?
The [1, 2, 2, 1]/6 weighting is symmetric — it gives peak weight to the two middle bars rather than the most recent bar. This preserves the shape of the price pattern without end-point bias. It is less reactive than EMA (which front-loads recent data) but more reactive than SMA (which weights all bars equally). Ehlers chose this weighting specifically for its spectral properties — it reduces noise at cycle frequencies shorter than 4 bars.
Inputs
- Open, High, Low, Close for each bar (all four prices required — unlike most momentum indicators)
- Period (N): Summing window for the NUM/DENOM ratio (default 10)
Parameters
| Parameter | Default | Range | Impact |
|---|---|---|---|
| Period (N) | 10 | 5–20 | Lower = more reactive, noisier signal line crossovers |
| Signal period | 4 (fixed triangular weighting) | Not typically adjustable | Matches the numerator/denominator weighting |
Output
RVI oscillates around zero. Positive = bars tending to close higher than they opened (bullish vigor). Negative = bars tending to close lower than they opened (bearish vigor). In practice, extreme values are rare — most readings stay between -0.5 and +0.5 in normal market conditions.
Section 2: Interpretation & Signals
Signal Zones
| RVI Level | Interpretation | Action |
|---|---|---|
| Above zero and rising | Bullish vigor — bars consistently closing above open | Hold longs, look for adding entries |
| Above zero, crossing below Signal | Bullish vigor fading — potential reversal | Exit long or tighten stop |
| Crossing zero from below | Momentum shift to bullish | Entry zone for new long positions |
| Crossing zero from above | Momentum shift to bearish | Exit long; entry zone for shorts |
| Below zero and falling | Bearish vigor — bars consistently closing below open | Hold shorts, look for adding entries |
| Below zero, crossing above Signal | Bearish vigor fading | Exit short or tighten stop |
Primary Signal: RVI/Signal Line Crossover
The main RVI signal is when the RVI line crosses its Signal line — identical in concept to MACD crossovers.
Bullish crossover: RVI crosses above the Signal line. Vigor is increasing — more recent bars show greater close-above-open behavior than the broader period.
Bearish crossover: RVI crosses below the Signal line. Vigor is declining.
Crossovers above zero (bullish) are higher-conviction buy signals. Crossovers below zero (bearish) are higher-conviction sell signals. Crossovers at or near zero are weaker — wait for the cross to happen clearly on one side of the centerline.
RVI Signal Line Crossover in Bullish Trend
Zero-Line Cross
When RVI crosses from negative to positive (or vice versa), the momentum character of the market has shifted. Over the lookback period, bars were predominantly closing below their open (negative RVI); now more bars close above their open (positive RVI). This transition is a trend change signal — slower and more reliable than a simple crossover of the Signal line.
Divergence
RVI divergence interpretation is identical to RSI or Stochastic divergence:
Bullish: Price makes a lower low. RVI makes a higher low. The vigor of downward bars is diminishing — selling pressure is exhausting.
Bearish: Price makes a higher high. RVI makes a lower high. The vigor of upward bars is diminishing — buying pressure is fading.
Best Market Conditions
RVI performs best in trending markets with clear directional bias — where the open-close relationship consistently favors one direction. In trending markets, RVI can sustain above or below zero for many bars, and crossovers of the Signal line provide reliable entry timing within the trend. In tight ranges, the open-close relationship is random and RVI is noisy.
Section 3: Pass vs. Live — Real-Time Reliability
RVI requires all four OHLC values. The open price of each bar is set at the bar's start and does not change. Only the close, high, and low change during the live bar. The triangular weighting means the oldest bar in the 4-bar calculation has the least influence — the live bar's close position updates RVI, but less drastically than a front-loaded EMA would. Once the bar closes, all values are permanent. No repaint.
Section 4: Practical Use Cases
Setup: RVI(10) on 1H chart; only trade in direction confirmed by RVI zero-line position Signal: RVI crosses above Signal line while RVI is above zero (bullish crossover in positive territory) Entry: 1H bar close after the crossover Exit: RVI crosses back below Signal line or RVI approaches zero from above Key Rule: Do not trade crossovers when RVI is within 0.05 of zero — the signal is ambiguous
Setup: RVI(10) on daily; zero-line cross as trend confirmation, Signal line crossover for entry Signal: Daily RVI crosses above zero (trend shift) then pulls back and crosses above Signal line again Entry: Daily close after the second crossover (Signal line cross after zero-line cross) Stop: Below swing low that preceded the zero-line cross Target: Prior swing high or 3:1 risk-reward minimum (institutional difficulty requires higher reward)
Setup: RVI(10) weekly; zero-line cross only — sustained above/below zero = trend confirmed Signal: Weekly RVI crosses above zero and sustains for 2 consecutive weeks above zero Entry: Third weekly bar open after sustained confirmation Stop: Weekly close with RVI crossing back below zero Target: No fixed target — trail stop using weekly SMA(20) below price
Real example — EUR/USD, 2023 trend phase: EUR/USD daily RVI crossed above zero on January 12, 2023, at 1.0745. The Signal line crossover (RVI crossing above Signal) confirmed on January 17, 2023, at 1.0820. Both the zero-line cross and Signal crossover aligned. EUR/USD trended to 1.1033 by February 2, 2023 — a 213-pip (1.96%) move over 11 trading days from the entry signal. RVI crossed back below Signal on February 6 at 1.0730 as the trend exhausted, capturing the bulk of the move.
Section 5: Pseudo Code
INPUT: open_[], high[], low[], close[], period=10
PROCESS:
Step 1: For each bar i >= 3 (need 4 bars for triangular weighting):
# Numerator: weighted close-minus-open
num[i] = ((close[i] - open_[i])
+ 2*(close[i-1] - open_[i-1])
+ 2*(close[i-2] - open_[i-2])
+ (close[i-3] - open_[i-3])) / 6
# Denominator: weighted high-minus-low
denom[i] = ((high[i] - low[i])
+ 2*(high[i-1] - low[i-1])
+ 2*(high[i-2] - low[i-2])
+ (high[i-3] - low[i-3])) / 6
Step 2: For each bar i >= 3 + period - 1:
sum_num = sum(num[i - period + 1 : i + 1])
sum_denom = sum(denom[i - period + 1 : i + 1])
if sum_denom == 0:
rvi[i] = 0 # Flat market — neutral
else:
rvi[i] = sum_num / sum_denom
Step 3: Signal line (4-bar triangular weighting of RVI):
For i >= first_valid_rvi + 3:
signal[i] = (rvi[i] + 2*rvi[i-1] + 2*rvi[i-2] + rvi[i-3]) / 6
OUTPUT: rvi[], signal[] — oscillate around zero
EDGE CASES:
- sum_denom == 0 (all bars identical high/low): rvi = 0 (neutral)
- Fewer than (3 + period) bars: NaN for rvi; additional 3 bars for signal
- NaN in any OHLC: propagate NaN for that bar and subsequent calculations
- Flat market (open == close for all bars): rvi = 0 continuously
Section 6: Parameters & Optimization
Standard Conventions
| Period | Use Case | Signal Frequency |
|---|---|---|
| 5 | Scalping — faster response | High noise on Signal crossovers |
| 10 | Standard — default | Balanced for daily and 4H |
| 14 | Matches RSI default period | Useful for direct comparison setups |
| 20 | Weekly position trading | Very smooth, low frequency |
Parameter Impact
| Change | Effect | When to Apply |
|---|---|---|
| Lower period (< 10) | More crossovers, more false signals | Only in strongly trending intraday markets |
| Higher period (> 10) | Slower, more reliable zero-line crosses | Position trading, weekly timeframes |
| Comparison with MACD | RVI uses open-close; MACD uses close-close | When you want to measure bar quality vs. price direction |
How does RVI differ from MACD if both show momentum?
MACD measures the spread between two exponential moving averages of closing price — it captures where close is relative to its own recent history. RVI measures the ratio of (close minus open) to (high minus low) — it captures the quality or vigor of each individual bar. MACD answers: is price trending? RVI answers: are the bars in that trend strong and directional? A strong uptrend on MACD with weak RVI (bars closing near their open even as price drifts up) signals a low-conviction trend that may be near its end.
Why does RVI need OHLC when RSI only needs close?
RSI's formula compares today's close to yesterday's close — it only needs two data points per bar. RVI's formula compares today's close to today's open (close-open relationship), then normalizes by the bar's full range (high minus low). To capture the bar's internal structure, RVI needs all four price points. This is both its advantage (richer information) and its limitation (not applicable to close-only data series like mutual funds or some indices).
What does "institutional" difficulty mean for RVI?
The institutional difficulty rating reflects that RVI requires understanding of: (1) triangular weighting and why it differs from EMA or SMA weighting, (2) the two-component structure (numerator as vigor, denominator as normalization), (3) interpreting an oscillator around zero without bounded overbought/oversold levels, and (4) applying it only in markets with clear OHLC data. Beginners reaching for RVI before mastering RSI and MACD will misinterpret crossovers and misapply it to unsuitable markets.
Section 7: Synergies & Conflicts
| Works Well With | Avoid Combining With | |
|---|---|---|
| MACD | MACD captures close-to-close trend direction; RVI captures bar-by-bar vigor within that trend. Both positive = high-conviction entry. Divergence between them = caution. | — |
| ADX | ADX > 20 confirms that a trend exists — only trade RVI crossovers in trending conditions. ADX is a prerequisite filter, not a separate signal. | — |
| Candlestick patterns | RVI is the quantified version of candlestick analysis. When RVI signals align with a bullish engulfing or pin bar at support, both the pattern and the formula confirm the same underlying move. | — |
| Volume | Rising volume with positive RVI = institutional buying. High RVI with low volume = retail-driven move, lower conviction. | — |
| RSI | — | RSI measures close-to-close momentum. RVI measures open-to-close vigor. They are related but not identical — at trend extremes they can diverge from each other. Decide which framework you are trading and stick with it. |
| Stochastic | — | Stochastic measures range position; RVI measures bar vigor. They measure fundamentally different things. Using both simultaneously creates conflicting entry conditions without clear resolution logic. |
| Williams %R | — | Mathematically related to Stochastic — same conflict applies. RVI's philosophy (bar quality) is incompatible with range-position indicators (Stochastic, %R) as a dual-signal system. |
Section 8: Common Mistakes
| Mistake | Root Cause | Solution |
|---|---|---|
| Trading RVI crossovers in ranging markets | RVI generates random crossovers when bars have no directional bias | Require ADX(14) > 20 before acting on any RVI crossover signal |
| Applying RVI to close-only data | RVI formula requires all four OHLC prices | Only use RVI on instruments with full OHLC data — stocks, forex, futures, crypto. Not applicable to close-only series. |
| Treating RVI like a 0-100 oscillator | RVI oscillates around zero without fixed bounds | There are no overbought/oversold levels. Use zero-line position and Signal crossovers — not extreme level triggers. |
| Using short period (< 10) in noisy markets | Too many false crossovers from noise | Use period 10-14 as minimum. Filter with ADX. Accept fewer, higher-quality signals. |
| Ignoring the Signal line and using RVI alone | RVI without Signal is like MACD without the Signal line — raw, noisy | Always plot both RVI and Signal. Crossovers between them are the actionable events, not RVI alone. |
Section 9: Cheat Sheet
USE WHEN: Trending market with ADX > 20, OHLC data available, looking for bar-vigor confirmation within trend
AVOID WHEN: Ranging market, close-only data, ADX < 20, first (period + 6) bars of chart data
ENTRY SIGNAL: RVI crosses above Signal while RVI is above zero (buy) / RVI crosses below Signal while RVI below zero (sell)
EXIT SIGNAL: RVI crosses back through Signal line / RVI crosses zero against position direction
PARAMETERS: Standard = period 10, 4-bar triangular Signal | Position = period 14-20
CONFLUENCE: MACD direction alignment + ADX(14) > 20 trend filter + Volume rising with crossover
RISK: Very noisy in ranging conditions — ADX filter is non-negotiable for this indicator
BEST TIMEFRAME: Daily and 4H for swing entries / Weekly for position trend confirmation