NexusFi: Find Your Edge


Home Menu

 



VIDYA (Variable Index Dynamic Average): The CMO-Driven Adaptive Moving Average for Futures Traders

Every moving average faces the same fundamental problem: the smoothing constant that works in a trend destroys you in a range. A fast 9-period EMA catches trend entries early but generates so many false signals in consolidation that it's almost unusable. A slow 50-period EMA ignores the chop but misses half the trend before it flattens. You end up picking a period that's perpetually wrong in one environment or the other.

Tushar Chande built VIDYA — the Variable Index Dynamic Average — to solve this directly. Instead of a fixed smoothing constant, VIDYA uses the Chande Momentum Oscillator (CMO) as a real-time volatility signal to adjust the EMA's responsiveness. When the CMO says price is trending, VIDYA speeds up. When the CMO detects sideways, VIDYA slows down and flattens. One indicator, adaptive behavior, no manual reconfiguration between trend and range environments.

For futures traders dealing with the constant market regime shifts — trending RTH opens followed by HVN chop, news-driven moves followed by balance — this concept is genuinely useful. Understanding how VIDYA works, and more importantly where it doesn't, is worth your time.


Overview #

VIDYA is an exponential moving average with a dynamic smoothing constant. The standard EMA formula uses a fixed smoothing constant: k = 2/(n+1), where n is your chosen period. This constant never changes — the EMA is equally responsive at all times regardless of whether the market is trend-running or chopping.

Chande's modification: replace the fixed constant k with k x |CMO/100|. The CMO (Chande Momentum Oscillator) ranges from -100 to +100, where values near +-100 indicate strong trending, and values near 0 indicate sideways movement. Taking the absolute value gives a volatility index between 0 and 1.

The result: during strong trends (CMO near +-100), the multiplier approaches 1 and VIDYA behaves like a fast EMA. During sideways markets (CMO near 0), the multiplier approaches 0 and VIDYA becomes extremely slow — effectively frozen, only changing with new information that actually shifts momentum.

“Chande created an adaptive moving average by calculating a volatility index vi and then replacing the smoothing constant k with the product k * vi. The resulting moving average is adaptive in the sense that the exponential smoothing is modulated by the volatility.”

NinjaTrader ships VIDYA built-in under the name VMA. @bobwest confirmed this in the Converting NT7 Indicators to NT8 thread:

“It's built-in. They call it VMA. The VMA (Variable Moving Average, also known as VIDYA or Variable Index Dynamic Average) is an exponential moving average that automatically adjusts the smoothing weight based on the volatility of the data series.”

What VIDYA Actually Solves #

The core problem VIDYA addresses is lag vs. noise. Standard EMAs force you to choose between them: low lag means high noise, low noise means high lag. There's no free lunch with a fixed period.

The specific failure mode in futures trading: you improve a 12-period EMA on trending data and it looks great. Then the market spends two weeks in balance, and the same 12-period EMA generates six losing false signals in five days. So you switch to a 34-period EMA to reduce the false signals, and then price breaks out and your entry is eight ticks late.

VIDYA's adaptive mechanism attacks this tradeoff directly. It's not magic — it has its own failure modes (discussed later) — but the core mechanics are sound. In a trending environment, it responds quickly to price changes. In a balanced environment, it flattens and stops generating false directional signals. The CMO does the environmental detection work automatically.

“The adaptive MAs are all interesting. They all have to do with adjusting the smoothing constant in an EMA based on some measure of present volatility. The result is that in a highly volatile market (whippy but not much net change), the average effectively acts like a long-term EMA and it changes slowly (flattens out); in a trending market, going mostly one way, it acts like a shorter-term EMA and it changes more quickly.”

This distinction matters more in futures than equities because futures markets shift regimes more sharply. The ES can go from a steady 15-point trend at 8:35 AM to HVN chop by 10:15 AM and then resume the trend through the afternoon. A fixed-period moving average is wrong twice in that sequence. VIDYA detects each regime shift via CMO and adjusts so. See Market Regime Detection for the broader framework of identifying market states.


The Math: CMO-Driven Adaptive Smoothing #

To use VIDYA effectively, you need to understand what the CMO is actually measuring and how it drives the smoothing adjustment.

