Trading Dev AcademyFree quant education

Free lesson · Technical analysis

Momentum indicators, oscillators and divergence

Open interactive lessonPractice calculationsExplore labs

Start with the idea

Momentum measures change. An oscillator expresses some aspect of recent movement on a chosen scale.

Symbols, units & horizon
  • C_t: completed current close
  • C_(t−n): positive close n bars earlier
  • ROC_t: decimal trailing rate of change
  • H_n,L_n: highest high and lowest low in the chosen trailing n-bar window, including the completed current bar
  • %K_t: stochastic range-location reading from 0 to 100 when range is positive

When and why to use this

Use momentum and oscillator readings as separate features, or build an explicitly timed divergence event detector.

  • Rate of change compares the current price with a prior price. It measures past movement, not a future return.
  • RSI compares smoothed gains and losses. MACD compares fast and slow EMAs; stochastic %K places the close within a trailing range. Read the indicator equations and initialization rules.
  • Overbought means a high reading under an indicator’s definition. A strong trend can remain overbought; it is not an automatic short signal.
  • Bullish regular divergence can mean a lower confirmed price low with a higher indicator low. Bearish regular divergence mirrors this at highs.
  • Hidden divergence uses different high/low comparisons and is commonly interpreted as continuation. Define its exact geometry instead of reusing a generic label.
  • Align price and indicator pivots by an explicit tolerance. Both must be confirmed before the divergence exists in the decision record.
  • Compare divergence against momentum alone and matched volatility/trend events. Many indicator settings and pivot pairings create multiple-testing risk.
ROCt=CtCt−n−1,%Kt=100Ct−LnHn−Ln
Specified chart rule · derivation and arithmetic

Momentum indicators, oscillators and divergence

  1. Price moving from 100 to 105 gives ROC=105/100−1=.05, or 5%.
  2. For C=105, trailing low=95 and high=110, close is 10 units above the low in a 15-unit range.
  3. Multiply 10/15 by 100 to obtain %K≈66.67. This is a range position, not a probability.
Work it by hand

A higher indicator low can accompany a lower price low, but confirmation comes later than the displayed price extremum.

Use the rule

  • Fix the definition, units and information timestamp.
  • Compute the example and inspect the graph.
  • Compare with a simple baseline on untouched periods after costs.

Before moving on

Write the exact rule, its availability time, an invalidation condition and a fair out-of-sample test.

Research checkpoint · reviewed 12 September 2026

  • Status: unreviewed arXiv preprint; empirical-design and limitations sections reviewed. Its own disclosure says no untouched holdout remains.
  • Scope: selected trend, oscillator, volume, candle and calendar rules. Examples include Russell 3000 volume data for 2007–2025 and a S&P 500 momentum comparison for 2000–2026; several other rows report only “full sample.”
  • The reported bootstrap resamples previously examined data. Cost assumptions are parameterized, and universes differ across rule families. These limits prevent treating the paper as a clean prospective comparison.
  • Use the methodological questions—material effect size, costs and uncertainty—to design a fresh test. Its scope excludes channel breakouts and wider chart formations; it cannot settle all topics in this module.

Darmanin · Retail Trader’s Ruin (July 2026 preprint) ↗

Python implementation

Self-contained teaching example. Python 3.10+; dependencies and input conventions are shown in the code and notation. Run in your own Python environment.

def momentum_oscillator(close,lagged_close,low,high):
    if lagged_close<=0 or high<=low or not low<=close<=high: raise ValueError("Valid positive lag and nonzero range required")
    return close/lagged_close-1,100*(close-low)/(high-low)

print(momentum_oscillator(105,100,95,110))

Continue learning

Technical Analysis: Geometry, Structure & Evidence — all lessons
  1. Support, resistance and reversal: start with a price zone
  2. Breakout detection, false breaks and retests
  3. Fibonacci retracements: anchors before ratios
  4. Harmonic patterns: ratio constraints and competing candidates
  5. Elliott Wave: count hypotheses, rules and invalidation
  6. Fair value gaps (FVG): three-bar geometry and fill measurement
  7. Heikin-Ashi: smoothed candles are synthetic prices
  8. Renko: price-driven bricks and the missing time axis
  9. Dynamic support, trend lines and Gann angles
  10. Momentum indicators, oscillators and divergence
  11. Volume, supply/demand zones and what OHLCV cannot reveal
  12. Market structure, BOS and CHOCH as a state machine
  13. Moon phases: encode a calendar hypothesis and try to falsify it

Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations