How it works
The Relative Vigor Index compares the body of each bar with its full range. Its premise is a candlestick reader's intuition expressed arithmetically: in a market with conviction, prices open near one end of the bar and close near the other, so the body occupies most of the range. In an indecisive market the close drifts back toward the open and the body is a small fraction of a range full of wicks. RVI turns that ratio into a continuous series.
The construction is a ratio of two smoothed quantities: a smoothed close-minus-open in the numerator, and a smoothed high-minus-low in the denominator. Both are first passed through a short symmetrically-weighted average that emphasises the middle bars, which reduces the influence of a single odd bar, and both are then averaged over the main lookback. The result is centred on zero: positive means bodies have been predominantly bullish relative to their ranges, negative means predominantly bearish.
The signal line is where most of the practical use lies. It is the same symmetric weighting applied to the RVI series itself, effectively a short lag of the main line, so crossovers happen quickly. Traders read a cross of RVI above its signal line as vigour turning up, and the cross below as vigour turning down, in exactly the way a MACD signal cross is read — but based on the anatomy of the bars rather than on the distance between two averages of price.
It fills a niche the other momentum tools do not cover. RSI, Stochastic and CCI all work from closes or from range position; none of them see whether a bar opened low and closed high or the other way around. That makes RVI a genuinely different input rather than a rearrangement of the same information, and it is why it is often paired with a range-position oscillator rather than substituted for one.
The obvious caveat is that it depends entirely on the open being meaningful. In markets that trade around the clock the open is just wherever the clock ticked over and body-versus-range carries less information than it does in a session-based market with a real auction at each end. On cash equities and futures with defined sessions it is on much firmer ground.
Calculation
The arithmetic in words, in the order it happens.
For each bar form two symmetrically weighted four-bar sums: numerator a = [(close - open) + 2 x (close - open) one bar ago + 2 x (close - open) two bars ago + (close - open) three bars ago] / 6, and denominator b = [(high - low) + 2 x (high - low) one bar ago + 2 x (high - low) two bars ago + (high - low) three bars ago] / 6. Then RVI = the N-period simple moving average of a divided by the N-period simple moving average of b, with N conventionally 10. The signal line applies the same 1-2-2-1 weighting to the RVI series itself: signal = [RVI + 2 x RVI one bar ago + 2 x RVI two bars ago + RVI three bars ago] / 6. The line oscillates around zero and is not bounded to a fixed range, though in practice it stays well inside ±1.
Source
An AlgoBeamScript implementation of the formula above, written by us from the arithmetic so the code and the calculation agree line for line.
Runs unchanged on the platform and in the AlgoBeamTS runtime. The language reference is in the documentation.
Inputs
Defaults are the values most charting packages ship with. They are conventions, not optimal settings — the right length depends on your instrument and your holding period.
| Input | Default | What it changes |
|---|---|---|
| Length | 10 | Bars in the moving averages of the numerator and denominator. Shorter settings track individual bars closely and cross the signal line frequently; longer settings smooth out single sessions and turn RVI into a slow swing measure. |
| Signal smoothing | 4 (1-2-2-1 weighted) | Weighting applied to the RVI series to produce the trigger line. Most implementations fix this at the classic four-bar symmetric weights; where it is exposed, widening it produces fewer and later crossovers. |
How to read it
What practitioners take from the plot. Read these as descriptions of market state, not as entry signals.
- RVI crossing above its signal line
- Bodies are turning bullish relative to their ranges faster than the recent average. The standard long trigger and the reason the indicator has a signal line at all.
- RVI crossing below its signal line
- Closes are finishing lower within their bars than they have been. The mirror short trigger.
- RVI above zero and rising
- Sustained bullish conviction: bars are consistently opening low and closing high, which is what a real advance looks like at the bar level.
- RVI hovering near zero
- Bodies are small relative to ranges — lots of wick, little resolution. An indecisive market where crossover signals should be discounted.
- Divergence against price at a swing extreme
- Price made a new extreme but the bars producing it had weak bodies. A useful nuance that pure close-based oscillators cannot see.
Limitations
Where this indicator misleads. None of these are fixed by a better parameter.
- It depends on the open carrying meaning. In continuously traded markets the open is an arbitrary timestamp and the body-to-range ratio loses much of its interpretive value.
- The denominator is a range, so in extremely quiet conditions it becomes small and the ratio becomes unstable, exaggerating trivial bar-level differences.
- It is smoothed in two places and therefore lags; the signal-line cross typically arrives after a range-position oscillator has already turned.
- In choppy markets with alternating bullish and bearish bodies the line crosses its signal constantly, and the resulting trade stream is dominated by costs.
Educational reference. This page explains how an indicator is built and how it is commonly read. It is not investment advice, not a recommendation and not a signal service. No indicator is profitable on its own — each is a way of describing a market, and any rule built on one has to be tested with realistic costs before it is traded.