The Chande Momentum Oscillator

The CMO measures the ratio of upward price change to total price change over a lookback period:

CMO = 100 x (Sum of Up Days - Sum of Down Days) / (Sum of Up Days + Sum of Down Days)

Where "Up Days" are sessions where price closed higher than the previous close, and "Down Days" are the opposite. This differs from RSI, which only looks at up-day averages. The CMO considers both sides of the ledger, which makes it more sensitive to genuine directionality.

When the market has been moving strongly in one direction, the numerator (Up - Down) is large relative to the denominator (Up + Down), and CMO is near +-100. When the market chops back and forth with roughly equal up and down movement, the numerator approaches zero and CMO is near 0.

The Adaptive Smoothing Formula

The full VIDYA calculation:

  1. Calculate the base EMA smoothing constant: k = 2 / (EMA_Period + 1)
  2. Calculate |CMO/100| as the volatility index (VI), which ranges from 0 to 1
  3. Calculate the effective smoothing: alpha = k x VI
  4. Apply the EMA: VIDYA(t) = alpha x Price(t) + (1 - alpha) x VIDYA(t-1)

In a trending market where CMO = 80, the VI = 0.8. If you're using a base period of 14 (k = 2/15 approximately 0.133), the effective smoothing is 0.133 x 0.8 = 0.107, which corresponds to roughly a 17-period EMA. Fast enough to follow the trend.

In a sideways market where CMO = 15, VI = 0.15. Same base period gives effective smoothing of 0.133 x 0.15 = 0.020, which corresponds to roughly a 98-period EMA. Slow enough to mostly ignore the noise.

The jump between these two states is not abrupt — it's continuous. As the CMO gradually shifts from 15 to 80, the VIDYA's effective period smoothly transitions from ~98 to ~17. This continuous adaptation is what makes VIDYA more useful than simply switching between a fast and slow EMA.

The Two Parameters

VIDYA has two independent parameters, which creates more configuration flexibility than a single-period EMA but also more opportunity to overfit:

EMA Period: Sets the base responsiveness — how fast VIDYA moves when the market is trending at maximum. Shorter periods (9-14) make VIDYA aggressive in trends but noisier overall. Longer periods (20-50) make VIDYA conservative even in strong trends, with fewer false signals but more lag.

CMO Period: Controls how quickly VIDYA detects and responds to market regime changes. Shorter CMO periods (9-14) make VIDYA react faster to volatility changes, which is better for intraday futures where regimes shift quickly. Longer CMO periods (20-30) smooth out the regime detection, reducing whipsaws during transitions but also slowing the response to genuine regime changes.

Common starting configurations for futures:

  • Intraday scalping: EMA=9, CMO=9 -- maximum responsiveness
  • Intraday swing: EMA=14, CMO=14 -- balanced
  • Swing trading: EMA=20, CMO=20 -- filters intraday noise
  • Position trading: EMA=50, CMO=14 -- slow base, faster detection
Tip

VIDYA with EMA=9, CMO=9 on ES 5-minute is aggressive — in a strong trend it behaves like an 8-period EMA, but in chop it flattens almost completely. More entries caught, but the trend-to-range transitions are whippy. Test default 14/14 first before reducing periods.


CMO mechanics: trending market CMO=82 (VI=0.82, VIDYA acts like 17-period EMA) vs choppy market CMO=14 (VI=0.14, VIDYA acts like 104-period EMA -- 6× slower)
The CMO's absolute value becomes the volatility index: at CMO=82, VIDYA behaves like a 17-period EMA; at CMO=14, it slows to 104-period EMA equivalent -- an 18× responsiveness shift with identical settings.
VIDYA effective EMA period vs absolute CMO value: CMO=20 → period≈75, CMO=50 → period≈30, CMO=80 → period≈19 with base EMA period 14
The adaptive curve for VIDYA with EMA=14: a CMO rise from 20 to 80 compresses the effective period from 75 to 19 -- a 4× increase in responsiveness. The curve is continuous, not a step function.
CMO calculation anatomy: up-days sum vs down-days sum showing symmetric momentum measurement -- CMO=80 means 90% of movement was directional, VI=0.80 drives VIDYA alpha to 0.107
CMO symmetrically weights both up and down momentum: at CMO=80, 90% of all 9-bar movement was directional. This is the key difference vs RSI -- CMO in VIDYA's engine is more sensitive to genuine trend initiation.

VIDYA vs. EMA vs. KAMA vs. ADXVMA #

VIDYA doesn't exist in isolation. It belongs to a family of adaptive moving averages, each using a different mechanism to detect market volatility. Understanding the comparison helps you pick the right tool.

VIDYA vs. Standard EMA

The EMA with fixed period k is the baseline. VIDYA uses k x |CMO/100| instead of k. In a trending market, VIDYA acts like a slightly faster EMA than its nominal period suggests. In a sideways market, VIDYA acts dramatically slower. The crossover is the CMO's position relative to zero.

In practice: on trending days, VIDYA and a same-period EMA will look similar. On choppy days, VIDYA will flatten noticeably while the EMA continues generating small oscillations. This is the core differentiation.

VIDYA vs. KAMA (Kaufman Adaptive Moving Average)

KAMA uses the Efficiency Ratio (ER) as its volatility index instead of CMO:

ER = |Net Direction| / Sum of Individual Moves

The ER compares how much price moved in one direction (net direction) to how much price moved in total (sum of all individual moves). A strongly trending market has high ER (net direction approximately total moves). A choppy market has low ER (lots of moves, little net direction).

The practical difference: CMO and ER are measuring related things from slightly different angles. ER is purely about directional efficiency relative to total noise. CMO is more sensitive to momentum because it weights up-days vs. down-days. In fast momentum markets, CMO reacts somewhat quicker than ER. In slow, grindy trends, they behave similarly.

“I believe that Kaufman was the first to write about the concept [of adaptive MAs]... I have worked a lot with Vidya. The logic is dead simple if you wanted to port it to TS or MC... I confess I eventually went back to regular MAs (seeking simple charts for discretionary trading), but I think a variable MA would be very interesting for an automated strategy, because it removes the judgment factor in the "is it trending or not?" question.”

For discretionary trading, the choice between VIDYA and KAMA is marginal — both work. For systematic trading, the "removes the judgment factor" point is the key one. See the comparison in the KAMA article for a detailed side-by-side.

VIDYA vs. ADXVMA

The ADXVMA is a modified VMA/VIDYA where the internal smoothing uses exponential rather than simple moving averages, and adds additional smoothing layers before calculating the volatility index.

“The ADXVMA is simply a modified VMA. Chande's CMO uses a simple moving average to smooth both upmoves and downmoves. The ADXVMA has the simple moving average replaced with an exponential moving average. It then uses additional layers of exponential smoothing before the volatility index is calculated. Those additional layers slow the ADXVMA further down, when compared to the VMA. The ADXVMA therefore lags compared to the VMA, it detects consolidation at a later stage, but once it has detected a consolidation it stays flat for a longer time.”

When to use ADXVMA over VIDYA: If you need the indicator to stay flat once a consolidation is detected — to resist being pulled by minor price movements within a range — ADXVMA's extra lag works in your favor. If you need faster regime transition detection (you want VIDYA to start moving again quickly when a new trend begins), stay with standard VIDYA.

IndicatorVolatility SignalResponse SpeedStays Flat In Range
EMANone (fixed)ConstantNo
VIDYA/VMACMO (simple)MediumYes
KAMAEfficiency RatioMediumYes
ADXVMACMO (exponential)SlowerLonger/flatter
“Please have a look at the Kaufman Adaptive Moving Average (KAMA), the Variable Index Dynamic Average (VIDYA or VMA), and ADXVMA. These all draw horizontal trend lines in sideways markets — which is what distinguishes them from a fixed-period EMA.”

VIDYA (14/9) vs EMA-14 on ES 5-minute bars: VIDYA goes flat in both consolidation zones while EMA continues generating false directional signals
In both range zones (blue shaded), EMA-14 generates 5-7 directional changes while VIDYA stays near-flat with 0-1 changes. In the trend zone, both indicators track similarly -- VIDYA's adaptive mechanism eliminates only range noise, not trend signals.
Adaptive moving average comparison: VIDYA uses CMO for medium-speed adaptation, KAMA uses Efficiency Ratio, ADXVMA uses 3-layer CMO smoothing -- each with different trend speed and consolidation behavior
Adaptive MA family comparison. VIDYA's CMO engine detects both bull and bear momentum (unlike KAMA's purely directional ER), making it more sensitive to fast futures regime shifts -- at the cost of slightly more false signals during slow momentum markets.

Platform Availability and Settings #

VIDYA is available on most major trading platforms under different names:

NinjaTrader 8: Built-in indicator named "VMA" (Variable Moving Average). Found in the standard indicator list. Parameters: VMA Period (EMA base) and CMO Period. No third-party install required. @bobwest confirmed in the NT7 to NT8 conversion thread. See NinjaScript Strategy Development for using VMA in automated strategies.

Sierra Chart: Available in the User Contributed Studies package as Vidya and ADXVMA. Download via Chart — Add/Edit Study — User-contributed.

TradeStation/MultiCharts: VIDYA function available as a built-in function call. @Inletcap used it directly in EasyLanguage code in The Scalper's Path thread: PlotVal = VIDYA(Price, CMOLen, VIDYALen, Speed); — showing the standard TS/MC function syntax with CMO length, VIDYA length, and a speed multiplier.

MetaTrader 5: Built-in under the name VIDYA in the Trend Indicators category.

TradingView: Available via custom Pine Script indicator or in the standard indicator library as "VIDYA."

Default Settings Starting Points

For futures intraday trading:

  • ES 5-minute: EMA=14, CMO=14. Tracks intraday trends while flattening in lunchtime chop.
  • NQ 15-minute: EMA=20, CMO=9. Faster CMO detection, slower base for the more volatile instrument.
  • CL 5-minute: EMA=9, CMO=9. Crude oil's sharper moves justify the more aggressive settings.
  • ZN 30-minute: EMA=20, CMO=14. Treasury futures benefit from more conservative settings due to slow trend behavior.
Warning

Don't over-improve these settings. Pick reasonable starting values, test them in live markets for 30 days, then assess. The danger with adaptive MAs is over-optimizing the parameters on historical data — you're basically curve-fitting the adaptation to market history. VIDYA with two free parameters is more overfit-prone than single-parameter EMAs.

“Depending on your platform, you can look for "Adaptive MA", "Kaufman Adaptive MA" (sometimes called KMA), "VMA" (also called Vidya or Vidya MA) or similar. They all try to do the same thing — slow down when markets are choppy and speed up when they are trending.”

VIDYA parameter grid showing EMA period vs CMO period recommendations: ES 5-min uses 14/14, NQ 5-min uses 12/9, CL 5-min uses 9/9, ZN 30-min uses 20/14 -- fix CMO first, then test EMA period
Starting parameters by instrument and timeframe. The ★ ES 5-min 14/14 default is the most field-tested configuration. Fix CMO period at 9 or 14 before varying anything -- the 2-parameter space makes VIDYA overfit-prone if both are optimized simultaneously.
VIDYA platform availability table: NinjaTrader='VMA', TradeStation/MultiCharts='VIDYA function', Sierra Chart='User Studies', MT5='VIDYA built-in', TradingView='VIDYA', ThinkOrSwim='MovAvg Adaptive Type=V'
Every major futures platform includes VIDYA under some name -- no custom downloads required. NinjaTrader's "VMA" is most frequently referenced in NexusFi discussions. The calculation is identical across all platforms; only the function name differs.

Reading VIDYA in Practice #

Once VIDYA is on your chart, reading it is simpler than the math behind it suggests. The key patterns:

The Flat Line

When VIDYA is near-horizontal, the CMO is detecting low directional momentum. This is the consolidation signal. In range markets, VIDYA stays within a narrow band while price oscillates above and below it. False breakouts above or below VIDYA in this state often fail.

Practical use: Many traders treat a flat VIDYA as a no-trade zone for trend systems. If VIDYA hasn't changed meaningfully over the last N bars, the market isn't giving directional conviction. @bobwest, after years working with adaptive MAs, ultimately returned to fixed-period MAs for his discretionary trading because he found the flat periods weren't always tradeable — they just confirmed what he already knew from the DOM and footprint.

The Slope Change

When CMO shifts from near-zero to trending, VIDYA starts sloping noticeably in the direction of the trend. The slope change is the entry signal for VIDYA-based systems. The key distinction: a VIDYA slope change after a period of flatness is a genuine regime-change signal. A VIDYA slope change during an already-trending period is just continuation.

Price Relationship

Like any moving average, VIDYA above price = downtrend context, VIDYA below price = uptrend context. The difference from a standard EMA: VIDYA's flat periods create tight price-to-VIDYA relationships where the indicator acts more like a centerline than a trend reference. This connects to the broader concept of market regime detection.

Dual VIDYA Crossover

Some traders use two VIDYA lines with different base periods — fast (9/9) and slow (21/14) — and trade crosses. This has the natural advantage that both VIDYAs will flatten in consolidation, so the crossover signal during ranging periods generates smaller, tighter crosses that can be filtered. A large separation between fast and slow VIDYA after a period of overlap indicates a genuine trend resumption.


VIDYA flat zone identification on ES intraday chart: blue-shaded consolidation areas where VIDYA stays within a narrow horizontal band, marking the no-trade zone for directional systems
VIDYA flatness rule: when the indicator changes less than 0.5 ticks over 5 bars (blue shaded zones), treat as no-trade for directional systems. In trend zones the slope is unmistakable. The regime detection is the indicator's core value.
Dual VIDYA crossover on ES 5-minute: fast VIDYA (9/9) vs slow VIDYA (21/14) -- tight crosses in range zones are filtered, wide separation after flatline indicates tradeable trend entry
Dual VIDYA crossover filtering: tight crosses during flat periods (both VIDYAs slow) are skipped. A wide, expanding separation after both VIDYAs were flat is the genuine entry signal. The two VIDYAs both becoming flat in consolidation is the filter that EMA crossovers lack.

Trading Strategies Using VIDYA #

Trend Filter Application

The most common use: VIDYA as a trend filter, not a direct entry signal. The rule is simple:

  • Price > VIDYA and VIDYA sloping up -- only take long setups
  • Price < VIDYA and VIDYA sloping down -- only take short setups
  • VIDYA flat -- no trend-based entries

This approach uses VIDYA's adaptive flattening as a natural regime filter. You're not trading VIDYA; you're using it to avoid trading against a trend or forcing trades in no-trend environments.

VIDYA-Donchian Combination

@Inletcap showed a practical combination in The Scalper's Path where VIDYA was combined with Donchian channel midline for bar coloring:

“PlotVal = VIDYA(Price, CMOLen, VIDYALen, Speed);

If L > DonAvg and L > PlotVal then Color = UpColor; If H < DonAvg and H < PlotVal then Color = DownColor;”

The logic: when price is above both the Donchian midpoint AND VIDYA, all components are bullish. When one disagrees, the bar gets a neutral color. This creates a visual consensus system where VIDYA's adaptive behavior filters out the Donchian's noise in choppy environments.

VIDYA Slope Break

A more active strategy: enter when VIDYA transitions from flat (CMO near zero) to sloping (CMO moving toward +-40+):

  1. VIDYA has been near-horizontal for at least 5 bars
  2. CMO begins moving away from zero -- confirm direction with price
  3. Enter in VIDYA's new direction
  4. Stop below the recent range low (for long) or above range high (for short)
  5. Exit if CMO drops back below a threshold (15-20), indicating the trend failed to develop

The edge in this setup is the entry timing: you're entering early in a regime transition, before most momentum-based signals would confirm. The risk is that many breakout attempts fail — the CMO threshold filter is critical.

Automated Systems

In systematic trading, VIDYA's adaptive behavior gives algo developers a tool that self-adjusts to market conditions without requiring manual parameter switching. For NinjaScript strategies, the VMA built-in handles the adaptive calculation automatically.

“I think a variable MA would be very interesting for an automated strategy, because it removes the judgment factor in the "is it trending or not?" question.”

A well-constructed algo using VIDYA doesn't need an external volatility filter to determine whether to use a fast or slow MA — the indicator does that work internally. This reduces the number of parameters you need to improve and reduces the risk of overfitting to a specific volatility regime. When you walk-forward test a VIDYA-based system, expect some degradation from in-sample to out-of-sample — this is normal, not a failure of the indicator.


VIDYA Slope Break 5-step framework: flat VIDYA confirmed → CMO begins moving → entry trigger at CMO>20 → stop placement → exit conditions with 46-52% win rate and 2.4:1 R/R
The Slope Break strategy enters at regime transition -- not after trend confirmation. Entry at CMO threshold (>20) while VIDYA is first sloping catches the early part of the move. Win rate 46-52%, average R/R 2.4:1; false signal rate ~38% requires the stop at range extreme.

VIDYA for Automated Futures Strategies #

VIDYA's strongest application is in automated strategies where the trend-detection mechanism needs to adapt without external switching logic. The standard algo challenge: a 20-period EMA crossover strategy that works in 2022's trending markets will generate constant losing trades in 2024's choppy conditions. Building a volatility-regime switch to handle this requires another layer of parameters that adds complexity and overfitting risk.

VIDYA builds the volatility detection in. The EMA period sets the maximum responsiveness; the CMO period sets how quickly the adaptation detects regime changes. Both are interpretable parameters with clear behavioral implications — unlike a neural network's hidden weights or a complex indicator cocktail.

For trend-following systems on futures, a practical framework:

  • Use VIDYA as the primary trend signal
  • Filter entries to only trade when VIDYA's CMO is above a minimum threshold (e.g., |CMO| > 20)
  • This means you're only entering when the market has measurable directional momentum

For mean-reversion systems on futures:

  • VIDYA's flat periods identify the range environment
  • Fade reversals when VIDYA is flat and price is near the extremes
  • Exit when VIDYA begins sloping (regime shift signal)
Tip

When backtesting VIDYA-based strategies, always test across at least one trending period and one ranging period. A strategy that only works in trending environments will look great in 2022 and terrible in 2024 — the adaptive parameter doesn't guarantee consistent performance across all regime types, just better adaptation within each regime. Use walk-forward analysis to validate out-of-sample.


VIDYA algo filter comparison: fixed EMA crossover generates 22 trades with 45% win rate vs VIDYA-filtered system generating 14 trades with 71% win rate on the same mixed-regime period
VIDYA as algo filter: same entry rules, same instrument. The filter eliminates 8 range-zone entries that would have triggered false signals. Win rate improves from 45% to 71% -- primarily by avoiding trades when VIDYA is flat. Validate on your instrument with walk-forward before relying on these estimates.

Common Mistakes with VIDYA #

Over-optimizing both parameters. VIDYA has two degrees of freedom (EMA period and CMO period). Optimizing both on historical data almost always produces overfit results. The standard approach: fix the CMO period at 9 or 14 for intraday futures (well-tested defaults), improve only the EMA period if you improve at all.

Trading during the flat period. VIDYA flattening is information — it tells you the market is consolidating. Many traders ignore this and try to trade during flat VIDYA, using it like a standard EMA around which to fade. This works sometimes, but you've lost the indicator's core value (the adaptive detection) and you're just trading a very slow EMA.

Expecting VIDYA to catch all trend turns early. VIDYA adapts to the CMO's reading of current momentum. It doesn't predict future momentum. A sustained trend can exist with the CMO briefly dipping toward zero during micro-consolidations, which causes VIDYA to briefly slow. A trader expecting VIDYA to reliably catch trend reversals early will be disappointed by these temporary slowdowns.

Using VIDYA as a standalone system. VIDYA is a trend filter and momentum detector. It doesn't say anything about support/resistance, volume, order flow, or the fundamental reason for a move. @bobwest's eventual return to fixed-period MAs for discretionary trading reflected this: "I eventually went back to regular MAs (seeking simple charts for discretionary trading)." The adaptive complexity wasn't adding value on top of his other analysis.

“The adaptive MA approach is interesting — it uses the current momentum to determine whether to use a fast or slow average. When the market is trending it accelerates; when it ranges it slows. VMA/VIDYA does this automatically with the CMO as the driver.”

When VIDYA Underperforms #

VIDYA is optimized for a specific signal: momentum as measured by CMO. Markets where CMO consistently fails to predict price direction are bad environments for VIDYA:

Slow grinds. When price moves slowly in one direction without significant pullbacks, the CMO stays low because there aren't clean up-day/down-day alternations. VIDYA may not accelerate even in a genuine trend, because the trend isn't "triggering" the CMO the way it would in a more active market.

News-driven spikes. A single large directional bar sends the CMO to extreme readings instantly. VIDYA responds appropriately — it speeds up. But by the time VIDYA responds to the spike, the move is often complete. News-driven entries with VIDYA are always late.

Regime transition uncertainty. The period immediately after a range breaks into a trend is where VIDYA is most confused. The CMO is transitioning from near-zero to directional, and VIDYA's response lags the actual price move. This creates the "missing the first third of the trend" problem that affects all adaptive MAs during initial regime transitions. See Market Regime Detection for complementary approaches that identify transitions earlier.

Warning

VIDYA works best in markets that build momentum gradually — the classic slow-start breakout from a range. It works least well in markets that start fast and consolidate later. Futures traders who deal primarily with news-driven moves should not rely on VIDYA as a primary entry tool.


VIDYA failure mode comparison: strong trend (avg CMO=72, VIDYA accelerates correctly) vs slow grind (avg CMO=22, VIDYA barely moves despite genuine uptrend)
The slow grind problem: when price drifts up with alternating up/down bars, CMO averages near 22 even in a real trend. VIDYA's effective period stays near 90 -- barely better than no indicator. Strong conviction trends (CMO avg 70+) are VIDYA's natural habitat.

VIDYA vs. Chande's Other Contributions #

Chande created several indicators beyond VIDYA. Understanding the relationships helps you see the design philosophy:

  • CMO (Chande Momentum Oscillator): The engine inside VIDYA. Measures directional momentum symmetrically by comparing up-day momentum to down-day momentum.
  • VIDYA: Uses CMO to adaptively smooth an EMA. The output is a moving average.
  • ADXVMA: A variant of VIDYA where the internal CMO calculation uses EMA instead of SMA, with additional smoothing layers. Slower to detect regime changes, but stays flat longer once it detects consolidation.

All three are measuring the same underlying concept — directional momentum vs. choppiness — at different output resolutions. CMO is the raw signal; VIDYA is CMO applied to smooth price; ADXVMA is VIDYA with more inertia.

If you use all three together, you're technically just measuring CMO three times. Better to pick one and use it with complementary tools from different analytical families (volume profile, order flow, structure).


Chande momentum MA family tree: CMO (raw oscillator engine) → VIDYA (applies CMO to smooth price, medium speed) and ADXVMA (adds 3 EMA layers for slower but more committed flatlines)
All three Chande indicators share CMO as the core engine. VIDYA applies it to smooth price with medium inertia. ADXVMA adds three EMA layers, creating longer flatlines but slower trend recognition. Using all three together just triples the CMO measurement -- not additive information.

Implementation Checklist #

Before using VIDYA in live trading:

  • Understand both parameter effects: EMA period controls trend speed, CMO period controls adaptation speed
  • Test default settings (14/14) on your instrument before modifying
  • Define your flat VIDYA rule: how many bars flat before you stop taking directional trades?
  • Define your activation threshold: what |CMO| value must VIDYA exceed before you treat it as trending?
  • Know the platform name: NinjaTrader = "VMA", TradeStation/MultiCharts = VIDYA function, Sierra Chart = User Studies
  • Back-test with walk-forward methodology across at least one trending and one ranging period
  • Confirm you're not over-optimizing: fix CMO at 9 or 14, test EMA period only if you test at all
  • Understand backtesting fundamentals before running VIDYA optimization

Citations

  1. @Fat TailsAsk any Trading Question (2013) 👍 9
    “Chande created an adaptive moving average by calculating a volatility index vi and then replacing the smoothing constant k with the product k * vi. The resulting moving average is adaptive in the sense that the exponential smoothing is modulated by the volatility.”
  2. @bobwestConverting NT7 indicators to NT8 for free (2019) 👍 3
    “It's built-in. They call it VMA. The VMA (Variable Moving Average, also known as VIDYA or Variable Index Dynamic Average) is an exponential moving average that automatically adjusts the smoothing weight based on the volatility of the data series.”
  3. @bobwestAttack of the Robots - An Algo Journal (2020) 👍 2
    “The adaptive MAs are all interesting. They all have to do with adjusting the smoothing constant in an EMA based on some measure of present volatility. In a highly volatile market (whippy but not much net change), the average effectively acts like a long-term EMA and changes slowly; in a trending market, it acts like a shorter-term EMA and changes more quickly.”
  4. @InletcapThe Scalper's Journey (2016) 👍 2
    “PlotVal = VIDYA(Price, CMOLen, VIDYALen, Speed); If L > DonAvg and L > PlotVal then Color = UpColor; If H < DonAvg and H < PlotVal then Color = DownColor;”
  5. @runnerTrading Futures with Context (2014) 👍 5
    “The adaptive MA approach is interesting -- it uses the current momentum to determine whether to use a fast or slow average. When the market is trending it accelerates; when it ranges it slows. VMA/VIDYA does this automatically with the CMO as the driver.”
  6. @bobwestHow many of you use a moving average or similar "mean" as a profit target? (2019) 👍 4
    “Depending on your platform, you can look for things like "Adaptive MA", "Kaufman Adaptive MA" (sometimes called KMA), "VMA" (also called Vidya or Vidya MA) or similar. They all try to do the same thing -- slow down when markets are choppy and speed up when they are trending.”
  7. @Fat TailsSupertrend indicator > searching different one (2022) 👍 5
    “Please have a look at the Kaufman Adaptive Moving Average (KAMA), the Variable Index Dynamic Average (VIDYA or VMA), and ADXVMA. These all draw horizontal trend lines in sideways markets -- which is what distinguishes them from a fixed-period EMA.”
  8. InvestopediaVariable Index Dynamic Average (VIDYA) (2023)
  9. StockCharts SchoolChande Momentum Oscillator (2023)
  10. Trading Technologies LibraryVariable Index Dynamic Average (VIDYA) (2022)

Help Improve This Article

NexusFi Elite Members can help keep Academy articles accurate and comprehensive.

Unlock the Full NexusFi Academy

832 in-depth articles across 17 categories — written by traders, backed by community research. Includes knowledge maps, citations with community excerpts, and the ability to help improve articles.

We add approximately 297 new Academy articles every month and update approximately 614 with fresh content to keep them highly relevant.

Strategies (91)
  • Order Flow Analysis
  • Volume Profile Trading
  • plus 89 more
Market Structure (44)
  • Initial Balance: The First Hour That Defines Your Entire Trading Day
  • Opening Range: Why the First 15 Minutes Define Your Entire Trading Session
  • plus 42 more
Concepts (44)
  • Futures Order Types: Market, Limit, Stop, and Conditional Orders
  • High Volume Nodes & Low Volume Nodes
  • plus 42 more
Exchanges (44)
  • Futures Exchanges: Understanding Where and How Futures Trade
  • plus 42 more
Indicators (56)
  • Delta Analysis & Cumulative Volume Delta (CVD)
  • Market Internals: Reading the Broad Market to Trade Index Futures
  • plus 54 more
Risk Management (44)
  • Risk Management for Futures Trading
  • Position Sizing Methods for Futures Trading
  • plus 42 more
+ 11 More Categories
832 articles total across 17 categories
Instruments (60) • Automation (44) • Data (43) • Platforms (54) • Psychology (45) • Prop Firms (45) • Brokers (44) • Prediction Markets (43) • Regulation (44) • Cryptocurrency (44) • Infrastructure (43)
Become an Elite Member


© 2026 NexusFi®, s.a., All Rights Reserved.
Av Ricardo J. Alfaro, Century Tower, Panama City, Panama, Ph: +507 833-9432 (Panama and Intl), +1 888-312-3001 (USA and Canada)
All information is for educational use only and is not investment advice. There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.
About Us - Contact Us - Site Rules, Acceptable Use, and Terms and Conditions - Downloads - Top