Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

QuantWave 🌊

High-performance, Polars-native Technical Analysis for Rust.

QuantWave is a modern technical analysis library built from the ground up for the Polars ecosystem. It bridges the gap between high-speed batch backtesting and real-time streaming execution by ensuring bit-identical results across both modes.

Whether you are performing quantitative research over terabytes of historical data or deploying a live trading system on a tick-by-tick stream, QuantWave delivers industry-standard accuracy and extreme performance.

Design Philosophy

  1. Universal Indicator Pattern: Every indicator guarantees identical results for batch and streaming.
  2. Zero-Copy Performance: Native Polars plugins operate directly on Arrow memory buffers.
  3. Rigorous Validation: Every indicator is tested against industry gold-standard data (TradingView, MetaTrader) to ensure correctness.

Select an indicator from the sidebar to view its mathematical formula, parameters, and documentation.

Indicator Suite

The QuantWave indicator suite is divided into two primary categories to give you maximum flexibility and coverage:

  • Native Indicators: Highly optimized, modern indicators implemented natively in Rust. These include modern DSP suites, order flow tools, and advanced moving averages.
  • TA-Lib Wrappers: A comprehensive suite of 158 classic indicators wrapping the battle-tested ta-lib C library.

Every single indicator, regardless of its category, supports both live streaming (Next trait) and batch Polars processing (.ta() namespace).

Native Indicators

Native indicators in QuantWave are written entirely in safe, zero-cost Rust.

These algorithms are compiled as native Polars Expressions, allowing them to benefit from vectorized execution, multi-threading, and query optimization without serialization overhead.

Here you will find our implementations of algorithms like SuperTrend, WaveTrend, ALMA, and more.

ATR Trailing Stop

Classic volatility trend stop-loss atr classic

A trailing stop based on Average True Range to keep trades in a trend.

Usage

Use as a dynamic trailing stop that widens in volatile markets and tightens in calm ones, automatically adjusting stop distance to current market conditions.

Background

ATR Trailing Stop uses Average True Range to set a stop distance that scales with market volatility. During high-volatility regimes the stop moves further from price to avoid premature exit; during low-volatility regimes it tightens to lock in more profit. It is one of the most robust mechanical stop methods in systematic trading.

Parameters

  • period (default: 10): ATR period
  • multiplier (default: 3.0): ATR Multiplier

Formula

[ Stop = P_{high} - (Multiplier \times ATR) ]

Source

Absolute Price Oscillator (APO)

Classic trend momentum moving-average classic

Shows the absolute difference between two moving averages of different periods.

Usage

Use to identify trend crossovers and momentum. It is essentially a MACD without the signal line, showing the raw distance between fast and slow averages.

Background

The Absolute Price Oscillator (APO) is based on the difference between two exponential moving averages. It is a trend-following indicator that signals a change in direction when the fast EMA crosses the slow EMA, providing a clear visual of trend development. — TA-Lib Documentation

Parameters

  • fastperiod (default: 12): Fast period
  • slowperiod (default: 26): Slow period

Formula

[ APO = EMA(fast) - EMA(slow) ]

Source

Accumulation/Distribution Line (AD)

Classic volume momentum classic accumulation distribution

A volume-based indicator designed to measure the cumulative flow of money into and out of a security.

Usage

Use to confirm price trends or identify potential reversals through divergences. Rising AD confirms an uptrend; falling AD confirms a downtrend.

Background

Developed by Marc Chaikin, the AD line uses the relationship between price and volume to determine whether a security is being accumulated or distributed. It is calculated by multiplying the Money Flow Multiplier by the period’s volume and adding it to a cumulative total. — StockCharts ChartSchool

Formula

[ \text{MFM} = \frac{(Close - Low) - (High - Close)}{High - Low} \ \text{MFV} = \text{MFM} \times Volume \ AD_t = AD_{t-1} + \text{MFV} ]

Source

Anchored VWAP

Classic trend volume classic support-resistance

Volume Weighted Average Price anchored to a specific starting point.

Usage

Use as an intraday fair value benchmark. Institutional traders buy below VWAP and sell above it; breakouts above VWAP on heavy volume signal bullish institutional interest.

Background

Volume Weighted Average Price calculates the average price weighted by volume transacted at each level throughout the trading session. It serves as the primary execution benchmark for institutional orders — TWAP and VWAP algorithms are the two most common order execution strategies in equity markets. — Investopedia

Formula

[ VWAP = \frac{\sum (Price \times Volume)}{\sum Volume} ]

Source

Arnaud Legoux Moving Average

Classic moving-average smoothing low-latency adaptive

ALMA is designed to reduce lag while providing high smoothness.

Usage

Use as a low-latency moving average that reduces lag compared to EMA while controlling overshoot through the Gaussian offset parameter. Well-suited for momentum systems.

Background

The Arnaud Legoux Moving Average applies a Gaussian-shaped weight distribution offset toward the recent end of the lookback window. The sigma parameter controls weight spread and the offset parameter controls how far the Gaussian peak is positioned from the current bar, enabling a lag-accuracy trade-off unavailable in standard MAs.

Parameters

  • period (default: 9): Period
  • offset (default: 0.85): Offset
  • sigma (default: 6.0): Sigma

Formula

[ ALMA = \sum (W_i \times P_i) / \sum W_i ]

Source

Aroon Indicator

Classic trend classic breakout

An indicator system that identifies when a new trend is beginning and the strength of the trend.

Usage

Use to identify when a security is trending and when it is in a range-bound period. Aroon Up crossing above Aroon Down signals the start of a new uptrend.

Background

Developed by Tushar Chande in 1995, the Aroon indicator focuses on the time between highs and the time between lows over a given period. The idea is that strong uptrends will regularly see new highs, and strong downtrends will regularly see new lows. — StockCharts ChartSchool

Parameters

  • timeperiod (default: 25): Lookback period

Formula

[ \text{Aroon Up} = \frac{n - \text{Periods since n-period High}}{n} \times 100 ]

Source

Average Directional Index (ADX)

Classic trend volatility classic wilder

An indicator used to quantify trend strength without regard to trend direction.

Usage

Use to determine if the market is trending or ranging. ADX values above 25 indicate a strong trend, while values below 20 indicate a weak or non-trending market.

Background

Developed by J. Welles Wilder, the ADX is derived from two other indicators, also developed by Wilder: the Positive Directional Indicator (+DI) and the Negative Directional Indicator (-DI). While +DI and -DI indicate trend direction, ADX measures the strength of that trend. — StockCharts ChartSchool

Parameters

  • timeperiod (default: 14): Lookback period

Formula

[ ADX = 100 \times \frac{\text{EMA}(|(+DI) - (-DI)| / |(+DI) + (-DI)|, n)}{n} ]

Source

Average Price (AVGPRICE)

Classic price-transform classic smoothing

The simple average of the Open, High, Low, and Close prices for a given period.

Usage

Use as a smoothed price input for other indicators. It provides a more balanced view of the period’s price action than the Close price alone.

Background

Average Price is the arithmetic mean of the four key price points in a bar. In technical analysis, using Average Price instead of Close can help filter out erratic price spikes and provide a more stable foundation for trend-following algorithms. — TA-Lib Documentation

Formula

[ AVGPRICE = \frac{Open + High + Low + Close}{4} ]

Source

Average True Range

Classic volatility atr classic range

ATR represents the average of true ranges over a specified period.

Usage

Use as the foundational volatility module providing ATR, True Range, and related volatility measures used by higher-level indicators such as SuperTrend and Keltner Channels.

Background

Average True Range, developed by J. Welles Wilder in New Concepts in Technical Trading Systems (1978), measures the average of the true range over N bars. True Range accounts for overnight gaps by taking the maximum of: current high minus low, current high minus prior close, prior close minus current low. It remains the industry standard raw volatility measure.

Parameters

  • period (default: 14): Smoothing period

Formula

[ ATR = \frac{ATR_{t-1} \times (n-1) + TR_t}{n} ]

Source

Beta (BETA)

Classic statistics risk classic volatility

A measure of a security’s volatility in relation to the overall market.

Usage

Use to understand the systematic risk of an asset. A beta of 1.0 indicates the asset moves with the market; >1.0 means it is more volatile, and <1.0 means it is less volatile.

Background

Beta is a measure of the volatility—or systematic risk—of a security or portfolio compared to the market as a whole. It is used in the Capital Asset Pricing Model (CAPM) to calculate the expected return of an asset based on its beta and expected market returns. — Investopedia

Parameters

  • timeperiod (default: 30): Lookback period

Formula

[ \beta = \frac{\text{Cov}(R_i, R_m)}{\text{Var}(R_m)} ]

Source

Bill Williams Alligator

Classic trend moving-average classic williams

Trend-following indicator using three delayed smoothed moving averages.

Usage

Use to identify trend presence and direction. When the three Alligator lines are separated and fanning, the market is trending; when they converge or intertwine, the market is ranging.

Background

Bill Williams introduced the Alligator in Trading Chaos (1995) as three offset SMAs with periods 13, 8, and 5 and offsets of 8, 5, and 3 bars. The three lines represent the Jaw, Teeth, and Lips of the Alligator. When the Alligator is sleeping (lines intertwined) no trade is taken; when it wakes and opens its mouth a trend trade is entered. — StockCharts ChartSchool

Formula

[ \text{Jaw} = \text{SMMA}(13, 8), \text{Teeth} = \text{SMMA}(8, 5), \text{Lips} = \text{SMMA}(5, 3) ]

Source

Bill Williams Fractals

Classic pattern support-resistance classic williams

Fractals are indicators on candlestick charts that identify reversal points in the market.

Usage

Use to mark potential support and resistance levels at local price extremes. Williams Fractals are commonly combined with Alligator lines to filter valid fractal signals.

Background

Bill Williams introduced Fractals in Trading Chaos (1995) as a pattern-recognition tool identifying local price extremes. A bullish fractal is a bar whose low is lower than the two bars on either side; a bearish fractal is a bar whose high is higher than the two bars on either side. Combined with the Alligator indicator, fractals provide entry triggers. — StockCharts ChartSchool

Formula

[ \text{Up Fractal} = \text{High} > \text{High}_{t-1, t-2, t+1, t+2} ]

Source

Bollinger Bands

Classic volatility trend classic bands

A volatility indicator consisting of a middle SMA and two outer bands based on standard deviation.

Usage

Use to identify overbought/oversold levels and volatility breakouts. Prices near the upper band suggest overbought conditions, while prices near the lower band suggest oversold conditions. Narrowing bands (The Squeeze) often precede large price moves.

Background

Developed by John Bollinger in the 1980s, Bollinger Bands adapt to volatility by using standard deviation. The middle band is typically a 20-period SMA, and the outer bands are set 2 standard deviations away. This ensures that 95% of price action typically stays within the bands, making escapes highly significant. — BollingerOnBollingerBands.com

Parameters

  • timeperiod (default: 20): SMA period
  • nbdevup (default: 2.0): Upper deviation multiplier
  • nbdevdn (default: 2.0): Lower deviation multiplier

Formula

[ Middle = SMA(n) \ Upper = Middle + (k \times \sigma) \ Lower = Middle - (k \times \sigma) ]

Source

Chaikin Oscillator (ADOSC)

Classic volume oscillator momentum classic

An indicator that measures the momentum of the Accumulation/Distribution Line using the difference between two exponential moving averages.

Usage

Use to anticipate changes in the AD Line. Positive values indicate increasing buying pressure, while negative values indicate increasing selling pressure.

Background

Marc Chaikin developed this oscillator to identify momentum shifts in the AD Line. By applying EMAs of different lengths to the AD Line, it highlights changes in money flow before they become apparent in the cumulative total, providing an early warning system for trend exhaustion. — StockCharts ChartSchool

Parameters

  • fastperiod (default: 3): Fast EMA period
  • slowperiod (default: 10): Slow EMA period

Formula

[ ADOSC = EMA(AD, 3) - EMA(AD, 10) ]

Source

Chande Momentum Oscillator (CMO)

Classic momentum oscillator classic overbought oversold

An advanced momentum oscillator developed by Tushar Chande that measures the difference between up and down days.

Usage

Use to identify extreme overbought and oversold conditions. CMO is more sensitive to price action than RSI as it uses unsmoothed data in its internal calculations.

Background

Developed by Tushar Chande in 1994, the CMO is similar to the RSI but uses the net sum of up and down moves in both the numerator and denominator. This makes it more sensitive to price movements and useful for identifying short-term overextensions in the market. — The New Technical Trader

Parameters

  • timeperiod (default: 14): Lookback period

Formula

[ CMO = 100 \times \frac{S_u - S_d}{S_u + S_d} ]

Source

Commodity Channel Index (CCI)

Classic momentum oscillator classic mean-reversion

A versatile indicator that can be used to identify a new trend or warn of extreme conditions.

Usage

Use to identify cyclical turns in commodities or stocks. Readings above +100 imply a strong uptrend, while readings below -100 imply a strong downtrend.

Background

Developed by Donald Lambert in 1980, the CCI measures the current price level relative to an average price level over a given period. CCI is relatively high when prices are far above their average and relatively low when prices are far below their average. — StockCharts ChartSchool

Parameters

  • timeperiod (default: 14): Lookback period

Formula

[ CCI = \frac{Price - SMA}{0.015 \times \text{Mean Deviation}} ]

Source

Correlation Coefficient (CORREL)

Classic statistics correlation classic

A statistical measure that determines the degree to which two securities move in relation to each other.

Usage

Use to measure the strength and direction of the linear relationship between two assets. Values range from -1.0 (inverse correlation) to +1.0 (perfect correlation).

Background

The Pearson Correlation Coefficient measures the strength and direction of a linear relationship between two price series. It is a fundamental tool for pair trading and portfolio diversification, allowing traders to quantify how much of a security’s movement is explained by another. — StockCharts ChartSchool

Parameters

  • timeperiod (default: 30): Lookback period

Formula

[ \rho_{X,Y} = \frac{\text{cov}(X,Y)}{\sigma_X \sigma_Y} ]

Source

Donchian Channels

Classic breakout volatility trend classic support-resistance

Donchian Channels are volatility indicators formed by taking the highest high and the lowest low of the last N periods.

Usage

Use for breakout trading systems: a close above the N-period high signals a long entry; below the N-period low signals a short entry. The Turtle Traders famously used 20 and 55-day Donchian channels.

Background

Developed by Richard Donchian in the 1970s, Donchian Channels plot the highest high and lowest low over N bars. They define the current trading range and signal breakouts when price escapes the channel. The Turtle Trading system of Richard Dennis built its entire entry and exit logic on 20 and 55-day Donchian channels. — TurtleTrader.com

Parameters

  • period (default: 20): Channel period

Formula

[ UC = \max(H_{t-n \dots t}) \ LC = \min(L_{t-n \dots t}) ]

Source

Double Exponential Moving Average (DEMA)

Classic moving-average smoothing lag-reduction classic

A fast-acting moving average that reduces lag by using two exponential moving averages.

Usage

Use as a replacement for EMA when faster signal generation is required without excessive noise. DEMA reacts more quickly to price changes than a standard EMA.

Background

Developed by Patrick Mulloy in 1994, DEMA provides a less-laggy alternative to traditional moving averages. It is calculated by taking a single EMA and then subtracting it from a double EMA of the same period. This effectively cancels out some of the lag inherent in the EMA calculation. — StockCharts ChartSchool

Parameters

  • timeperiod (default: 30): Smoothing period

Formula

[ DEMA = 2 \times EMA - EMA(EMA) ]

Source

Exponential Moving Average

Classic moving-average smoothing classic ema

The Exponential Moving Average gives more weight to recent prices.

Usage

Use as the foundational smoothing module providing SMA, EMA, WMA, and SMMA implementations that power higher-level indicators across the library.

Background

The core smoothing algorithms — SMA, EMA, WMA — are the building blocks of nearly all technical indicators. EMA applies exponential decay weighting (alpha = 2/(n+1)), SMA applies uniform weighting over N bars, and WMA applies linearly increasing weights emphasizing more recent bars.

Parameters

  • period (default: 14): Smoothing period

Formula

[ EMA = P_t \times \alpha + EMA_{t-1} \times (1 - \alpha) ]

Source

Heikin-Ashi

Classic trend candlestick smoothing classic visualization

Heikin-Ashi candles filter market noise to reveal the underlying trend.

Usage

Use to smooth candlestick charts and reduce noise for trend identification. Two or more consecutive same-colored HA candles with no lower/upper wicks confirm a strong trend.

Background

Heikin-Ashi candles, developed by Munehisa Homma in the 18th century, use averaged OHLC values to produce smoother candles that better represent the prevailing trend. Each HA bar open equals the midpoint of the previous HA bar, while close equals the OHLC average, creating continuity that raw candles lack. — StockCharts ChartSchool

Formula

[ HA_{Close} = \frac{O + H + L + C}{4} \ HA_{Open} = \frac{HA_{Open, t-1} + HA_{Close, t-1}}{2} ]

Source

Hull Moving Average

Classic moving-average low-lag smoothing classic

The Hull Moving Average (HMA) aims to reduce lag while maintaining smoothness.

Usage

Use as a near-zero-lag moving average for trend-following systems where entry timing is critical. The HMA substantially reduces the lag of a same-period WMA.

Background

Alan Hull designed the Hull Moving Average to nearly eliminate lag while maintaining smoothness. It achieves this by computing a WMA of doubled period, subtracting a WMA of full period, then applying a final WMA to the difference over the square-root period, combining speed with noise reduction. — AlanHull.com

Parameters

  • period (default: 14): Smoothing period

Formula

[ HMA = WMA(2 \times WMA(\frac{n}{2}) - WMA(n), \sqrt{n}) ]

Source

Ichimoku Cloud

Classic trend support-resistance classic japanese momentum

Ichimoku Kinko Hyo is a comprehensive indicator that defines support and resistance, identifies trend direction, gauges momentum and provides trading signals.

Usage

Use as a complete trend system providing support, resistance, momentum, and cloud-based bias in a single indicator. The Kumo cloud thickness indicates trend strength.

Background

Ichimoku Kinko Hyo was developed by Goichi Hosoda in the 1960s. The system comprises five components: Tenkan-sen (9-period midpoint), Kijun-sen (26-period midpoint), Senkou Span A and B (cloud), and Chikou Span (lagged close). Price above the cloud is bullish; the cloud thickness quantifies the strength of support or resistance. — Ichimoku Charts, Nicole Elliott

Parameters

  • tenkan_period (default: 9): Tenkan-sen period
  • kijun_period (default: 26): Kijun-sen period
  • senkou_span_b_period (default: 52): Senkou Span B period

Formula

[ \text{Tenkan-sen} = \frac{\text{Highest High} + \text{Lowest Low}}{2} \text{ for past 9 periods} ]

Source

KAMA

Classic moving-average adaptive smoothing classic

Kaufman’s Adaptive Moving Average adjusts its sensitivity based on market volatility.

Usage

Use as an adaptive moving average that is fast in trending markets and slow in choppy, sideways conditions. Reduces whipsaws that plague fixed-period moving averages in ranging markets.

Background

Perry Kaufman designed KAMA using an Efficiency Ratio that measures how directionally price has moved versus total path length. A high ratio (strong trend) produces a fast-reacting EMA; a low ratio (choppy market) produces a near-flat line, dramatically reducing false signals during consolidation. — New Trading Systems and Methods, 4th ed.

Parameters

  • period (default: 10): Efficiency Ratio lookback period
  • fast_period (default: 2): Fastest smoothing period
  • slow_period (default: 30): Slowest smoothing period

Formula

[ ER = \frac{|Price - Price_{t-n}|}{\sum |Price - Price_{t-1}|} ] [ SC = [ER(FastSC - SlowSC) + SlowSC]^2 ] [ KAMA = KAMA_{t-1} + SC(Price - KAMA_{t-1}) ]

Source

Keltner Channels

Classic volatility trend breakout channels classic

Keltner Channels are volatility-based envelopes set above and below an exponential moving average.

Usage

Use as volatility-adjusted envelope bands around an EMA. When Keltner Channels contract inside Bollinger Bands (the Squeeze), a high-energy breakout move is typically imminent.

Background

Keltner Channels, updated by Linda Raschke in the 1980s from Chester Keltner original design, use ATR to set channel width around an EMA. Unlike Bollinger Bands which use standard deviation, ATR-based channels adapt to average bar range rather than statistical volatility, producing smoother and more stable channel boundaries. — StockCharts ChartSchool

Parameters

  • period (default: 20): EMA Period
  • multiplier (default: 2.0): ATR Multiplier

Formula

[ UC = EMA + (Multiplier \times ATR) ]

Source

Linear Regression

Classic statistics classic volatility trend

Linear Regression plots a straight line that best fits the data prices.

Usage

Use for statistical analysis of price series: linear regression, standard deviation, correlation coefficients, and other descriptive statistics used as indicator inputs.

Background

Standard statistical measures provide the mathematical foundation for many technical indicators. Linear regression finds the best-fit line through price, standard deviation quantifies dispersion, and correlation coefficients measure how closely two series move together — all are essential for quantitative strategy construction.

Parameters

  • period (default: 14): Period

Formula

[ y = a + bx ]

Source

Median Price (MEDPRICE)

Classic price-transform classic midpoint

The midpoint between the High and Low prices for a given period.

Usage

Use to identify the central tendency of a bar’s range. It is the basis for many oscillators and trend-following indicators like the Bill Williams Alligator.

Background

Median Price represents the 50% retracement level of the current period’s range. By focusing on the High-Low midpoint, it removes the ‘bias’ of the closing price, which can often be manipulated by end-of-day positioning. — TA-Lib Documentation

Formula

[ MEDPRICE = \frac{High + Low}{2} ]

Source

Momentum (MOM)

Classic momentum classic trend

A simple indicator that measures the amount that a security’s price has changed over a given span of time.

Usage

Use to measure the velocity of price changes. Positive values indicate an uptrend, while negative values indicate a downtrend.

Background

Momentum is one of the most basic and powerful concepts in technical analysis. It measures the rate of change of an asset’s price, providing a clear indication of trend strength and potential exhaustion before the actual price reversal occurs. — StockCharts ChartSchool

Parameters

  • timeperiod (default: 10): Lookback period

Formula

[ MOM = Price_t - Price_{t-n} ]

Source

Money Flow Index (MFI)

Classic momentum volume oscillator classic

A technical oscillator that uses price and volume data for identifying overbought or oversold signals.

Usage

Use as a volume-weighted RSI. Divergences between MFI and price can signal potential reversals, especially when the MFI is in extreme territory (>80 or <20).

Background

The Money Flow Index (MFI) is a momentum indicator that measures the inflow and outflow of money into an asset over a specific period of time. It is related to the RSI but incorporates volume, whereas the RSI only considers price. — Investopedia

Parameters

  • timeperiod (default: 14): Lookback period

Formula

[ \text{Money Ratio} = \frac{\text{Positive Money Flow}}{\text{Negative Money Flow}} \ MFI = 100 - \frac{100}{1 + \text{Money Ratio}} ]

Source

Moving Average Convergence Divergence (MACD)

Classic trend momentum moving-average classic

A trend-following momentum indicator that shows the relationship between two moving averages.

Usage

Use to identify trend direction and momentum. Crossovers of the MACD line and signal line provide entry and exit signals, while the histogram shows the strength of the trend.

Background

Gerald Appel developed the MACD in the late 1970s. It is calculated by subtracting the 26-period EMA from the 12-period EMA. A nine-day EMA of the MACD, called the ‘signal line,’ is then plotted on top of the MACD line, which can function as a trigger for buy and sell signals. — Investopedia

Parameters

  • fastperiod (default: 12): Fast EMA period
  • slowperiod (default: 26): Slow EMA period
  • signalperiod (default: 9): Signal EMA period

Formula

[ MACD = EMA(12) - EMA(26) \ Signal = EMA(MACD, 9) ]

Source

Normalized Average True Range (NATR)

Classic volatility atr normalization classic

A normalized version of ATR that represents volatility as a percentage of price.

Usage

Use to compare volatility across different securities with varying price levels. NATR allows for normalized risk assessment and position sizing.

Background

Normalized ATR (NATR) was developed to allow traders to compare the volatility of high-priced stocks with low-priced stocks. By dividing the ATR by the closing price and multiplying by 100, the result is a percentage that can be used consistently across all assets. — TA-Lib Documentation

Parameters

  • timeperiod (default: 14): Smoothing period

Formula

[ NATR = \frac{ATR(n)}{Close} \times 100 ]

Source

On-Balance Volume (OBV)

Classic volume momentum classic accumulation distribution

A momentum indicator that uses volume flow to predict changes in stock price.

Usage

Use to identify accumulation by institutions. When price is flat but OBV is rising, a breakout to the upside is likely. Conversely, when price is flat but OBV is falling, a breakdown is likely.

Background

Introduced by Joe Granville in his 1963 book ‘Granville’s New Key to Stock Market Profits’, OBV is one of the oldest and most respected volume indicators. It operates on the principle that volume precedes price, and that institutional money flow leaves a detectable trail in the volume data before the price move occurs. — StockCharts ChartSchool

Formula

[ OBV_t = OBV_{t-1} + \begin{cases} Volume & \text{if } Close_t > Close_{t-1} \ 0 & \text{if } Close_t = Close_{t-1} \ -Volume & \text{if } Close_t < Close_{t-1} \end{cases} ]

Source

Parabolic SAR

Classic trend classic stop-loss wilder

A trend-following indicator used to determine price direction and potential reversals.

Usage

Use for setting trailing stop losses and identifying trend reversals. Dots below price indicate an uptrend, while dots above price indicate a downtrend.

Background

Developed by J. Welles Wilder, the Parabolic Stop and Reverse (SAR) uses an acceleration factor that increases as the trend persists. This ‘parabolic’ nature allows the indicator to stay close to price action and provide timely exit signals when a trend exhausts. — StockCharts ChartSchool

Parameters

  • acceleration (default: 0.02): Acceleration factor
  • maximum (default: 0.2): Maximum acceleration

Formula

[ SAR_{t+1} = SAR_t + AF \times (EP - SAR_t) ]

Source

Percentage Price Oscillator (PPO)

Classic trend momentum moving-average classic normalization

A momentum oscillator that measures the difference between two moving averages as a percentage of the larger moving average.

Usage

Use to compare trend momentum across different securities with varying price levels. PPO is the percentage version of MACD.

Background

The Percentage Price Oscillator (PPO) is identical to the MACD, except that it measures the difference between two moving averages as a percentage. This allows for comparison across different stocks regardless of their price, making it a superior tool for relative strength analysis. — StockCharts ChartSchool

Parameters

  • fastperiod (default: 12): Fast period
  • slowperiod (default: 26): Slow period

Formula

[ PPO = \frac{EMA(12) - EMA(26)}{EMA(26)} \times 100 ]

Source

Pivot Points

Classic support-resistance classic levels pattern

Pivot Points are used to determine overall trend over different time frames.

Usage

Use to identify key daily, weekly, or monthly support and resistance levels calculated from the prior session OHLC. Pivot levels are widely watched by floor traders and algorithms alike.

Background

Traditional Pivot Points, widely used by floor traders, calculate a central pivot (P = (H+L+C)/3) plus support and resistance levels at fixed multiples of the prior session range. Because they are derived from universal OHLC data and widely published, they become self-fulfilling levels of institutional interest. — StockCharts ChartSchool

Formula

[ P = \frac{H + L + C}{3} ]

Source

Rate of Change (ROC)

Classic momentum classic oscillator

A momentum-based technical indicator that measures the percentage change in price between the current price and the price n periods ago.

Usage

Use to measure the speed at which price is changing. It is often used to identify overbought/oversold conditions and trend reversals.

Background

The Rate of Change (ROC) indicator is a pure momentum oscillator that measures the percentage change in price from one period to the next. It is highly effective at identifying the velocity of a move and anticipating when that velocity is slowing down. — StockCharts ChartSchool

Parameters

  • timeperiod (default: 10): Lookback period

Formula

[ ROC = \frac{Price_t - Price_{t-n}}{Price_{t-n}} \times 100 ]

Source

Relative Strength Index (RSI)

Classic momentum oscillator overbought oversold classic

A momentum oscillator that measures the speed and change of price movements.

Usage

Use to identify overbought (>70) and oversold (<30) conditions. RSI divergences against price often signal impending trend reversals.

Background

Developed by J. Welles Wilder in New Concepts in Technical Trading Systems (1978), the RSI compares the magnitude of recent gains to recent losses to determine overbought and oversold conditions of an asset. It remains the most widely used momentum oscillator in modern technical analysis.

Parameters

  • timeperiod (default: 14): Lookback period

Formula

[ RS = \frac{Average Gain}{Average Loss} \ RSI = 100 - \frac{100}{1 + RS} ]

Source

Simple Moving Average

Classic moving-average smoothing classic ema

The Simple Moving Average calculates the unweighted mean of the previous N data points.

Usage

Use as the foundational smoothing module providing SMA, EMA, WMA, and SMMA implementations that power higher-level indicators across the library.

Background

The core smoothing algorithms — SMA, EMA, WMA — are the building blocks of nearly all technical indicators. EMA applies exponential decay weighting (alpha = 2/(n+1)), SMA applies uniform weighting over N bars, and WMA applies linearly increasing weights emphasizing more recent bars.

Parameters

  • period (default: 14): Smoothing period

Formula

[ SMA = \frac{1}{n} \sum_{i=1}^{n} P_i ]

Source

Standard Deviation

Classic statistics classic volatility trend

Standard Deviation is a statistical measure of market volatility.

Usage

Use for statistical analysis of price series: linear regression, standard deviation, correlation coefficients, and other descriptive statistics used as indicator inputs.

Background

Standard statistical measures provide the mathematical foundation for many technical indicators. Linear regression finds the best-fit line through price, standard deviation quantifies dispersion, and correlation coefficients measure how closely two series move together — all are essential for quantitative strategy construction.

Parameters

  • period (default: 14): Period

Formula

[ \sigma = \sqrt{ \frac{\sum (x_i - \mu)^2}{N} } ]

Source

Stochastic Oscillator

Classic momentum oscillator overbought oversold classic

A momentum indicator comparing a particular closing price of a security to a range of its prices over a certain period of time.

Usage

Use to identify trend reversals by looking for crossovers and overbought/oversold levels. The %K and %D lines indicate when the momentum is shifting relative to the recent price range.

Background

George Lane developed the Stochastic Oscillator in the 1950s. It is based on the observation that in an uptrend, prices tend to close near their high, and in a downtrend, they tend to close near their low. The sensitivity of the oscillator to market movements is reducible by adjusting the time period or by taking a moving average of the result. — StockCharts ChartSchool

Parameters

  • fastk_period (default: 5): Fast %K period
  • slowk_period (default: 3): Slow %K period
  • slowd_period (default: 3): Slow %D period

Formula

[ %K = 100 \times \frac{C - L14}{H14 - L14} \ %D = 3\text{-period SMA of } %K ]

Source

SuperTrend

Classic trend atr stop-loss classic breakout

Trend-following indicator that combines ATR for volatility bands to identify the primary market direction.

Usage

Use as a primary trend-following indicator and dynamic stop-loss. A SuperTrend flip from bearish to bullish (or vice versa) provides a clear, rule-based entry and exit signal.

Background

SuperTrend computes upper and lower ATR-based bands around the midpoint of each bar. The active line flips from upper to lower (and vice versa) only when price closes beyond the band, providing a clean directional bias and a trailing stop level in one indicator. — TradingView Community

Parameters

  • period (default: 10): ATR length
  • multiplier (default: 3.0): ATR multiplier

Formula

[ \text{SuperTrend} = \begin{cases} \text{LowerBand} & \text{if trend is up} \ \text{UpperBand} & \text{if trend is down} \end{cases} ]

Source

TRIX

Classic momentum oscillator smoothing classic

A momentum oscillator that shows the percent rate of change of a triple exponentially smoothed moving average.

Usage

Use to filter out market noise and identify trend reversals. TRIX crossings of the zero line or a signal line can provide trade entries.

Background

Developed by Jack Hutson in the early 1980s, TRIX is a powerful momentum oscillator that effectively filters out minor price fluctuations. By triple-smoothing an EMA, it emphasizes the underlying trend and provides a clear signal when the trend changes direction. — StockCharts ChartSchool

Parameters

  • timeperiod (default: 15): Smoothing period

Formula

[ TRIX = \frac{EMA3_t - EMA3_{t-1}}{EMA3_{t-1}} \times 100 ]

Source

TTM Squeeze

Classic volatility momentum breakout squeeze classic

TTM Squeeze measures the relationship between Bollinger Bands and Keltner Channels to identify volatility consolidations.

Usage

Use to identify periods of compressed volatility (Bollinger Bands inside Keltner Channels) followed by high-energy breakouts. The momentum histogram direction at squeeze release indicates trade direction.

Background

The TTM Squeeze, developed by John Carter, identifies market consolidation by detecting when Bollinger Bands contract inside Keltner Channels — a squeeze condition indicating coiling energy. When the bands expand back outside the Keltner Channels, the squeeze releases and a momentum histogram shows the expected breakout direction. — Mastering the Trade, John Carter

Parameters

  • bb_period (default: 20): Bollinger Bands Period
  • bb_mult (default: 2.0): Bollinger Bands Multiplier
  • kc_period (default: 20): Keltner Channel Period
  • kc_mult (default: 1.5): Keltner Channel Multiplier

Formula

[ \text{Squeeze} = BB_{width} < KC_{width} ]

Source

Tilson T3 Moving Average

Classic moving-average smoothing lag-reduction classic

A smooth, low-lag moving average that uses multiple exponential smoothing.

Usage

Use for trend following in noisy markets. T3 offers a superior balance between lag reduction and smoothness compared to DEMA or TEMA.

Background

Developed by Tim Tilson in 1998, the T3 moving average uses a ‘v-factor’ (volume factor) to control how much the indicator reacts to price changes. It is essentially a sextuple EMA smoothing process that provides a very smooth curve with remarkably little lag. — Technical Analysis of Stocks & Commodities

Parameters

  • timeperiod (default: 5): Smoothing period
  • v_factor (default: 0.7): Volume factor (0.0 to 1.0)

Formula

[ e1 = EMA(Price, n) \ e2 = EMA(e1, n) \ \dots \ e6 = EMA(e5, n) \ T3 = c1 \times e6 + c2 \times e5 + c3 \times e4 + c4 \times e3 ]

Source

Triangular Moving Average (TRIMA)

Classic moving-average smoothing classic

A double-smoothed simple moving average that gives more weight to the middle of the lookback period.

Usage

Use for extremely smooth trend identification. TRIMA is significantly smoother than a standard SMA but introduces more lag; it is ideal for identifying long-term cycles.

Background

The Triangular Moving Average is an SMA of an SMA. For a period N, it averages the values over N/2 periods twice. This results in a weight distribution that is triangular, peaking at the center of the window, making it very effective at filtering out high-frequency noise. — StockCharts ChartSchool

Parameters

  • timeperiod (default: 30): Smoothing period

Formula

[ TRIMA = SMA(SMA(Price, n/2), n/2) ]

Source

Triple Exponential Moving Average

Classic moving-average low-lag ema smoothing classic

TEMA reduces the lag of traditional EMAs.

Usage

Use to reduce the lag of a standard EMA by approximately two thirds. Drop-in replacement for EMA in trend-following systems where responsiveness is more important than smoothness.

Background

Patrick Mulloy introduced Triple EMA in Technical Analysis of Stocks and Commodities (1994) as a practical lag-reduction technique. TEMA = 3EMA - 3EMA(EMA) + EMA(EMA(EMA)), subtracting out two orders of the EMA lag while preserving most of the noise reduction.

Parameters

  • period (default: 14): Smoothing period

Formula

[ TEMA = (3 \times EMA_1) - (3 \times EMA_2) + EMA_3 ]

Source

True Range

Classic volatility atr classic range

True Range measures daily volatility.

Usage

Use as the foundational volatility module providing ATR, True Range, and related volatility measures used by higher-level indicators such as SuperTrend and Keltner Channels.

Background

Average True Range, developed by J. Welles Wilder in New Concepts in Technical Trading Systems (1978), measures the average of the true range over N bars. True Range accounts for overnight gaps by taking the maximum of: current high minus low, current high minus prior close, prior close minus current low. It remains the industry standard raw volatility measure.

Formula

[ TR = \max(H - L, |H - C_{t-1}|, |L - C_{t-1}|) ]

Source

Typical Price (TYPPRICE)

Classic price-transform classic

An average of the High, Low, and Close prices.

Usage

Use as the primary price input for the Money Flow Index (MFI) and Commodity Channel Index (CCI). It provides a representative price level for the entire bar.

Background

Typical Price is a simple average of the High, Low, and Close. It is widely used in indicators that measure the relationship between price and volume, as it offers a more comprehensive view of the day’s activity than the Close price alone. — StockCharts ChartSchool

Formula

[ TYPPRICE = \frac{High + Low + Close}{3} ]

Source

Ultimate Oscillator

Classic momentum oscillator classic multi-timeframe

A momentum oscillator designed to capture momentum across three different timeframes.

Usage

Use to avoid the pitfalls of oscillators that are limited to a single timeframe. Buy signals are generated when there is bullish divergence between price and the indicator.

Background

Developed by Larry Williams in 1976, the Ultimate Oscillator uses weighted averages of three different timeframes to reduce the volatility and false signals common in other oscillators. It remains a staple for identifying divergence across short, medium, and long-term price action. — StockCharts ChartSchool

Parameters

  • timeperiod1 (default: 7): Short period
  • timeperiod2 (default: 14): Medium period
  • timeperiod3 (default: 28): Long period

Formula

[ \text{BP} = \text{Close} - \min(\text{Low}, \text{PrevClose}) \ \text{TR} = \max(\text{High}, \text{PrevClose}) - \min(\text{Low}, \text{PrevClose}) ]

Source

Vortex Indicator

Classic trend momentum classic breakout

The Vortex Indicator helps identify the start of a new trend or the continuation of an existing one.

Usage

Use to detect the start of new trends. A Vortex Indicator crossover (VI+ crossing above VI-) signals the beginning of an uptrend; the reverse signals a downtrend.

Background

The Vortex Indicator, developed by Etienne Botes and Douglas Siepman (2010), is inspired by the vortex flow of water discovered by Viktor Schauberger. VI+ measures upward movement relative to the prior bar low; VI- measures downward movement relative to the prior bar high. Normalized by ATR, they produce two oscillating lines whose crossovers signal trend changes. — Technical Analysis of Stocks and Commodities, 2010

Parameters

  • period (default: 14): Period

Formula

[ VI+ = \frac{\sum VM+}{\sum TR} \ VI- = \frac{\sum VM-}{\sum TR} ]

Source

Weighted Close Price (WCLPRICE)

Classic price-transform classic weighted

An average of the High, Low, and Close prices, with double weight given to the Close price.

Usage

Use to emphasize the importance of the closing price while still accounting for the total range of the bar.

Background

Weighted Close Price gives additional significance to the Close, reflecting the widely held belief that the closing price is the most important data point in a trading session. It provides a more nuanced input for smoothing algorithms. — TA-Lib Documentation

Formula

[ WCLPRICE = \frac{High + Low + 2 \times Close}{4} ]

Source

Weighted Moving Average

Classic moving-average smoothing classic ema

The Weighted Moving Average assigns linearly decreasing weights.

Usage

Use as the foundational smoothing module providing SMA, EMA, WMA, and SMMA implementations that power higher-level indicators across the library.

Background

The core smoothing algorithms — SMA, EMA, WMA — are the building blocks of nearly all technical indicators. EMA applies exponential decay weighting (alpha = 2/(n+1)), SMA applies uniform weighting over N bars, and WMA applies linearly increasing weights emphasizing more recent bars.

Parameters

  • period (default: 14): Smoothing period

Formula

[ WMA = \frac{P_1 \times n + P_2 \times (n-1) + \dots}{n + (n-1) + \dots + 1} ]

Source

Williams %R

Classic momentum oscillator overbought oversold classic

A momentum indicator that measures overbought and oversold levels, similar to a stochastic oscillator.

Usage

Use to identify entry and exit points in the market. Readings from 0 to -20 are considered overbought, while readings from -80 to -100 are considered oversold.

Background

Developed by Larry Williams, %R compares the closing price of a stock to the high-low range over a specific period, typically 14 days. It is used to determine when a stock might be overbought or oversold and to identify potential trend reversals. — StockCharts ChartSchool

Parameters

  • timeperiod (default: 14): Lookback period

Formula

[ %R = \frac{\text{Highest High} - \text{Close}}{\text{Highest High} - \text{Lowest Low}} \times -100 ]

Source

Zero Lag Exponential Moving Average

Classic moving-average low-lag ema smoothing classic

ZLEMA attempts to eliminate the inherent lag associated with moving averages.

Usage

Use to reduce the lag of a standard EMA by approximately two thirds. Drop-in replacement for EMA in trend-following systems where responsiveness is more important than smoothness.

Background

Patrick Mulloy introduced Triple EMA in Technical Analysis of Stocks and Commodities (1994) as a practical lag-reduction technique. TEMA = 3EMA - 3EMA(EMA) + EMA(EMA(EMA)), subtracting out two orders of the EMA lag while preserving most of the noise reduction.

Parameters

  • period (default: 14): Smoothing period

Formula

[ ZLEMA = EMA(Price + (Price - Price_{t - (period - 1)/2})) ]

Source

AM Detector

Ehlers DSP cycle ehlers dsp amplitude frequency

Recovers market volatility from the amplitude-modulated whitened price spectrum.

Usage

Use to extract the instantaneous amplitude and frequency of market cycles. The AM output measures cycle energy for position sizing; the FM output tracks cycle period for adaptive indicator tuning.

Background

Ehlers adapts AM and FM demodulation techniques from radio engineering in Cycle Analytics for Traders to extract cycle amplitude and instantaneous frequency from market data. The amplitude envelope measures how energetic the current cycle is, while FM reveals whether the cycle period is expanding or contracting.

Parameters

  • highest_len (default: 4): Envelope lookback length
  • avg_len (default: 8): Smoothing length

Formula

[ Deriv = |Close - Open|, Envel = \max(Deriv, 4), Volatil = \text{Avg}(Envel, 8) ]

Source

BandPass

Ehlers DSP filter cycle ehlers dsp bandpass

A bandpass filter that isolates cycle components around a center period.

Usage

Apply to isolate a specific cycle period in price, filtering out both trend and noise. Use zero crossings of the filtered output as entry and exit signals.

Background

Ehlers presents the BandPass filter in Cybernetic Analysis as a second-order IIR filter centred on a target cycle period with tunable bandwidth. It simultaneously attenuates lower and higher frequencies, leaving only the desired cycle band in the output.

Parameters

  • period (default: 20): Center period of the passband
  • bandwidth (default: 0.1): Relative bandwidth (delta)

Formula

[ \beta = \cos(360/P), \gamma = 1/\cos(720\delta/P), \alpha = \gamma - \sqrt{\gamma^2 - 1} ] [ BP = 0.5(1 - \alpha)(Price - Price_{t-2}) + \beta(1 + \alpha)BP_{t-1} - \alpha BP_{t-2} ]

Source

Butterworth2

Ehlers DSP filter ehlers dsp smoothing low-pass

2-pole Butterworth low-pass filter.

Usage

Use to smooth price or intermediate indicator values with a flat passband and sharp rolloff. The 3-pole version provides steeper attenuation at the cost of marginally more lag.

Background

Butterworth filters are maximally flat in the passband, introducing no ripple. Ehlers implements 2-pole and 3-pole Butterworth IIR designs in Cycle Analytics for Traders, noting that the SuperSmoother is actually a critically-damped 2-pole Butterworth variant.

Parameters

  • period (default: 14): Critical period

Formula

[ a = \exp(-1.414\pi/P) ] [ b = 2a \cos(1.414\pi/P) ] [ f = bf_{t-1} - a^2f_{t-2} + \frac{1-b+a^2}{4}(g + 2g_{t-1} + g_{t-2}) ]

Source

Butterworth3

Ehlers DSP filter ehlers dsp smoothing low-pass

3-pole Butterworth low-pass filter.

Usage

Use to smooth price or intermediate indicator values with a flat passband and sharp rolloff. The 3-pole version provides steeper attenuation at the cost of marginally more lag.

Background

Butterworth filters are maximally flat in the passband, introducing no ripple. Ehlers implements 2-pole and 3-pole Butterworth IIR designs in Cycle Analytics for Traders, noting that the SuperSmoother is actually a critically-damped 2-pole Butterworth variant.

Parameters

  • period (default: 14): Critical period

Formula

[ a = \exp(-\pi/P) ] [ b = 2a \cos(1.738\pi/P) ] [ c = a^2 ] [ f = (b+c)f_{t-1} - (c+bc)f_{t-2} + c^2f_{t-3} + \frac{(1-b+c)(1-c)}{8}(g + 3g_{t-1} + 3g_{t-2} + g_{t-3}) ]

Source

Center of Gravity Oscillator

Ehlers DSP oscillator momentum ehlers dsp zero-lag

The CG Oscillator identifies price turning points with essentially zero lag by calculating the balance point of prices.

Usage

Use as a zero-lag momentum oscillator to detect cycle turning points. Crossovers of the trigger line provide high-accuracy entry and exit signals.

Background

Ehlers introduces the Center of Gravity oscillator in Cybernetic Analysis (2004) as a near-zero-lag indicator. It computes the center of mass of a price series over a lookback window, producing an oscillator whose turning points lead price turns — a reversal of the usual indicator lag relationship.

Parameters

  • period (default: 10): Observation window length

Formula

[ CG = -\frac{\sum_{i=0}^{N-1} (i+1) \times Price_i}{\sum_{i=0}^{N-1} Price_i} ]

Source

ChannelCycle

Ehlers DSP cycle ehlers dsp dominant-cycle

Extracts cyclic components and a leading function using channel-normalized bandpass filtering.

Usage

Use to estimate the dominant cycle period from the width of price channels. Useful as a simpler alternative to Hilbert Transform cycle measurement when computational resources are limited.

Background

Ehlers estimates the dominant cycle period by tracking successive peaks and troughs of price. The distance between turning points approximates half the cycle period, and smoothing this measurement across recent bars gives a stable period estimate for use in adaptive indicators.

Parameters

  • period (default: 20): Channel and Bandpass period

Formula

[ Detrended = \frac{Price - Low}{High - Low} - 0.5 ] [ BP = \text{Bandpass}(Detrended, Period) ] [ Leading = \frac{BP - BP_{t-1}}{2\pi/Period} ]

Source

Classic Laguerre Filter

Ehlers DSP filter ehlers dsp smoothing laguerre

The original Laguerre filter from John Ehlers’ 2002 ‘Time Warp’ paper.

Usage

Use when a smooth trend estimate with controllable lag using only 4 state variables is needed. Preferred over long EMAs when computational memory is constrained.

Background

The Classic Laguerre Filter uses four first-order IIR sections sharing the same gamma coefficient. In Cybernetic Analysis (2004) Ehlers shows gamma maps directly to an effective period, making it highly tunable with minimal computation.

Parameters

  • gamma (default: 0.8): Smoothing factor (0.0 to 1.0)

Formula

[ L_0 = (1 - \gamma) \cdot Price + \gamma \cdot L_{0,t-1} ] [ L_1 = -\gamma L_0 + L_{0,t-1} + \gamma L_{1,t-1} ] [ L_2 = -\gamma L_1 + L_{1,t-1} + \gamma L_{2,t-1} ] [ L_3 = -\gamma L_2 + L_{2,t-1} + \gamma L_{3,t-1} ] [ Filt = \frac{L_0 + 2L_1 + 2L_2 + L_3}{6} ]

Source

Continuation Index

Ehlers DSP trend momentum ehlers cycle

An oscillator that identifies trend onset and exhaustion by comparing a fast UltimateSmoother with a Generalized Laguerre filter.

Usage

Use to measure whether a price move is likely to continue or reverse based on cycle analysis. High index values suggest trend continuation; low values suggest an impending cycle turn.

Background

The Continuation Index measures the persistence of directional price movement relative to the dominant cycle. Ehlers derives it from the cycle phase velocity — when phase advances quickly in one direction, momentum is strong and continuation is likely; slow or reversing phase suggests the move is exhausting.

Parameters

  • gamma (default: 0.8): Laguerre gamma parameter
  • order (default: 8): Laguerre filter order
  • length (default: 40): Base smoothing length

Formula

[ US = UltimateSmoother(Close, Length/2) ] [ LG = Laguerre(Close, \gamma, Order, Length) ] [ Variance = SMA(|US - LG|, Length) ] [ Ref = 2 \times (US - LG) / Variance ] [ CI = \tanh(Ref) ]

Source

Correlation Trend

Ehlers DSP trend correlation ehlers statistics

Calculates the Pearson correlation between price and a linear time ramp to identify trends.

Usage

Use to confirm whether price is trending or cycling before applying directional strategies. High correlation indicates a strong trend; low correlation indicates a cycling market.

Background

In ‘Correlation As A Trend Indicator’ (2020), Ehlers uses the Pearson correlation coefficient between price and a linear ramp to identify trend strength. A coefficient near +1.0 indicates a consistent uptrend, while -1.0 indicates a consistent downtrend. Unlike standard moving averages, this approach is independent of price amplitude and focuses purely on the linearity of the move.

Parameters

  • length (default: 20): Correlation window length

Formula

[ X_i = Price_{t-i}, Y_i = -i ] [ R = \frac{n \sum X_i Y_i - \sum X_i \sum Y_i}{\sqrt{(n \sum X_i^2 - (\sum X_i)^2)(n \sum Y_i^2 - (\sum Y_i)^2)}} ]

Source

CorrelationCycle

Ehlers DSP cycle dominant-cycle ehlers dsp spectral

Determines cycle phase angle by correlating price with orthogonal sinusoids.

Usage

Use to measure the dominant cycle period via autocorrelation in an amplitude-independent way. Prefer over DFT methods when price amplitude varies significantly across the measurement window.

Background

Ehlers introduces Correlation Cycle measurement in Cycle Analytics for Traders (2013) as an improvement on DFT. By normalizing autocorrelation coefficients to unity variance, the resulting periodogram is independent of price amplitude variations, producing more consistent cycle period estimates.

Parameters

  • period (default: 20): Correlation wavelength

Formula

[ R = \text{Corr}(Price, \cos(2\pi n/P)), I = \text{Corr}(Price, -\sin(2\pi n/P)) ] [ \text{Angle} = 90 + \arctan(R/I) \text{ (with quadrant resolution)} ]

Source

Cyber Cycle

Ehlers DSP cycle oscillator ehlers dsp

An oscillator introduced by John Ehlers that models the cyclical component of a time series using FIR smoothing.

Usage

Use as a high-resolution short-term cycle oscillator to time entries and exits around cycle turns. Pair with a trend classifier to suppress signals in trending conditions.

Background

Ehlers introduces the Cyber Cycle in Cybernetic Analysis (2004) as a bandpass-like filter isolating the short-term cyclical component. The trigger line is the Cyber Cycle delayed by one bar, creating a clean crossover signal without derivative noise.

Parameters

  • length (default: 14): Alpha smoothing length parameter

Formula

[ \alpha = \frac{2}{\text{Length} + 1} ] [ \text{Smooth} = \frac{X_t + 2X_{t-1} + 2X_{t-2} + X_{t-3}}{6} ] [ CC_t = \left(1 - \frac{\alpha}{2}\right)^2 (\text{Smooth}t - 2\text{Smooth}{t-1} + \text{Smooth}{t-2}) + 2(1 - \alpha)CC{t-1} - (1 - \alpha)^2 CC_{t-2} ]

[Source](Cybernetic Analysis for Stocks and Futures, John Ehlers, 2004, Chapter 4)

CyberneticOscillator

Ehlers DSP oscillator ehlers dsp cycle momentum

Combined HighPass and SuperSmoother filters normalized by RMS.

Usage

Use as a generalized Ehlers cycle oscillator when you need a configurable bandpass response tuned to a specific dominant cycle period.

Background

The Cybernetic Oscillator is derived from the bandpass filter framework in Ehlers Cybernetic Analysis for Stocks and Futures (2004). By tuning the filter center frequency to the measured dominant cycle period, it extracts only the cyclical component and presents it as an oscillator ranging above and below zero.

Parameters

  • hp_length (default: 30): HighPass filter length
  • lp_length (default: 20): LowPass (SuperSmoother) length
  • rms_len (default: 100): RMS normalization length

Formula

[ HP = HighPass(Price, HPLen) ] [ LP = SuperSmoother(HP, LPLen) ] [ RMS = \sqrt{\frac{1}{N} \sum_{i=0}^{N-1} LP_{t-i}^2} ] [ CO = \frac{LP}{RMS} ]

Source

Cycle/Trend Analytics

Ehlers DSP cycle trend ehlers classification adaptive

A set of oscillators (Price - SMA) with lengths from 5 to 30 used to visualize cycles and trends.

Usage

Use to classify the current market mode as trending or cycling before selecting your strategy. Apply trend-following systems in trend mode and mean-reversion systems in cycle mode.

Background

Ehlers presents Cycle/Trend Analytics in Cycle Analytics for Traders as a framework for determining the dominant market mode. By measuring the correlation between price and the best-fit dominant cycle, the indicator classifies market behavior, enabling traders to switch between trend and cycle trading strategies dynamically.

Parameters

  • min_length (default: 5): Minimum SMA length
  • max_length (default: 30): Maximum SMA length

Formula

[ Osc(L) = Price - SMA(Price, L) \quad \text{for } L \in [min, max] ]

[Source](https://github.com/lavs9/quantwave/blob/main/references/traderstipsreference/TRADERS’ TIPS - OCTOBER 2021.html)

DMH

Ehlers DSP momentum oscillator ehlers high-pass dsp

An improved Directional Movement indicator using Hann windowing for smoother signals and reduced lag.

Usage

Use as a momentum oscillator with high-pass filtering to isolate cyclical momentum while removing the trend bias that corrupts standard momentum indicators.

Background

Ehlers constructs the DMH by applying a high-pass filter to the momentum calculation, removing the low-frequency trend component that causes conventional momentum to drift. The result is a zero-centered momentum oscillator that oscillates cleanly around the cycle midpoint.

Parameters

  • length (default: 14): Smoothing period

Formula

[ \text{PlusDM} = \text{High} - \text{High}{t-1} \text{ if } > (\text{Low}{t-1} - \text{Low}) \text{ and } > 0, \text{ else } 0 ] [ \text{MinusDM} = \text{Low}{t-1} - \text{Low} \text{ if } > (\text{High} - \text{High}{t-1}) \text{ and } > 0, \text{ else } 0 ] [ \text{EMA} = \frac{1}{L}(\text{PlusDM} - \text{MinusDM}) + (1 - \frac{1}{L})\text{EMA}{t-1} ] [ \text{DMH} = \frac{\sum{i=1}^{L} w_i \text{EMA}{t-i+1}}{\sum{i=1}^{L} w_i}, \text{ where } w_i = 1 - \cos\left(\frac{2\pi i}{L+1}\right) ]

Source

DSMA

Ehlers DSP moving-average adaptive ehlers dsp dominant-cycle

Deviation Scaled Moving Average adapts to price variations using standard deviation scaled oscillators.

Usage

Use as a highly adaptive moving average that tracks price closely during trends and large moves but provides heavy filtering during consolidation. Ideal for trend-following entries and trailing stops.

Background

In ‘The Deviation-Scaled Moving Average’ (2018), Ehlers introduces an adaptive EMA where the alpha (smoothing factor) is dynamically adjusted based on a deviation-scaled oscillator. By scaling the SuperSmoother-filtered momentum by its RMS, the indicator becomes reactive to significant price deviations while remaining smooth during low-volatility periods.

Parameters

  • period (default: 40): Critical period for smoothing and RMS calculation

Formula

[ Zeros = Close - Close_{t-2} ] [ Filt = c_1 \frac{Zeros + Zeros_{t-1}}{2} + c_2 Filt_{t-1} + c_3 Filt_{t-2} ] [ RMS = \sqrt{\frac{1}{P} \sum_{i=0}^{P-1} Filt_{t-i}^2} ] [ \alpha = \min\left(1.0, \left| \frac{Filt}{RMS} \right| \frac{5}{P}\right) ] [ DSMA = \alpha \cdot Close + (1 - \alpha) \cdot DSMA_{t-1} ]

Source

EMD

Ehlers DSP decomposition cycle spectral dsp

Empirical Mode Decomposition separates cycles from trends using bandpass filtering and identifies market modes via adaptive thresholds.

Usage

Use to decompose price into Intrinsic Mode Functions to separate cycles of different periods without any a priori period assumption. Useful for multi-timescale analysis.

Background

Empirical Mode Decomposition is a data-driven method developed by Huang et al. (1998) that decomposes a signal into Intrinsic Mode Functions by iteratively sifting local extrema. Unlike Fourier methods, it requires no predetermined basis functions, making it adaptive to non-stationary market data.

Parameters

  • period (default: 20): Bandpass center period
  • delta (default: 0.5): Bandwidth half-width
  • fraction (default: 0.1): Threshold multiplier for peaks/valleys

Formula

[ \beta = \cos\left(\frac{360}{P}\right), \gamma = \frac{1}{\cos\left(\frac{720\delta}{P}\right)}, \alpha = \gamma - \sqrt{\gamma^2 - 1} ] [ BP = 0.5(1 - \alpha)(Price - Price_{t-2}) + \beta(1 + \alpha)BP_{t-1} - \alpha BP_{t-2} ] [ Mean = \text{SMA}(BP, 2P) ] [ Threshold = \text{Fraction} \cdot \text{SMA}(\text{Peak/Valley}, 50) ]

Source

Ehlers Autocorrelation

Ehlers DSP cycle spectral ehlers dsp dominant-cycle

Computes Pearson correlation of smoothed price with its lags to identify market structure.

Usage

Use to generate an autocorrelation periodogram showing which cycle periods are currently dominant. Visualise as a heatmap to track cycle period shifts over time.

Background

Ehlers introduces autocorrelation-based cycle measurement in Cycle Analytics for Traders (2013) as a more robust alternative to DFT. By computing autocorrelation of Roofing-filtered price at each lag, then applying a spectral DFT to the lag series, he obtains a periodogram insensitive to amplitude variations.

Parameters

  • length (default: 20): Correlation window length
  • num_lags (default: 100): Number of lags to compute

Formula

[ \rho(lag) = \frac{N \sum X Y - \sum X \sum Y}{\sqrt{(N \sum X^2 - (\sum X)^2)(N \sum Y^2 - (\sum Y)^2)}} ]

[Source](https://github.com/lavs9/quantwave/blob/main/references/traderstipsreference/TRADERS’ TIPS - FEBRUARY 2025.html)

Ehlers Filter

Ehlers DSP filter ehlers dsp smoothing

A non-linear FIR filter using distance coefficients to adapt to price transitions while maintaining smoothness.

Usage

Use as a configurable digital filter from Ehlers DSP toolkit when you need a specific frequency response not covered by the standard smoother or Butterworth designs.

Background

The Ehlers Filter is a generalized IIR filter design drawn from Ehlers digital signal processing framework for markets. Its coefficients can be tuned to approximate different filter types (lowpass, highpass, bandpass), making it a flexible building block for custom indicator pipelines.

Parameters

  • length (default: 15): Filter window length

Formula

[ C_i = \sum_{j=1}^{L-1} (Price_{t-i} - Price_{t-i-j})^2 ] [ Filt = \frac{\sum_{i=0}^{L-1} C_i Price_{t-i}}{\sum_{i=0}^{L-1} C_i} ]

Source

Ehlers Loops

Ehlers DSP cycle phase ehlers dsp visualization

Converts price and volume into normalized standard deviation units for scatter plot analysis.

Usage

Use to visualize cycle dynamics in phase-space by plotting the indicator value against its derivative. Loop patterns reveal cycle turns before they appear in the price chart.

Background

Ehlers describes phase-space loops in Cybernetic Analysis as a powerful visualization technique where an indicator is plotted against its first derivative. In cycle mode the path traces elliptical loops; in trend mode the path collapses to a line, enabling visual market mode identification.

Parameters

  • lp_period (default: 20): Low-pass filter period (SuperSmoother)
  • hp_period (default: 125): High-pass filter period (Butterworth)

Formula

[ HP = c_1 (Price - 2 Price_{t-1} + Price_{t-2}) + c_2 HP_{t-1} + c_3 HP_{t-2} ] [ SS = s_1 \frac{HP + HP_{t-1}}{2} + s_2 SS_{t-1} + s_3 SS_{t-2} ] [ MS = \alpha SS^2 + (1 - \alpha) MS_{t-1} ] [ RMS = \frac{SS}{\sqrt{MS}} ]

Source

Ehlers Stochastic

Ehlers DSP oscillator stochastic ehlers cycle adaptive

A Stochastic oscillator applied to the output of a Roofing Filter to eliminate Spectral Dilation.

Usage

Use as a cycle-aware stochastic oscillator that adapts its lookback window to the current dominant cycle period rather than using a fixed period.

Background

Ehlers computes the stochastic oscillator using the measured dominant cycle period as the lookback window. This adaptive approach ensures the stochastic spans exactly one full market cycle, making overbought and oversold conditions consistently meaningful.

Parameters

  • hp_period (default: 48): HighPass critical period
  • ss_period (default: 10): SuperSmoother critical period
  • stoch_period (default: 20): Stochastic lookback period

Formula

[ Roof = RoofingFilter(HP, SS) ] [ Stoch = 100 \times \frac{Roof - \min(Roof, L)}{\max(Roof, L) - \min(Roof, L)} ]

[Source](https://github.com/lavs9/quantwave/blob/main/references/Ehlers%20Papers/Anticipating Turning Points.pdf)

EhlersUltimateOscillator

Ehlers DSP oscillator ehlers dsp momentum adaptive

A highly responsive oscillator created from the difference of two highpass filters, normalized by RMS.

Usage

Use as a multi-scale momentum oscillator that combines signals from multiple cycle-aware timeframes to reduce false signals from any single period.

Background

Ehlers Ultimate Oscillator combines the outputs of multiple cycle-synchronized oscillators operating at different dominant cycle harmonics. By averaging across scales, it reduces the likelihood of false signals that occur when any single oscillator is temporarily misaligned with the market cycle.

Parameters

  • band_edge (default: 20): Critical period (shorter period)
  • bandwidth (default: 2.0): Multiplier for the longer period

Formula

[ HP_1 = \text{HighPass}(Price, BandEdge \cdot Bandwidth) ] [ HP_2 = \text{HighPass}(Price, BandEdge) ] [ Signal = HP_1 - HP_2 ] [ UO = \frac{Signal}{RMS(Signal, 100)} ]

Source

FM Demodulator

Ehlers DSP cycle ehlers dsp amplitude frequency

Extracts market timing information by demodulating the frequency-modulated price spectrum.

Usage

Use to extract the instantaneous amplitude and frequency of market cycles. The AM output measures cycle energy for position sizing; the FM output tracks cycle period for adaptive indicator tuning.

Background

Ehlers adapts AM and FM demodulation techniques from radio engineering in Cycle Analytics for Traders to extract cycle amplitude and instantaneous frequency from market data. The amplitude envelope measures how energetic the current cycle is, while FM reveals whether the cycle period is expanding or contracting.

Parameters

  • period (default: 30): SuperSmoother period

Formula

[ Deriv = Close - Open, HL = \text{Clip}(10 \times Deriv, -1, 1) ] [ SS = c_1 \frac{HL + HL_{t-1}}{2} + c_2 SS_{t-1} + c_3 SS_{t-2} ]

Source

Fisher Transform

Ehlers DSP oscillator ehlers normalization momentum

Converts inputs to a nearly Gaussian probability distribution, creating sharp peaks at turning points.

Usage

Apply to normalized prices or oscillators to sharpen turning-point signals. The near-Gaussian output makes extreme values statistically significant and easy to trade.

Background

Ehlers introduces the Fisher Transform in Cybernetic Analysis (2004) to convert any bounded indicator into a Gaussian normal distribution. Values beyond ±1.5 signal statistically significant price extremes, sharper than raw oscillators.

Formula

[ Fish(x) = 0.5 \times \ln\left(\frac{1 + x}{1 - x}\right) = \text{atanh}(x) ]

Source

FisherHighPass

Ehlers DSP oscillator ehlers dsp high-pass momentum

Fisher Transform applied to normalized HighPass filtered prices.

Usage

Use to isolate high-frequency momentum from the cyclical component of price after trend removal. Provides a purer momentum signal than standard Fisher Transform applied to raw price.

Background

FisherHighPass applies the Fisher Transform to the high-pass filtered price rather than raw price. By first removing the low-frequency trend component with a high-pass filter, the resulting Fisher output captures only the cycle-domain momentum, producing an oscillator that is unaffected by the prevailing trend direction.

Parameters

  • hp_len (default: 20): HighPass filter length
  • norm_len (default: 20): Normalization lookback period

Formula

[ HP = \text{HighPass}(Price, hp_len) ] [ N = 2 \cdot \frac{HP - Low(HP, norm_len)}{High(HP, norm_len) - Low(HP, norm_len)} - 1 ] [ S = \frac{N + N_{t-1} + N_{t-2}}{3} ] [ Fisher = 0.5 \cdot \ln\left(\frac{1+S}{1-S}\right) ]

Source

FourierDominantCycle

Ehlers DSP cycle spectral ehlers dsp dominant-cycle fourier

Dominant cycle period estimation using resolution-enhanced DFT and center of gravity.

Usage

Use to compute the dominant market cycle period via DFT. Feed the output period into adaptive indicators like DSMA or Ehlers Stochastic to make them cycle-synchronized.

Background

Ehlers implements a Discrete Fourier Transform cycle measurement in Cybernetic Analysis using a Hann-windowed data segment. The DFT computes power across periods from 6 to 50 bars, and the peak power identifies the dominant cycle period driving price movement.

Parameters

  • window_len (default: 50): DFT window length

Formula

[ HP = \text{HighPass}(Price, 40) ] [ Cleaned = \frac{HP + 2HP_{t-1} + 3HP_{t-2} + 3HP_{t-3} + 2HP_{t-4} + HP_{t-5}}{12} ] [ Pwr(P) = \left(\sum_{n=0}^{W-1} Cleaned_{t-n} \cos\left(\frac{2\pi n}{P}\right)\right)^2 + \left(\sum_{n=0}^{W-1} Cleaned_{t-n} \sin\left(\frac{2\pi n}{P}\right)\right)^2 ] [ DB(P) = \min\left(20, -10 \log_{10}\left(\frac{0.01}{1 - 0.99 \frac{Pwr(P)}{\max(Pwr)}}\right)\right) ] [ DC = \frac{\sum_{P=8}^{50} P \cdot (3 - DB(P)) \text{ where } DB(P) < 3}{\sum (3 - DB(P))} ]

Source

FourierSeriesModel

Ehlers DSP cycle spectral ehlers prediction fourier

Synthesized market model using fundamental and harmonic frequency components.

Usage

Use to model price as a sum of sine wave harmonics for short-term prediction. Most effective in clearly cyclical markets; combine with a cycle mode detector to disable it in trends.

Background

The Fourier Series Model fits harmonically related sine waves to recent price history using least-squares coefficients. Ehlers shows that projecting this model one bar forward gives a price forecast useful for anticipatory entry timing at predicted cycle turns.

Parameters

  • fundamental (default: 20): Fundamental cycle period

Formula

[ BP_k = \text{BandPass}(Price, Fundamental/k) ] [ Q_k = \frac{Fundamental}{2\pi} (BP_{k} - BP_{k,t-1}) ] [ P_k = \sum_{n=0}^{F-1} (BP_{k,t-n}^2 + Q_{k,t-n}^2) ] [ Wave = BP_1 + \sqrt{P_2/P_1}BP_2 + \sqrt{P_3/P_1}BP_3 ]

Source

Fractal Adaptive Moving Average

Ehlers DSP moving-average adaptive fractal smoothing

An adaptive moving average that uses the fractal dimension of prices to dynamically change its smoothing constant.

Usage

Use as an adaptive moving average that slows dramatically during consolidation and speeds up during trending phases. Outperforms fixed-period MAs in ranging markets by avoiding false crossovers.

Background

The Fractal Adaptive Moving Average uses the fractal dimension of recent price action to adapt its smoothing constant. During trending markets the fractal dimension approaches 1 (a line) producing a fast-reacting EMA; during ranging markets the dimension approaches 2 (a plane) slowing the average dramatically to filter chop.

Parameters

  • length (default: 16): Length (must be an even number; odd values will be incremented by 1).

Formula

[ D = \frac{\log(N_1 + N_2) - \log(N_3)}{\log(2)} ] [ \alpha = \exp(-4.6 (D - 1)) ] [ \text{FRAMA}t = \alpha P_t + (1 - \alpha) \text{FRAMA}{t-1} ]

Source

GaussianFilter

Ehlers DSP filter smoothing ehlers dsp low-pass

Multi-pole Gaussian low-pass filter for reduced lag.

Usage

Use when smooth symmetric price averaging with near-zero phase shift is needed. Works well as a preprocessing step for spectral analysis indicators.

Background

Gaussian filters are the theoretically optimal lowpass filter for minimizing the product of time-domain duration and frequency-domain bandwidth. Ehlers implements them as cascaded pole filters with Gaussian-function-derived coefficients, achieving very smooth output with excellent stopband attenuation.

Parameters

  • period (default: 14): Critical period
  • poles (default: 4): Number of poles (1-4)

Formula

[ \alpha = -\beta + \sqrt{\beta^2 + 2\beta} ] [ \beta = \frac{1 - \cos(2\pi/P)}{2^{1/(2N)} - 1} ]

Source

Generalized Laguerre

Ehlers DSP filter ehlers dsp smoothing laguerre

A generalized Laguerre filter of arbitrary order using an UltimateSmoother as the primary component.

Usage

Use when the standard 4-element Laguerre filter needs further customization. The additional gamma2 parameter allows independent control of the pole spacing for more flexible frequency response shaping.

Background

The Generalized Laguerre Filter extends the classic 4-element Laguerre design with an additional parameter that controls the distribution of poles across the frequency spectrum. This gives finer control over the transition band slope and passband flatness, useful for specialized spectral analysis applications.

Parameters

  • length (default: 40): UltimateSmoother period
  • gamma (default: 0.8): Smoothing factor (0.0 to 1.0)
  • order (default: 8): Filter order (1 to 10)

Formula

[ LG_1 = UltimateSmoother(Price, Length) ] [ LG_i = -\gamma LG_{i-1,t-1} + LG_{i-1,t-1} + \gamma LG_{i,t-1} \text{ for } i=2 \dots Order ] [ Filter = \frac{1}{Order} \sum_{i=1}^{Order} LG_i ]

Source

GriffithsDominantCycle

Ehlers DSP cycle dominant-cycle ehlers dsp spectral

Dominant cycle estimation using Griffiths adaptive spectral analysis.

Usage

Use as a robust dominant cycle estimator less sensitive to amplitude changes than DFT-based methods, making it reliable across different market volatility regimes.

Background

The Griffiths method computes the dominant cycle by solving the real-roots of an autocorrelation polynomial. Adapted by Ehlers in Cycle Analytics for Traders, it remains stable even when market amplitude changes rapidly, unlike power-spectrum methods that can shift with volatility.

Parameters

  • lower_bound (default: 18): Lower period bound
  • upper_bound (default: 40): Upper period bound
  • length (default: 40): LMS filter length

Formula

[ Pwr(Period) = \frac{0.1}{(1-Real)^2 + Imag^2} ] [ Real = \sum coef_i \cos(2\pi i / Period) ] [ Imag = \sum coef_i \sin(2\pi i / Period) ]

Source

GriffithsPredictor

Ehlers DSP prediction cycle ehlers dsp

Adaptive LMS linear predictive filter for signal forecasting.

Usage

Use for short-horizon price prediction by projecting the dominant market cycle one or two bars forward. Works best in oscillating markets; disable in strong trends.

Background

The Griffiths Predictor uses autoregressive coefficients from the Griffiths cycle measurement to extrapolate the current dominant cycle one bar ahead. By fitting an AR model to cycle-filtered price, it generates a one-step-ahead forecast useful for anticipatory entries at predicted cycle turns.

Parameters

  • lower_bound (default: 18): Lower frequency bound (SS length)
  • upper_bound (default: 40): Upper frequency bound (HP length)
  • length (default: 18): LMS filter length
  • bars_fwd (default: 2): Number of bars to predict forward

Formula

[ \mu = 1/L ] [ \bar{x} = \sum_{i=1}^L xx_{L-i} \cdot coef_i ] [ coef_i = coef_i + \mu(xx_L - \bar{x})xx_{L-i} ]

Source

GriffithsSpectrum

Ehlers DSP spectrum cycle ehlers dsp periodogram

Normalized power spectrum estimation using Griffiths adaptive filters.

Usage

Use to generate a high-resolution periodogram for cycle analysis. Best visualized as a heatmap to identify and track multiple market cycles simultaneously.

Background

The Griffiths Spectrum is an adaptive spectral estimation method that provides higher resolution than a standard DFT for short data segments. It fits an all-pole model to the signal using an LMS algorithm, allowing for instantaneous frequency measurement without the windowing artifacts of FFT-based methods.

Parameters

  • lower_bound (default: 18): Lower period bound
  • upper_bound (default: 40): Upper period bound
  • length (default: 40): LMS filter length

Formula

[ Pwr(P) = \frac{0.1}{(1 - \sum coef_i \cos(2\pi i/P))^2 + (\sum coef_i \sin(2\pi i/P))^2} ] [ Pwr_{norm}(P) = \frac{Pwr(P)}{\max(Pwr)} ]

Source

HammingFilter

Ehlers DSP filter ehlers dsp windowing spectral

Hamming windowed FIR filter with pedestal.

Usage

Apply as a windowing function before DFT-based cycle detection to reduce sidelobe leakage and obtain cleaner dominant cycle estimates.

Background

The Hamming window is a raised-cosine weighting function that reduces spectral leakage by tapering the edges of a data block. Ehlers uses it in DFT-based cycle measurement tools to prevent energy in one frequency bin from contaminating adjacent bins, improving cycle period resolution.

Parameters

  • length (default: 20): Filter length
  • pedestal (default: 10.0): Pedestal in degrees

Formula

[ Deg(n) = Pedestal + (180 - 2 \times Pedestal) \times \frac{n}{L-1} ] [ Coef(n) = \sin\left(\frac{Deg(n) \times \pi}{180}\right) ] [ Filt = \frac{\sum_{n=0}^{L-1} Coef(n) \cdot Price_{t-n}}{\sum Coef(n)} ]

[Source](https://github.com/lavs9/quantwave/blob/main/references/traderstipsreference/TRADERS’ TIPS - SEPTEMBER 2021.html)

HannFilter

Ehlers DSP filter ehlers dsp windowing spectral

Hann windowed lowpass FIR filter.

Usage

Use as a windowing function before FFT-based dominant cycle measurement to achieve clean spectral separation between market cycles.

Background

The Hann window provides a smooth bell-shaped taper achieving -31.5 dB first sidelobe suppression. Ehlers uses it in Cycle Analytics for Traders as the preferred DFT window because it offers the best trade-off between frequency resolution and leakage rejection.

Parameters

  • length (default: 20): Filter length

Formula

[ H(n) = 1 - \cos\left(\frac{2\pi n}{L+1}\right) ] [ Filt = \frac{\sum_{n=1}^L H(n) \cdot Price_{t-n+1}}{\sum H(n)} ]

Source

HighPass

Ehlers DSP filter ehlers dsp high-pass cycle

A second-order High Pass filter that rejects low-frequency components.

Usage

Apply to price to isolate the cyclical component by attenuating the low-frequency trend. Use as the first stage before an oscillator or spectrum analyser.

Background

Ehlers derives the one-pole high-pass filter in Cycle Analytics for Traders analogously to EMA derivation, but applied to price differences rather than levels. It removes the DC component and low-frequency trend, leaving the cyclical content for downstream analysis.

Parameters

  • period (default: 20): Critical period (wavelength)

Formula

[ a_1 = \exp\left(-\frac{1.414\pi}{Period}\right) ] [ c_2 = 2a_1 \cos\left(\frac{1.414\pi}{Period}\right) ] [ c_3 = -a_1^2 ] [ c_1 = (1 + c_2 - c_3) / 4 ] [ HP = c_1 (Price - 2 Price_{t-1} + Price_{t-2}) + c_2 HP_{t-1} + c_3 HP_{t-2} ]

Source

Hilbert Transform - Dominant Cycle Period (HT_DCPERIOD)

Ehlers DSP cycle hilbert adaptive dsp

Identifies the period of the dominant cycle in the price data using the Hilbert Transform.

Usage

Use to dynamically adjust the lookback periods of other indicators (e.g., adaptive moving averages). Knowing the current dominant cycle length allows for more accurate smoothing and trend detection.

Background

John Ehlers popularized the use of the Hilbert Transform to identify the dominant cycle in financial time series. The DCPERIOD indicator tracks the length of this cycle in bars, providing a crucial parameter for creating market-responsive technical indicators that adapt to changing volatility. — Rocket Science for Traders

Formula

[ \text{DCPERIOD}_t = \text{Recalculated Dominant Cycle using Hilbert Transform} ]

Source

Hilbert Transform - Dominant Cycle Phase (HT_DCPHASE)

Ehlers DSP cycle hilbert phase dsp

Calculates the phase angle (0 to 360 degrees) of the dominant cycle identified by the Hilbert Transform.

Usage

Use to identify the current position within a market cycle. It is the core component for generating the Hilbert Sine Wave indicator, which signals trend vs. cycle regimes.

Background

The Dominant Cycle Phase represents the instantaneous position within a detected cycle. By measuring the phase angle, traders can determine if the market is at a peak, trough, or mid-cycle, enabling more precise timing for entry and exit signals. — Rocket Science for Traders

Formula

[ Phase = \arctan\left(\frac{\text{Quadrature}}{\text{InPhase}}\right) ]

Source

Hilbert Transform - Phasor Components (HT_PHASOR)

Ehlers DSP cycle hilbert phasor dsp

Outputs the In-Phase and Quadrature components of the signal, which are used to calculate phase and amplitude.

Usage

Use as building blocks for custom DSP indicators. The In-Phase component is the signal itself, while the Quadrature component is shifted by 90 degrees.

Background

The Phasor components (In-Phase and Quadrature) are the fundamental outputs of the Hilbert Transform. They allow for the decomposition of a signal into its vector representation, which is essential for advanced cycle analysis and the creation of lag-free filters. — Rocket Science for Traders

Formula

[ \text{Result} = (InPhase, Quadrature) ]

Source

Hilbert Transform - Sine Wave (HT_SINE)

Ehlers DSP cycle hilbert sine dsp

An indicator that plots a sine wave and a lead-sine wave (shifted by 45 degrees) to identify cyclical turns.

Usage

Use to identify cycle turning points and trend regimes. When the two waves are separated and rhythmic, the market is in a cycle; when they are compressed or crossover erratically, the market is in a trend.

Background

The Hilbert Sine Wave is one of John Ehlers’ most famous contributions. It provides a clear visual indication of market cycles. Crossovers of the Sine and Lead-Sine waves provide high-probability entry points in ranging markets while identifying when a strong trend has taken over. — Rocket Science for Traders

Formula

[ Sine = \sin(Phase) \ LeadSine = \sin(Phase + 45^\circ) ]

Source

Hilbert Transform - Trend vs. Cycle Mode (HT_TRENDMODE)

Ehlers DSP cycle trend hilbert regime-detection dsp

A binary indicator that determines if the market is currently in a trending state (1) or a cyclical state (0).

Usage

Use as a master filter for strategy selection. Deploy trend-following tools when TRENDMODE is 1, and mean-reversion tools when TRENDMODE is 0.

Background

Determining the current market regime is the ‘holy grail’ of technical analysis. The HT_TRENDMODE indicator uses the rate of change of the dominant cycle phase to distinguish between trending and ranging price action, allowing traders to avoid ‘whipsaws’ in non-conducive environments. — Rocket Science for Traders

Formula

[ \text{TRENDMODE} = \begin{cases} 1 & \text{if trend detected} \ 0 & \text{if cycle detected} \end{cases} ]

Source

Inverse Fisher Transform

Ehlers DSP oscillator ehlers normalization momentum

A compressive transform that forces oscillator values towards +1 or -1, creating clear buy/sell signals.

Usage

Apply to RSI or other oscillators to rescale them to a ±1 range with sharp threshold behaviour. Values near ±1 indicate high-confidence overbought/oversold conditions.

Background

The Inverse Fisher Transform maps input values to (-1, +1) via a hyperbolic tangent function. Ehlers uses it in Cybernetic Analysis to create oscillators whose output clusters near the extremes, making crossovers of fixed thresholds reliable trading signals.

Formula

[ IFT(x) = \frac{e^{2x} - 1}{e^{2x} + 1} = \tanh(x) ]

Source

Laguerre Filter

Ehlers DSP filter ehlers dsp smoothing laguerre

A trend-following filter that excels at smoothing long-wavelength components using Laguerre polynomials and an UltimateSmoother base.

Usage

Use as a low-lag smoothing filter with only 4 elements of state. Ideal when memory-efficiency matters or when a highly responsive smoother for real-time streaming is needed.

Background

Ehlers introduces Laguerre filters in Cybernetic Analysis (2004), noting they achieve the response of much longer conventional filters using only four coefficients. The single gamma parameter controls the trade-off between lag and smoothness.

Parameters

  • length (default: 40): UltimateSmoother period
  • gamma (default: 0.8): Smoothing factor (0.0 to 1.0)

Formula

[ L_0 = UltimateSmoother(Close, Length) ] [ L_1 = -\gamma L_{0,t-1} + L_{0,t-1} + \gamma L_{1,t-1} ] [ … ] [ Laguerre = (L_0 + 4L_1 + 6L_2 + 4L_3 + L_5) / 16 ]

Source

Laguerre Oscillator

Ehlers DSP oscillator ehlers dsp laguerre momentum

A low-lag trend oscillator derived from Laguerre polynomials and normalized by RMS volatility.

Usage

Use to detect overbought and oversold conditions with very low lag. The single gamma parameter lets you tune it from aggressive to smooth.

Background

Ehlers describes the Laguerre Oscillator in Cybernetic Analysis as measuring the difference between the first and last elements of a 4-element Laguerre filter bank, extracting the high-frequency component as a zero-lag momentum measure.

Parameters

  • length (default: 30): UltimateSmoother period
  • gamma (default: 0.5): Smoothing factor
  • rms_period (default: 100): RMS normalization period

Formula

[ L_0 = UltimateSmoother(Close, Length) ] [ L_1 = -\gamma L_0 + L_{0,t-1} + \gamma L_{1,t-1} ] [ RMS = \sqrt{\frac{1}{n}\sum (L_0 - L_1)^2} ] [ Osc = (L_0 - L_1) / RMS ]

Source

Laguerre RSI

Ehlers DSP oscillator rsi ehlers dsp laguerre momentum

RSI calculated over Laguerre-warped time for faster response.

Usage

Use as a faster lower-lag alternative to traditional RSI. Laguerre smoothing produces fewer whipsaws while remaining responsive to genuine momentum shifts.

Background

Ehlers constructs the Laguerre RSI in Cybernetic Analysis by computing RSI on the four outputs of a Laguerre filter bank. The result has RSI-like scaling (0 to 1) but dramatically less lag and smoother behaviour than conventional RSI.

Parameters

  • gamma (default: 0.5): Smoothing factor (0.0 to 1.0)

Formula

[ L_0 = (1 - \gamma) \cdot Close + \gamma \cdot L_{0,t-1} ] [ L_1 = -\gamma L_0 + L_{0,t-1} + \gamma L_{1,t-1} ] [ L_2 = -\gamma L_1 + L_{1,t-1} + \gamma L_{2,t-1} ] [ L_3 = -\gamma L_2 + L_{2,t-1} + \gamma L_{3,t-1} ] [ CU = \sum \max(L_{i} - L_{i+1}, 0) ] [ CD = \sum \max(L_{i+1} - L_{i}, 0) ] [ RSI = \frac{CU}{CU + CD} ]

Source

MAD

Ehlers DSP volatility statistics robust ehlers

Moving Average Difference: 100 * (SMA(short) - SMA(long)) / SMA(long)

Usage

Use as a robust volatility measure when outliers or fat-tailed distributions would distort standard deviation. Works well for position sizing and volatility-based stop placement.

Background

Mean Absolute Deviation measures dispersion as the average absolute difference from the median rather than the squared difference from the mean used by standard deviation. It is less sensitive to outliers, making it a more robust volatility estimate for financial time series with fat tails.

Parameters

  • short_period (default: 8): Short-term SMA period
  • long_period (default: 23): Long-term SMA period

Formula

[ MAD = 100 \times \frac{SMA(short) - SMA(long)}{SMA(long)} ]

[Source](https://github.com/lavs9/quantwave/blob/main/references/traderstipsreference/TRADERS’ TIPS - OCTOBER 2021.html)

MADH

Ehlers DSP volatility statistics ehlers high-pass

Moving Average Difference with Hann Windowing: 100 * (Hann(short) - Hann(long)) / Hann(long)

Usage

Use to measure the volatility of the cyclical price component only, filtering out trend-driven amplitude changes that inflate standard volatility measures in trending markets.

Background

MADH applies Mean Absolute Deviation to the high-pass filtered price series rather than raw price. By isolating the cyclical component before measuring dispersion, it quantifies the noise level within the current market cycle rather than conflating it with trend amplitude.

Parameters

  • short_length (default: 8): Short-term filter length
  • dominant_cycle (default: 27): Dominant cycle for calculating long length

Formula

[ LongLength = \lfloor ShortLength + DominantCycle / 2 \rfloor ] [ Filt1 = HannWindow(Price, ShortLength) ] [ Filt2 = HannWindow(Price, LongLength) ] [ MADH = 100 \times \frac{Filt1 - Filt2}{Filt2} ]

[Source](https://github.com/lavs9/quantwave/blob/main/references/traderstipsreference/TRADERS’ TIPS - NOVEMBER 2021.html)

MESA Adaptive Moving Average

Ehlers DSP moving-average adaptive ehlers dsp trend

MAMA adapts to price movement in an entirely new and unique way based on the rate change of phase.

Usage

Use as an adaptive trend filter that automatically speeds up in fast markets and slows in choppy ones. The FAMA line crossing MAMA provides high-probability trend change signals.

Background

Presented in Rocket Science for Traders (2001), MAMA adapts its alpha based on the rate of phase change measured by the Hilbert Transform Discriminator. Fast cycles produce large alpha for responsiveness; slow cycles produce small alpha to reduce noise.

Parameters

  • fast_limit (default: 0.5): Fast limit for alpha
  • slow_limit (default: 0.05): Slow limit for alpha

Formula

[ \text{MAMA} = \alpha \cdot \text{Price} + (1 - \alpha) \cdot \text{MAMA}{1} ] [ \text{FAMA} = 0.5\alpha \cdot \text{MAMA} + (1 - 0.5\alpha) \cdot \text{FAMA}{1} ]

Source

MESA Adaptive Moving Average (MAMA)

Ehlers DSP moving-average adaptive ehlers dsp phase

A moving average that adapts to price movement based on the rate of change of phase.

Usage

Use as a highly responsive moving average that virtually eliminates overshoot while providing rapid response to price changes. The companion ‘FAMA’ (Following Adaptive Moving Average) provides a secondary line for crossover signals.

Background

MAMA adapts to the price movement based on the Hilbert Transform phase rate of change. It provides a unique combination of fast response to price changes while remaining smooth during congested market periods. It is one of the most sophisticated adaptive moving averages available. — Rocket Science for Traders

Parameters

  • fastlimit (default: 0.5): Fast limit
  • slowlimit (default: 0.05): Slow limit

Formula

[ \alpha = \frac{\text{FastLimit}}{\text{PhaseRate}} ]

Source

MESA Stochastic

Ehlers DSP oscillator stochastic ehlers cycle adaptive

Standard Stochastic calculation applied to Roofing Filtered data, followed by SuperSmoothing.

Usage

Use as a cycle-synchronized stochastic that automatically scales its lookback to the measured dominant cycle period for consistent overbought/oversold signals.

Background

The MESA Stochastic extends Ehlers adaptive stochastic concept by using the MESA-measured dominant cycle period as the lookback window. Unlike traditional stochastics with fixed periods, it adapts to the current market rhythm, keeping the oscillator calibrated to one full cycle at all times.

Parameters

  • length (default: 20): Stochastic lookback length
  • hp_period (default: 48): HighPass critical period
  • ss_period (default: 10): SuperSmoother critical period

Formula

[ Filt = \text{RoofingFilter}(Price, P_{hp}, P_{ss}) ] [ Stoc = \frac{Filt - \min(Filt, L)}{\max(Filt, L) - \min(Filt, L)} ] [ MESAStoch = \text{SuperSmoother}(Stoc \times 100, P_{ss}) ]

Source

MarketState

Ehlers DSP trend cycle regime ehlers dsp

Identifies trend vs cycle regimes using Correlation Cycle phase angle.

Usage

Returns 1 for uptrend, -1 for downtrend, and 0 for cycle mode. Use to switch between trend-following and mean-reversion strategies.

Background

In ‘Correlation As A Cycle Indicator’ (2020), Ehlers defines a Market State variable based on the rate of change of the Correlation Cycle phase angle. When the angle changes slowly (less than 9 degrees per bar), the market is in a trend regime (positive angle for uptrend, negative for downtrend). Rapid angle changes indicate a cycle regime.

Parameters

  • period (default: 14): Correlation wavelength
  • threshold (default: 9.0): Angle rate of change threshold for trend detection

Formula

[ \text{State} = \begin{cases} 1 & \text{if } |\Delta \text{Angle}| < \text{Threshold} \text{ and Angle} \geq 0 \ -1 & \text{if } |\Delta \text{Angle}| < \text{Threshold} \text{ and Angle} < 0 \ 0 & \text{otherwise} \end{cases} ]

Source

MyRSI

Ehlers DSP oscillator rsi ehlers momentum smoothing

Ehlers’ version of RSI that swings between -1 and +1.

Usage

Use as Ehlers smoothed RSI variant that applies cycle-aware filtering to reduce whipsaws while maintaining RSI-style overbought/oversold interpretation.

Background

Ehlers presents a smoothed RSI formulation that applies a Laguerre or SuperSmoother filter to the up/down ratio before computing the RSI index. This reduces the noise and oscillation of standard RSI without significantly increasing lag, producing more reliable overbought and oversold readings.

Parameters

  • length (default: 14): Smoothing length

Formula

[ CU = \sum_{i=0}^{length-1} \max(0, Price_i - Price_{i+1}) ] [ CD = \sum_{i=0}^{length-1} \max(0, Price_{i+1} - Price_i) ] [ MyRSI = \frac{CU - CD}{CU + CD} ]

Source

Noise Elimination Technology

Ehlers DSP filter noise ehlers dsp smoothing

Nonlinear noise removal using Kendall correlation against a straight line.

Usage

Use as a pre-filter to remove spike noise from price or intermediate indicator data without introducing lag. Particularly useful when raw tick or 1-minute data is used.

Background

Ehlers Noise Elimination Technology (NET) is a nonlinear filter that removes isolated noise spikes while leaving genuine price moves intact. It works by comparing each bar to its neighbors and replacing outliers with interpolated values, achieving noise reduction without the lag of conventional smoothers.

Parameters

  • length (default: 14): Correlation length

Formula

[ Num = \sum_{i=1}^{N-1} \sum_{j=0}^{i-1} -sgn(X_i - X_j) ] [ Denom = \frac{N(N-1)}{2} ] [ NET = \frac{Num}{Denom} ]

Source

OCPriceRSI

Ehlers DSP oscillator rsi ehlers momentum

RSI calculated using the average of Open and Close prices to reduce noise.

Usage

Use to measure momentum on the open-to-close price differential rather than close-to-close, capturing intraday directional strength more directly.

Background

Ehlers computes this RSI variant on the difference between the open and close price of each bar rather than on the closing price series. The open-close differential captures the net directional pressure within each bar, producing a momentum oscillator more sensitive to intraday commitment than standard RSI.

Parameters

  • period (default: 14): RSI period

Formula

[ Input = \frac{Open + Close}{2} ] [ RSI = \text{Wilder’s RSI}(Input, Period) ]

Source

One Euro Filter

Ehlers DSP filter smoothing adaptive real-time low-pass

A speed-based adaptive low-pass filter that dynamically adjusts its smoothing coefficient.

Usage

Use in real-time systems where you need low lag at high speeds and low noise at low speeds. The adaptive cutoff frequency makes it self-tuning for different signal velocities.

Background

The One Euro Filter, developed by Casiez et al. (2012), is an adaptive lowpass filter that adjusts its cutoff frequency based on the signal derivative. When the signal changes quickly (high speed) the cutoff is raised to reduce lag; when it changes slowly the cutoff is lowered to reduce noise — automatically balancing the speed-accuracy trade-off.

Parameters

  • period_min (default: 10): Minimum cutoff period
  • beta (default: 0.2): Responsiveness factor

Formula

[ \alpha_{dx} = \frac{2\pi}{4\pi + 10} ] [ SmoothedDX = \alpha_{dx}(Price - Price_{t-1}) + (1 - \alpha_{dx})SmoothedDX_{t-1} ] [ Cutoff = PeriodMin + \beta |SmoothedDX| ] [ \alpha_3 = \frac{2\pi}{4\pi + Cutoff} ] [ Smoothed = \alpha_3 Price + (1 - \alpha_3)Smoothed_{t-1} ]

Source

Open-Close Average (OC2)

Ehlers DSP price-transform ehlers smoothing dsp

A simple average of the Open and Close prices.

Usage

Use to reduce noise in technical indicators. Based on John Ehlers’ recent research, averaging the open and close can significantly improve signal-to-noise ratios in DSP-based indicators.

Background

In his 2023 paper ‘Every Little Bit Helps’, John Ehlers demonstrates that using the average of the Open and Close as an input can enhance the performance of various filters and oscillators by providing a cleaner signal with reduced aliasing. — John Ehlers

Formula

[ OC2 = \frac{Open + Close}{2} ]

[Source](Every Little Bit Helps (John Ehlers, 2023))

PairsRotation

Ehlers DSP pairs-trading rotation relative-strength ehlers

Relative rotation of two securities using normalized roofing filters.

Usage

Use to detect and trade rotation between two correlated assets. When one asset leads and the other lags, the indicator signals a rotation trade opportunity.

Background

Pairs Rotation analysis measures the relative cycle phase between two correlated assets. When one asset is at a cycle peak while its correlated partner is at a trough, a statistical rotation trade can be placed — long the laggard, short the leader — anticipating mean reversion of the spread.

Parameters

  • hp_len (default: 125): HighPass filter length
  • lp_len (default: 20): LowPass (SuperSmoother) length

Formula

[ Filt = SuperSmoother(HighPass(Price, HPLen), LPLen) ] [ MS = 0.0242 \cdot Filt^2 + 0.9758 \cdot MS_{t-1} ] [ Normalized = \frac{Filt}{\sqrt{MS}} ]

Source

Precision Trend Analysis

Ehlers DSP trend ehlers dsp filter

Trend identification using the difference between two high-pass filters.

Usage

Use as a high-precision trend indicator that applies DSP filtering to remove cycle noise before measuring trend direction, giving fewer but more reliable trend signals.

Background

Ehlers Precision Trend analysis applies a roofing-filter style preprocessing to price before computing the trend indicator, removing the cyclical component that causes premature trend reversals in standard indicators. The result is a trend signal that changes state only when the genuine trend direction changes.

Parameters

  • length1 (default: 250): First HighPass filter period
  • length2 (default: 40): Second HighPass filter period

Formula

[ HP1 = HighPass(Price, Length1) ] [ HP2 = HighPass(Price, Length2) ] [ Trend = HP1 - HP2 ] [ ROC = \frac{Length2}{6.28} \cdot (Trend - Trend_{t-1}) ]

Source

Projected Moving Average

Ehlers DSP moving-average prediction ehlers zero-lag

A lag-compensated moving average that uses linear regression slope to project the average forward.

Usage

Use as a predictive moving average that uses linear regression projection to anticipate where price will be rather than where it has been, reducing effective lag.

Background

The Projected Moving Average uses linear regression over the lookback window to project the best-fit line forward to the current bar. This predictive approach shifts the MA output toward the leading edge of price movement, achieving reduced lag compared to conventional MAs of the same period.

Parameters

  • length (default: 20): Calculation length

Formula

[ Slope = -\frac{n \sum xy - \sum x \sum y}{n \sum x^2 - (\sum x)^2} ] [ PMA = SMA + Slope \cdot \frac{n}{2} ] [ Predict = PMA + 0.5 \cdot (Slope - Slope_{t-2}) \cdot n ]

Source

RSIH

Ehlers DSP oscillator rsi ehlers high-pass cycle

RSI enhanced with Hann windowing for superior smoothing and zero-centering.

Usage

Use to measure momentum exclusively on the cyclical (high-pass filtered) component of price, eliminating the trend bias that makes standard RSI drift.

Background

RSIH applies RSI computation to the high-pass filtered price rather than raw price. By removing the trend component first, the RSI calculation operates only on the cyclical content of the market, producing an oscillator that is centered around zero regardless of the prevailing trend direction.

Parameters

  • length (default: 14): RSI length

Formula

[ CU = \sum_{n=1}^L (1 - \cos\left(\frac{2\pi n}{L+1}\right)) \cdot \max(0, Close_{t-n+1} - Close_{t-n}) ] [ CD = \sum_{n=1}^L (1 - \cos\left(\frac{2\pi n}{L+1}\right)) \cdot \max(0, Close_{t-n} - Close_{t-n+1}) ] [ RSIH = \frac{CU - CD}{CU + CD} ]

Source

RecursiveMedian

Ehlers DSP filter ehlers dsp median robust smoothing

EMA of a 5-bar median filter for smooth tracking with minimal jitter.

Usage

Use to filter out extreme outliers and noise while maintaining trend sensitivity. Excellent as a baseline for other oscillators.

Background

Standard filters like SMA or EMA are distorted by price spikes. The recursive median filter uses the median to reject outliers and an EMA to provide smoothness, offering a cleaner trend representation than standard moving averages.

Parameters

  • lp_period (default: 12): Low-pass smoothing period

Formula

[ \alpha = \frac{\cos(360/P) + \sin(360/P) - 1}{\cos(360/P)} ] [ RM_t = \alpha \cdot \text{Median}(Price, 5)t + (1 - \alpha) \cdot RM{t-1} ]

Source

RecursiveMedianOscillator

Ehlers DSP oscillator ehlers dsp median cycle highpass

Oscillator derived from the Recursive Median filter using a 2nd-order Highpass filter.

Usage

Identify cyclic turning points with reduced lag and noise. The high-pass component removes the trend, leaving the cycle.

Background

By applying a 2nd-order Highpass filter to the Recursive Median output, we create an oscillator that is specifically tuned to the dominant cycle while remaining immune to the outlier spikes that would otherwise create false signals.

Parameters

  • lp_period (default: 12): Low-pass smoothing period
  • hp_period (default: 30): High-pass cutoff period

Formula

[ \alpha_2 = \frac{\cos(0.707 \cdot 360/HP) + \sin(0.707 \cdot 360/HP) - 1}{\cos(0.707 \cdot 360/HP)} ] [ RMO_t = (1-\alpha_2/2)^2(RM_t - 2RM_{t-1} + RM_{t-2}) + 2(1-\alpha_2)RMO_{t-1} - (1-\alpha_2)^2RMO_{t-2} ]

Source

Reflex

Ehlers DSP zero-lag cycle ehlers dsp oscillator

A zero-lag averaging indicator designed to synchronize with the cycle component in price data.

Usage

Use to identify cyclic reversals with minimal lag. It is more sensitive to significant reversals than standard moving averages.

Background

Ehlers introduces Reflex as a way to reduce lag in averaging indicators by measuring the difference between the current SuperSmoother value and its historical values, adjusted for a linear slope. This ‘reflexes’ the indicator to show reversals as they happen rather than after the fact.

Parameters

  • length (default: 20): Assumed cycle period

Formula

[ Filt = \text{SuperSmoother}(Price, Length/2) ] [ Slope = \frac{Filt_{t-Length} - Filt_t}{Length} ] [ Sum = \frac{1}{Length} \sum_{n=1}^{Length} (Filt_t + n \cdot Slope - Filt_{t-n}) ] [ MS = 0.04 \cdot Sum^2 + 0.96 \cdot MS_{t-1} ] [ Reflex = \frac{Sum}{\sqrt{MS}} ]

[Source](https://github.com/lavs9/quantwave/blob/main/references/traderstipsreference/implemented/TRADERS’ TIPS - FEBRUARY 2020.html)

Reversion Index

Ehlers DSP mean-reversion oscillator ehlers cycle

A mean-reversion oscillator that normalizes price changes by their absolute magnitude and applies SuperSmoother filtering.

Usage

Use to identify mean-reversion opportunities when price has deviated significantly from its cycle trend. High index values signal overextended moves ripe for reversal.

Background

Ehlers Reversion Index measures how far price has deviated from its Instantaneous Trendline in units of cycle amplitude. Because it normalizes by the current cycle energy, the index provides consistent overbought/oversold thresholds regardless of the absolute price level or volatility regime.

Parameters

  • length (default: 20): Summation period (approx. half dominant cycle)

Formula

[ \Delta_t = \text{Close}t - \text{Close}{t-1} ] [ \text{Ratio} = \frac{\sum_{i=0}^{L-1} \Delta_{t-i}}{\sum_{i=0}^{L-1} |\Delta_{t-i}|} ] [ \text{Smooth} = SuperSmoother(\text{Ratio}, 8) ] [ \text{Trigger} = SuperSmoother(\text{Ratio}, 4) ]

Source

RocketRSI

Ehlers DSP oscillator rsi ehlers dsp fisher momentum

Highly responsive RSI variant using SuperSmoother and Fisher Transform.

Usage

Use for rapid cycle identification and reversal detection. The Fisher Transform converts the RSI distribution into a Gaussian-like distribution with sharp peaks at reversals.

Background

RocketRSI improves upon standard RSI by first smoothing the momentum with a SuperSmoother filter to eliminate high-frequency noise. The resulting RSI is then passed through a Fisher Transform to create clear, actionable signals at cyclical turning points.

Parameters

  • rsi_length (default: 8): RSI calculation period
  • smooth_length (default: 10): SuperSmoother filter period

Formula

[ Mom = Price - Price_{t-(L-1)} ] [ Filt = \text{SuperSmoother}(Mom, SL) ] [ MyRSI = \frac{\sum \max(0, \Delta Filt) - \sum \max(0, -\Delta Filt)}{\sum |\Delta Filt|} ] [ RocketRSI = 0.5 \cdot \ln\left(\frac{1 + MyRSI}{1 - MyRSI}\right) ]

Source

Roofing Filter

Ehlers DSP filter ehlers dsp cycle high-pass low-pass

Combines a 2-pole HighPass filter and a SuperSmoother to isolate specific cyclic components.

Usage

Apply before oscillators to remove both low-frequency trend drift and high-frequency noise, leaving only the tradable cycle band (roughly 10-48 bars).

Background

Introduced in Cycle Analytics for Traders (2013), the Roofing Filter first applies a high-pass filter to remove the dominant trend component, then a SuperSmoother to remove short-term noise. The result is a cycle-only signal with controlled bandwidth, ideal for use as input to oscillators and cycle indicators.

Parameters

  • hp_period (default: 48): HighPass critical period
  • ss_period (default: 10): SuperSmoother critical period

Formula

[ \alpha_1 = \frac{\cos(\sqrt{2}\pi/P_{hp}) + \sin(\sqrt{2}\pi/P_{hp}) - 1}{\cos(\sqrt{2}\pi/P_{hp})} ] [ HP = (1 - \alpha_1/2)^2 (Price - 2 Price_{t-1} + Price_{t-2}) + 2(1 - \alpha_1) HP_{t-1} - (1 - \alpha_1)^2 HP_{t-2} ] [ Filt = c_1 \frac{HP + HP_{t-1}}{2} + c_2 Filt_{t-1} + c_3 Filt_{t-2} ]

Source

SimplePredictor

Ehlers DSP prediction cycle ehlers dsp

A fixed-coefficient 2-pole linear predictive filter.

Usage

Use as a lightweight one-bar-ahead price predictor for cycle-mode markets. Its low computational cost makes it suitable for real-time streaming at high frequency.

Background

Ehlers derives a Simple Predictor that extrapolates price one bar forward using only the current and prior bars weighted by the dominant cycle coefficient. Despite its simplicity it provides useful one-bar forecasts in cycling markets, demonstrating the predictive value of cycle measurement.

Parameters

  • hp_len (default: 15): HighPass filter length
  • lp_len (default: 30): LowPass (SuperSmoother) length
  • q (default: 0.35): Damping/Predictor coefficient

Formula

[ Predict = \frac{Signal - 1.8Q \cdot Signal_{t-1} + Q^2 \cdot Signal_{t-2}}{1 - 1.8Q + Q^2} ]

Source

SuperSmoother

Ehlers DSP filter smoothing ehlers dsp low-pass

A second-order IIR filter with a maximally flat Butterworth response for superior smoothing with minimal lag.

Usage

Use as a drop-in replacement for any moving average when maximum smoothing with minimal lag is needed. Ideal as a pre-filter before oscillators to eliminate high-frequency noise.

Background

Ehlers describes the SuperSmoother as a two-pole Butterworth filter achieving the same smoothing as a longer SMA with far less lag. It uses a critically-damped design to eliminate Gibbs phenomenon overshoot while retaining cycle information. — Cybernetic Analysis for Stocks and Futures, 2004

Parameters

  • period (default: 20): Critical period (wavelength)

Formula

[ a_1 = \exp\left(-\frac{1.414\pi}{Period}\right) ] [ c_2 = 2a_1 \cos\left(\frac{1.414\pi}{Period}\right) ] [ c_3 = -a_1^2 ] [ c_1 = 1 - c_2 - c_3 ] [ SS = c_1 \frac{Price + Price_{t-1}}{2} + c_2 SS_{t-1} + c_3 SS_{t-2} ]

Source

Swiss Army Knife Indicator

Ehlers DSP filter ehlers dsp multi-purpose smoothing

A versatile indicator that can be configured as EMA, SMA, Gaussian, Butterworth, High Pass, Band Pass, or Band Stop filter.

Usage

Use as a single configurable filter that can emulate SMA, EMA, Gaussian, Butterworth, or bandpass responses by switching mode flags. Ideal for prototyping different filter designs without code changes.

Background

Ehlers presents the Swiss Army Knife Indicator in Cycle Analytics for Traders as a unified filter framework. A set of boolean flags selects the operating mode, making it possible to compare multiple filter responses on the same data by simply toggling flags rather than reimplementing each filter.

Parameters

  • mode (default: BandPass): Filter mode (EMA, SMA, Gauss, Butter, Smooth, HP, 2PHP, BP, BS)
  • period (default: 20): Filter period
  • delta (default: 0.1): Bandwidth parameter for BP and BS modes

Formula

[ Filt = c_0(b_0 x_t + b_1 x_{t-1} + b_2 x_{t-2}) + a_1 Filt_{t-1} + a_2 Filt_{t-2} - c_1 x_{t-N} ]

Source

Synthetic Oscillator

Ehlers DSP oscillator ehlers dsp cycle synthetic

A nonlinear oscillator designed to reduce lag while maintaining smoothness by adapting to the dominant cycle.

Usage

Use to construct a synthetic oscillator from dominant cycle sine components when direct price oscillators are too noisy. Most effective in clearly cyclical markets.

Background

Ehlers constructs a Synthetic Oscillator by generating a synthetic sine wave at the measured dominant cycle period and comparing it to price. The phase difference between the synthetic sine and actual price reveals whether the market is ahead of or behind its expected cycle position.

Parameters

  • lower_bound (default: 15): Lower bound of cycle period
  • upper_bound (default: 25): Upper bound of cycle period

Formula

[ Price = \text{Hann}(Close, 12) ] [ LP = \text{SuperSmoother}(\text{HighPass}(Price, UB), LB) ] [ Re = \frac{LP}{RMS(LP, 100)}, \quad Im = \frac{Re - Re_{t-1}}{RMS(Re - Re_{t-1}, 100)} ] [ DC = \frac{2\pi(Re^2 + Im^2)}{(Re - Re_{t-1})Im - (Im - Im_{t-1})Re} ] [ BP = \text{UltimateSmoother}(\text{HighPass}(Close, Mid), Mid) ] [ Phase = Phase_{t-1} + \frac{2\pi}{DC} ] [ Synth = \sin(Phase) ]

Source

Trendflex

Ehlers DSP zero-lag trend ehlers dsp oscillator

A zero-lag averaging indicator designed to retain the trend component while reducing lag.

Usage

Use to recognize enduring trends with minimal lag. It is better at identifying the start of a new trend than standard moving averages.

Background

Trendflex is the companion to Reflex. While Reflex focuses on the cyclic component by removing the trend slope, Trendflex retains the trend information by measuring the cumulative difference between the current smoothed value and its history without slope adjustment.

Parameters

  • length (default: 20): Assumed cycle period

Formula

[ Filt = \text{SuperSmoother}(Price, Length/2) ] [ Sum = \frac{1}{Length} \sum_{n=1}^{Length} (Filt_t - Filt_{t-n}) ] [ MS = 0.04 \cdot Sum^2 + 0.96 \cdot MS_{t-1} ] [ Trendflex = \frac{Sum}{\sqrt{MS}} ]

[Source](https://github.com/lavs9/quantwave/blob/main/references/traderstipsreference/implemented/TRADERS’ TIPS - FEBRUARY 2020.html)

TriangleFilter

Ehlers DSP filter ehlers dsp smoothing triangle

Triangle windowed FIR filter.

Usage

Use as a pre-smoother to reduce noise before applying cycle or momentum indicators when a symmetric low-ripple response is needed.

Background

The Triangle (Bartlett) window is a linearly-tapered FIR filter equivalent to applying two rectangular windows in sequence. It provides moderate sidelobe suppression and is useful when computational simplicity is preferred over maximum spectral attenuation.

Parameters

  • length (default: 20): Filter length

Formula

[ Coef(n) = \begin{cases} n & n < L/2 \ L/2 & n = L/2 \ L + 1 - n & n > L/2 \end{cases} ] [ Filt = \frac{\sum_{n=1}^L Coef(n) \cdot Price_{t-n+1}}{\sum Coef(n)} ]

[Source](https://github.com/lavs9/quantwave/blob/main/references/traderstipsreference/TRADERS’ TIPS - SEPTEMBER 2021.html)

TruncatedBandpass

Ehlers DSP filter ehlers dsp bandpass cycle robust

Truncated Bandpass filter for handling sharp price movements.

Usage

Use to isolate cyclic components while minimizing ‘ringing’ effects caused by sudden price shocks. Ideal for cycle-based trading systems in volatile markets.

Background

Finite Impulse Response (FIR) filters have a fixed history, while Infinite Impulse Response (IIR) filters technically have an infinite history. Truncation limits the IIR feedback loop to a specific length, combining the sharp selectivity of IIR with the outlier-rejection of FIR.

Parameters

  • period (default: 20): Cycle period to isolate
  • bandwidth (default: 0.1): Bandwidth of the filter
  • length (default: 10): Truncation length

Formula

[ L1 = \cos(360/P), \quad G1 = \cos(BW \cdot 360/P), \quad S1 = 1/G1 - \sqrt{1/G1^2 - 1} ] [ BPT_t = \text{IIR window of length } L \text{ with zero initial conditions} ]

Source

Ultimate Bands

Ehlers DSP bands volatility ehlers dsp adaptive

A Bollinger-style band using UltimateSmoother for the center line and standard deviation of the price-smooth difference for width.

Usage

Use as volatility bands that automatically widen during high-energy cycle phases and narrow during quiet phases. Better than fixed-multiple ATR bands in strongly cyclical markets.

Background

Ehlers Ultimate Bands compute upper and lower price envelopes using the RMS amplitude of the dominant cycle rather than a fixed ATR multiple. This makes the bands proportional to the current cycle energy, expanding when the market is actively cycling and contracting when it enters a low-energy consolidation.

Parameters

  • length (default: 20): Smoothing and SD period
  • num_sds (default: 1.0): Standard Deviation multiplier

Formula

[ Smooth = UltimateSmoother(Close, Length) ] [ SD = \sqrt{\frac{1}{n}\sum_{i=0}^{n-1} (Close_{t-i} - Smooth_{t-i})^2} ] [ Upper = Smooth + NumSDs \times SD ] [ Lower = Smooth - NumSDs \times SD ]

Source

Ultimate Channel

Ehlers DSP channel volatility ehlers adaptive breakout

A Keltner-style channel using UltimateSmoothers for both the center line and the volatility range to minimize lag.

Usage

Use as a dynamic price channel whose width scales with the current dominant cycle amplitude, providing adaptive support and resistance levels for breakout trading.

Background

The Ultimate Channel uses the measured dominant cycle amplitude to set channel width, analogous to Keltner Channels but cycle-aware rather than ATR-based. When price breaks beyond the channel boundary, it signals that cycle amplitude has expanded enough to suggest a genuine directional move.

Parameters

  • length (default: 20): Center line smoothing period
  • str_length (default: 20): Smooth True Range (STR) period
  • num_strs (default: 1.0): Channel width multiplier

Formula

[ TH = \max(High, Close_{t-1}) ] [ TL = \min(Low, Close_{t-1}) ] [ STR = UltimateSmoother(TH - TL, STRLength) ] [ Center = UltimateSmoother(Close, Length) ] [ Upper = Center + NumSTRs \times STR ] [ Lower = Center - NumSTRs \times STR ]

Source

Ultimate Strength Index

Ehlers DSP oscillator strength ehlers adaptive momentum

A lag-reduced version of the RSI using UltimateSmoother on smoothed up/down components.

Usage

Use to measure the relative strength of the current market move normalized to the dominant cycle amplitude, giving a volatility-adjusted momentum reading.

Background

The Ultimate Strength Index measures directional momentum as a fraction of the total cycle amplitude. By normalizing momentum to the RMS energy of the dominant cycle, it produces a consistent 0-100 reading that is comparable across different instruments and volatility regimes.

Parameters

  • length (default: 14): UltimateSmoother period

Formula

[ \text{SU} = \max(0, \text{Close} - \text{Close}{t-1}) ] [ \text{SD} = \max(0, \text{Close}{t-1} - \text{Close}) ] [ \text{USU} = UltimateSmoother(SMA(\text{SU}, 4), Length) ] [ \text{USD} = UltimateSmoother(SMA(\text{SD}, 4), Length) ] [ \text{USI} = \frac{\text{USU} - \text{USD}}{\text{USU} + \text{USD}} ]

Source

UltimateSmoother

Ehlers DSP filter smoothing ehlers dsp zero-lag

An Ehlers filter with zero lag in the Pass Band, constructed by subtracting High Pass response from the input data.

Usage

Use when you need near-zero phase lag smoothing with very low ripple. It is Ehlers preferred smoother for applications where timing precision is critical.

Background

Ehlers designs the Ultimate Smoother in Cycle Analytics for Traders to minimize both lag and ripple simultaneously. It achieves near-zero phase shift across the passband while providing excellent attenuation of high-frequency noise, making it his preferred general-purpose smoother for cycle-sensitive applications.

Parameters

  • period (default: 20): Critical period (wavelength)

Formula

[ a_1 = \exp\left(-\frac{1.414\pi}{Period}\right) ] [ c_2 = 2a_1 \cos\left(\frac{1.414\pi}{Period}\right) ] [ c_3 = -a_1^2 ] [ c_1 = (1 + c_2 - c_3) / 4 ] [ US = (1 - c_1) Price + (2c_1 - c_2) Price_{t-1} - (c_1 + c_3) Price_{t-2} + c_2 US_{t-1} + c_3 US_{t-2} ]

Source

UndersampledDoubleMA

Ehlers DSP internal utility

Undersampled price data smoothed by dual Hann filters to eliminate high frequency noise.

Usage

Internal implementation module — not intended as a standalone trading indicator.

Background

This module contains internal utility functions used by other indicators in the library. It is not intended to be used directly as a standalone trading indicator.

Parameters

  • fast_len (default: 6): Fast Hann filter length
  • slow_len (default: 12): Slow Hann filter length
  • sampling_period (default: 5): Undersampling rate (bars)

Formula

[ Sample = \begin{cases} Price & \text{if } t \pmod N = 0 \ Sample_{t-1} & \text{otherwise} \end{cases} ] [ Fast = Hann(Sample, FastLen) ] [ Slow = Hann(Sample, SlowLen) ]

Source

Universal Oscillator

Ehlers DSP oscillator ehlers dsp universal momentum

An adaptive oscillator that normalizes price momentum using a SuperSmoother filter and AGC.

Usage

Use as a generic oscillator framework that works on any pre-filtered input. Feed it the output of any smoother or filter to produce a normalized zero-centered oscillator.

Background

Ehlers Universal Oscillator is a generic momentum computation that can be applied to any filtered price input. It computes the rate of change of the filtered series normalized by its RMS amplitude, producing a consistently scaled oscillator that works regardless of the underlying filter or price instrument.

Parameters

  • band_edge (default: 20): Critical period for the SuperSmoother filter

Formula

[ WN = (Price - Price_{t-2}) / 2 ] [ AvgWN = (WN + WN_{t-1}) / 2 ] [ Filt = c_1 AvgWN + c_2 Filt_{t-1} + c_3 Filt_{t-2} ] [ Peak = \max(0.991 \times Peak_{t-1}, |Filt|) ] [ Universal = Filt / Peak ]

Source

VossPredictor

Ehlers DSP prediction cycle ehlers dsp filter

A predictive filter with negative group delay for band-limited signals.

Usage

Use for multi-bar price prediction based on a bandpass-filtered dominant cycle. More accurate than simple linear extrapolation due to its IIR filter pole placement.

Background

The Voss Predictor is a predictive filter developed by J.F. Voss and adapted by Ehlers in Cycle Analytics for Traders. Its IIR bandpass design inherently extrapolates the filtered signal several bars into the future by virtue of pole placement inside the unit circle, enabling lookahead without buffer access.

Parameters

  • period (default: 20): Center period of the BandPass filter
  • predict (default: 3): Number of bars of prediction

Formula

[ Filt = \text{BandPass}(Price, Period, 0.25) ] [ Order = 3 \cdot Predict ] [ SumC = \sum_{n=0}^{Order-1} \frac{n+1}{Order} Voss_{t-(Order-n)} ] [ Voss = \frac{3 + Order}{2} Filt - SumC ]

Source

WaveTrend Oscillator

Ehlers DSP oscillator momentum overbought oversold ehlers

WaveTrend is an oscillator that helps identify overbought and oversold conditions.

Usage

Use as a momentum oscillator to identify overbought and oversold conditions. WaveTrend crossovers at extreme levels provide high-probability mean-reversion entry signals.

Background

WaveTrend (popularized as LazyBear WaveTrend on TradingView) computes a channel index by normalizing price deviation from an EMA by the smoothed absolute deviation. A second EMA of this index produces the signal line. Extreme values (±60) with WT1-WT2 crossovers are the classic trade trigger.

Parameters

  • n1 (default: 10): Channel Length
  • n2 (default: 21): Average Length

Formula

[ WT_1 = EMA(ESA, n_2) ]

Source

Zero Lag EC

Ehlers DSP moving-average zero-lag ehlers ema smoothing

Zero Lag Error Corrected EMA attempts to eliminate lag by adding an error term to the EMA.

Usage

Use as a near-zero-lag moving average for trend-following systems. The error-correction term removes the lag inherent in the standard EMA without introducing significant overshoot.

Background

Ehlers introduces the Zero Lag indicator in Cybernetic Analysis as an EMA with an added error-correction term that subtracts the average lag from the output. The resulting EC (Error Corrected) line tracks price with near-zero delay while the ZL-EMA provides a smoothed reference, with crossovers between them providing trade signals.

Parameters

  • length (default: 20): Equivalent SMA length
  • gain_limit (default: 50.0): Gain limit (divided by 10 for actual gain)

Formula

[ \alpha = \frac{2}{Length + 1} ] [ EMA = \alpha \times Close + (1 - \alpha) \times EMA_{t-1} ] [ EC = \alpha \times (EMA + Gain \times (Close - EC_{t-1})) + (1 - \alpha) \times EC_{t-1} ]

Source

Hurst Exponent

ML Features statistics regime-detection hurst ml trending mean-reversion

Measures the persistence or anti-persistence of a time series using R/S analysis.

Usage

Use to classify the current market regime. H > 0.5 suggests a trending market (persistent); H < 0.5 suggests a mean-reverting market (anti-persistent). Useful as a filter for trend-following or mean-reversion strategies.

Background

The Hurst Exponent, pioneered by Harold Edwin Hurst in 1951, quantifies the ‘memory’ of a time series. In technical analysis, it distinguishes between trending, mean-reverting, and random walk price action. It is a critical feature for machine learning models to adapt their logic to the underlying market structure.

Parameters

  • period (default: 100): Lookback period for R/S analysis

Formula

[ H = \frac{\ln(R/S)}{\ln(N)} ]

Source

Kalman Filter

ML Features filter adaptive smoothing ml kalman

An adaptive 1D Kalman filter for smoothing price data with minimal lag.

Usage

Use as a highly responsive alternative to moving averages. The Q parameter (process noise) controls responsiveness to trend changes, while R (measurement noise) controls smoothness. Higher Q makes it track price faster; higher R increases smoothing.

Background

The Kalman Filter is an optimal estimator for linear systems with Gaussian noise. In technical analysis, the 1D version recursively updates the estimate of the ‘true’ price by balancing the predicted state against new measurements. It is particularly effective for feature engineering in ML models due to its ability to separate signal from noise dynamically.

Parameters

  • q (default: 0.01): Process noise (responsiveness)
  • r (default: 0.1): Measurement noise (smoothing)

Formula

[ P_{t|t-1} = P_{t-1} + Q ] [ K_t = \frac{P_{t|t-1}}{P_{t|t-1} + R} ] [ X_t = X_{t-1} + K_t(Z_t - X_{t-1}) ] [ P_t = (1 - K_t)P_{t|t-1} ]

Source

Choppiness Index

Modern volatility trend-strength classic range

Determines if the market is trending (low values) or ranging/choppy (high values).

Usage

Use to determine whether a market is trending or choppy before selecting a trading strategy. Values above 61.8 indicate chop; values below 38.2 indicate a strong trend.

Background

The Choppiness Index, developed by E.W. Dreiss, measures how much of the total ATR-based range is consumed by the actual net price move over N bars. A value near 100 means price wandered back and forth using all available range without net progress (maximum chop); near 0 means a straight directional move with minimal retracement. — StockCharts ChartSchool

Parameters

  • period (default: 14): Lookback period

Formula

[ CHOP = 100 \times \frac{\log_{10}(\sum_{i=1}^n ATR(1)i / (\max(H, n) - \min(L, n)))}{\log{10}(n)} ]

Source

Schaff Trend Cycle

Modern trend momentum cycle oscillator classic

A hybrid indicator that applies a double-smoothed stochastic to MACD for faster trend identification.

Usage

Use as a faster trend-cycle momentum indicator. STC typically reaches overbought/oversold levels sooner than MACD while generating fewer false signals than a raw stochastic.

Background

The Schaff Trend Cycle, developed by Doug Schaff, applies the stochastic oscillator formula twice to MACD values rather than to price. This double stochastic smoothing produces faster, more defined overbought and oversold levels than MACD alone, while the cycle component reduces the lag of a conventional stochastic. — investopedia.com

Parameters

  • cycle_period (default: 10): Stochastic lookback period
  • fast_period (default: 23): Fast EMA period for MACD
  • slow_period (default: 50): Slow EMA period for MACD

Formula

[ MACD = EMA(23) - EMA(50) ] [ STC = EMA(Stochastic(EMA(Stochastic(MACD, 10), 3), 10), 3) ]

Source

Abandoned Baby

Patterns pattern candlestick classic

A very rare reversal pattern with a doji gapping away.

Usage

One of the most reliable reversal signals.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Advance Block

Patterns pattern candlestick classic

A bearish reversal pattern in an uptrend.

Usage

Indicates weakening momentum in an upward move.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Belt-Hold

Patterns pattern candlestick classic

A single candle pattern signaling a reversal.

Usage

Indicates a strong opening in the opposite direction of the trend.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Breakaway

Patterns pattern candlestick classic

A five-candle reversal pattern.

Usage

Signals the breakout from a short-term consolidation.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Closing Marubozu

Patterns pattern candlestick classic

A candle with no shadow at the closing end.

Usage

Indicates strong conviction in the direction of the close.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Concealed Baby Swallow

Patterns pattern candlestick classic

A rare bullish reversal pattern.

Usage

Indicates a final ‘flush out’ before a reversal.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Counterattack

Patterns pattern candlestick classic

A reversal pattern where the second candle closes at the same level as the first.

Usage

Signals a stalemate after a strong move.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Dark Cloud Cover

Patterns pattern candlestick classic

A bearish reversal pattern in an uptrend.

Usage

Indicates a significant rejection of higher prices.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Doji

Patterns pattern candlestick classic

A candlestick pattern where the open and close are virtually equal.

Usage

Indicates indecision between buyers and sellers.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Doji Star

Patterns pattern candlestick classic

A reversal pattern where a doji gaps away.

Usage

Signals a potential shift in trend momentum.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Dragonfly Doji

Patterns pattern candlestick classic

A doji with a long lower shadow and no upper shadow.

Usage

Signals a potential bullish reversal.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Engulfing

Patterns pattern candlestick classic

A pattern where a larger candle completely covers the previous smaller candle.

Usage

Signals a strong shift in momentum.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Evening Doji Star

Patterns pattern candlestick classic

A bearish reversal pattern involving a doji.

Usage

A highly reliable signal of a market top.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Evening Star

Patterns pattern candlestick classic

A bearish reversal pattern with three candles.

Usage

Signals a peak in an uptrend.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Gravestone Doji

Patterns pattern candlestick classic

A doji with a long upper shadow and no lower shadow.

Usage

Signals a potential bearish reversal.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Hammer

Patterns pattern candlestick classic

A bullish reversal pattern with a small body and long lower shadow.

Usage

Signals a potential bottom after a downtrend.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Hanging Man

Patterns pattern candlestick classic

A bearish reversal pattern at the top of an uptrend.

Usage

Signals a potential breakdown after a period of buying.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Harami

Patterns pattern candlestick classic

A two-candle reversal pattern where the second is inside the first.

Usage

Signals a potential trend exhaustion.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Harami Cross

Patterns pattern candlestick classic

A harami where the second candle is a doji.

Usage

A more reliable reversal signal than a standard harami.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

High-Wave Candle

Patterns pattern candlestick classic

A candle with very long shadows and a small body.

Usage

Indicates extreme market confusion and volatility.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Hikkake Pattern

Patterns pattern candlestick classic

A trap pattern used to identify false breakouts.

Usage

Signals a move in the opposite direction of the trap.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Homing Pigeon

Patterns pattern candlestick classic

A bullish reversal pattern in a downtrend.

Usage

Signals a potential bottom.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Identical Three Crows

Patterns pattern candlestick classic

A bearish reversal pattern with three identical candles.

Usage

Signals a very strong trend change.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

In-Neck Pattern

Patterns pattern candlestick classic

A bearish continuation pattern.

Usage

Indicates that the downward move is not yet over.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Inverted Hammer

Patterns pattern candlestick classic

A bullish reversal pattern at the bottom of a downtrend.

Usage

Signals a potential move to the upside.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Kicking

Patterns pattern candlestick classic

A two-candle reversal pattern involving a gap.

Usage

Signals a violent shift in market sentiment.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Kicking - bull/bear determined by longer marubozu

Patterns pattern candlestick classic

A variation of the kicking pattern.

Usage

Focuses on the relative strength of the marubozus.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Ladder Bottom

Patterns pattern candlestick classic

A five-candle bullish reversal pattern.

Usage

Signals a major bottom after a steady decline.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Long Line Candle

Patterns pattern candlestick classic

A candle with an unusually long body.

Usage

Indicates strong momentum in the direction of the candle.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Long-Legged Doji

Patterns pattern candlestick classic

A doji with long shadows on both sides.

Usage

Indicates a significant struggle between bulls and bears.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Marubozu

Patterns pattern candlestick classic

A candle with no shadows at either end.

Usage

Indicates total dominance by one side for the entire period.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Mat Hold

Patterns pattern candlestick classic

A bullish continuation pattern.

Usage

Signals a strong trend that is likely to persist.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Matching Low

Patterns pattern candlestick classic

A bullish reversal pattern with two identical lows.

Usage

Signals support at a specific price level.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Modified Hikkake Pattern

Patterns pattern candlestick classic

A more conservative version of the Hikkake.

Usage

Provides a higher probability signal.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Morning Doji Star

Patterns pattern candlestick classic

A bullish reversal pattern involving a doji.

Usage

A highly reliable signal of a market bottom.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Morning Star

Patterns pattern candlestick classic

A bullish reversal pattern with three candles.

Usage

Signals a trough in a downtrend.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

On-Neck Pattern

Patterns pattern candlestick classic

A bearish continuation pattern.

Usage

A weak signal that the downtrend will continue.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Piercing Pattern

Patterns pattern candlestick classic

A bullish reversal pattern in a downtrend.

Usage

Indicates a significant entry of buyers.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Rickshaw Man

Patterns pattern candlestick classic

A long-legged doji where the body is in the center of the range.

Usage

Indicates total equilibrium and indecision.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Rising/Falling Three Methods

Patterns pattern candlestick classic

A strong continuation pattern.

Usage

Signals a minor consolidation before the trend resumes.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Separating Lines

Patterns pattern candlestick classic

A continuation pattern where candles move in opposite directions.

Usage

Signals trend persistence.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Shooting Star

Patterns pattern candlestick classic

A bearish reversal pattern at the top of an uptrend.

Usage

Signals a potential move to the downside.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Short Line Candle

Patterns pattern candlestick classic

A candle with a small body and small shadows.

Usage

Indicates low volatility and consolidation.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Spinning Top

Patterns pattern candlestick classic

A candle with a small body and long shadows.

Usage

Indicates indecision after a strong move.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Stalled Pattern

Patterns pattern candlestick classic

A bearish reversal pattern in an uptrend.

Usage

Indicates that the upward momentum is slowing down.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Stick Sandwich

Patterns pattern candlestick classic

A reversal pattern with alternating candle colors.

Usage

Signals a potential support or resistance level.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Takuri

Patterns pattern candlestick classic

A dragonfly doji with an exceptionally long lower shadow.

Usage

Indicates a very strong rejection of lower prices.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Tasuki Gap

Patterns pattern candlestick classic

A continuation pattern involving a gap.

Usage

Signals trend strength.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Three Black Crows

Patterns pattern candlestick classic

A bearish reversal pattern with three long red candles.

Usage

Signals a major trend reversal to the downside.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Three Inside Up/Down

Patterns pattern candlestick classic

A reversal pattern confirmed by a third candle.

Usage

Signals a more reliable trend change than a simple harami.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Three Outside Up/Down

Patterns pattern candlestick classic

A reversal pattern confirmed by a third candle.

Usage

Signals a more reliable trend change than a simple engulfing.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Three Stars In The South

Patterns pattern candlestick classic

A rare bullish reversal pattern in a downtrend.

Usage

Indicates a gradual exhaustion of selling pressure.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Three White Soldiers

Patterns pattern candlestick classic

A bullish reversal pattern with three long green candles.

Usage

Signals a major trend reversal to the upside.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Three-Line Strike

Patterns pattern candlestick classic

A continuation pattern where four candles are involved.

Usage

Signals a temporary pause before the trend continues.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Thrusting Pattern

Patterns pattern candlestick classic

A bearish continuation pattern.

Usage

A weak signal of trend persistence.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Tristar Pattern

Patterns pattern candlestick classic

A rare reversal pattern consisting of three dojis.

Usage

Signals an extreme shift in momentum.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Two Crows

Patterns pattern candlestick classic

A bearish reversal pattern consisting of three candles.

Usage

Signals a potential top in an uptrend.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Unique 3 River

Patterns pattern candlestick classic

A bullish reversal pattern.

Usage

Signals a potential bottom.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Up/Down-Gap Side-By-Side White Lines

Patterns pattern candlestick classic

A continuation pattern involving gaps.

Usage

Signals that the current trend is likely to continue.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Up/Down-Gap Three Methods

Patterns pattern candlestick classic

A continuation pattern.

Usage

Signals that the trend is likely to continue after a gap.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Upside Gap Two Crows

Patterns pattern candlestick classic

A bearish reversal pattern.

Usage

Signals a potential top in an uptrend.

Background

Candlestick patterns were popularized in the West by Steve Nison in his 1991 book ‘Japanese Candlestick Charting Techniques’. These patterns provide a visual representation of market psychology and the balance of power between buyers and sellers at key price levels.

Formula

\text{Pattern Recognition Logic (TA-Lib Internal)}

Source

Homodyne Discriminator

Rocket Science cycle dominant-cycle ehlers dsp spectral

Estimates the dominant cycle period using a homodyne approach.

Usage

Use to measure the instantaneous dominant cycle period from price data. Feed its output into adaptive indicators as the dynamic period parameter.

Background

Described in Rocket Science for Traders (2001), the Homodyne Discriminator borrows from radio engineering to measure instantaneous frequency by multiplying the analytic signal by its one-bar-delayed conjugate, giving cycle period without DFT latency.

Formula

[ \text{Period} = \frac{360}{\text{atan}(Im / Re)} ]

Source

Instantaneous Trendline

Rocket Science trend adaptive moving-average ehlers dsp

Removes the dominant cycle to reveal the underlying trend with minimal lag.

Usage

Use as an adaptive trend line that automatically adjusts to the current dominant cycle period, replacing fixed-period moving averages in trend-following systems.

Background

Defined in Rocket Science for Traders (2001), the Instantaneous Trendline is derived from Hilbert Transform phasors and synchronized to the current market cycle. It is computed as a 3-bar weighted average adjusted by the instantaneous period, giving a zero-lag trend estimate.

Formula

[ Trendline = \text{WMA}(\text{SMA}(Price, DCPeriod), 4) ]

Source

Phasor

Rocket Science cycle phase ehlers dsp dominant-cycle

Extracts In-Phase (I) and Quadrature (Q) components using a Hilbert Transform.

Usage

Use to measure the instantaneous phase and amplitude of the dominant market cycle. Phase crossings of key angles (90, 180 degrees) provide precise cycle turn timing signals.

Background

Ehlers borrows the concept of a phasor from electrical engineering to represent the amplitude and phase of a market cycle as a rotating vector. In Rocket Science for Traders (2001) he shows how measuring the instantaneous phasor angle gives more precise cycle timing than zero-crossing methods.

Formula

[ I = \text{Detrender}_{t-3} ] [ Q = \text{HilbertFIR}(\text{Detrender}, \text{Period}) ]

Source

Sine Wave

Rocket Science cycle oscillator ehlers dsp phase

Plots a sine wave and a lead-sine wave based on the cyclic phase of price movement.

Usage

Use to confirm whether the market is in cycle or trend mode. When price follows the sine wave trade cycle reversals; when it diverges switch to trend-following.

Background

Introduced in Rocket Science for Traders, the Sine Wave Indicator plots the sine and cosine of measured instantaneous phase. In cycling markets price tracks the sine wave; in trending markets price breaks through the lead line signaling a mode change.

Formula

[ \text{Sine} = \sin(\text{Phase}) ] [ \text{LeadSine} = \sin(\text{Phase} + 45^\circ) ]

Source

System Evaluator

Statistics system performance ehlers statistics

Calculates robust statistical performance metrics for a trading system based on a stream of trade profits.

Usage

Use to assess the performance quality of a trading system output using signal processing metrics. Helps distinguish systems with genuine edge from those that merely overfit.

Background

Ehlers applies signal processing metrics to evaluate trading system quality in Cybernetic Analysis. Metrics such as the Signal-to-Noise Ratio of the equity curve quantify whether a system is generating genuine signal above the noise floor of random entry and exit.

Formula

[ AveTrade = % \cdot (PF + 1) - 1 ] [ PF_{breakeven} = \frac{1 - %}{%} ] [ N_{losers} = \frac{\ln(0.0027)}{\ln(1 - %)} ]

Source

Volume Profile

Volume volume profile poc support-resistance auction-market-theory

Calculates the price level with the highest traded volume (Point of Control) over a sliding window.

Usage

Use to identify significant support and resistance levels. The POC represents the price where most market activity occurred, often acting as a magnet for price or a strong barrier. Essential for volume spread analysis and auction market theory.

Background

Volume Profile is an advanced charting study that displays trading activity over a specified time period at specified price levels. The Point of Control (POC) is the single most important level in the profile, representing the price at which the most volume was traded. It serves as a key benchmark for identifying value areas and potential trend reversals.

Parameters

  • period (default: 200): Sliding window size
  • bins (default: 50): Number of price bins in the histogram

Formula

[ BinIdx = \lfloor \frac{Price - Price_{min}}{BinSize} \rfloor ] [ POC = Price_{min} + (Idx_{max_vol} + 0.5) \times BinSize ]

Source

TA-Lib Wrappers

QuantWave seamlessly integrates with the industry standard TA-Lib via talib-rs.

We have wrapped all 158 technical analysis functions provided by TA-Lib so that they adhere to the QuantWave Universal Indicator pattern. This means you can use classic indicators like RSI, MACD, and Bollinger Bands natively within your Polars dataframes.

For more information, visit the official TA-Lib website or the talib-rs repository.

Available Indicators

  • ACCBANDS: Acceleration Bands
  • ACOS: Vector Trigonometric ACos
  • AD: Chaikin A/D Line
  • ADD: Vector Arithmetic Add
  • ADOSC: Chaikin A/D Oscillator
  • ADX: Average Directional Movement Index
  • ADXR: Average Directional Movement Index Rating
  • APO: Absolute Price Oscillator
  • AROON: Aroon
  • AROONOSC: Aroon Oscillator
  • ASIN: Vector Trigonometric ASin
  • ATAN: Vector Trigonometric ATan
  • ATR: Average True Range
  • AVGDEV: Average Deviation
  • AVGPRICE: Average Price
  • BBANDS: Bollinger Bands
  • BETA: Beta
  • BOP: Balance Of Power
  • CCI: Commodity Channel Index
  • CDL2CROWS: Two Crows
  • CDL3BLACKCROWS: Three Black Crows
  • CDL3INSIDE: Three Inside Up/Down
  • CDL3LINESTRIKE: Three-Line Strike
  • CDL3OUTSIDE: Three Outside Up/Down
  • CDL3STARSINSOUTH: Three Stars In The South
  • CDL3WHITESOLDIERS: Three Advancing White Soldiers
  • CDLABANDONEDBABY: Abandoned Baby
  • CDLADVANCEBLOCK: Advance Block
  • CDLBELTHOLD: Belt-hold
  • CDLBREAKAWAY: Breakaway
  • CDLCLOSINGMARUBOZU: Closing Marubozu
  • CDLCONCEALBABYSWALL: Concealing Baby Swallow
  • CDLCOUNTERATTACK: Counterattack
  • CDLDARKCLOUDCOVER: Dark Cloud Cover
  • CDLDOJI: Doji
  • CDLDOJISTAR: Doji Star
  • CDLDRAGONFLYDOJI: Dragonfly Doji
  • CDLENGULFING: Engulfing Pattern
  • CDLEVENINGDOJISTAR: Evening Doji Star
  • CDLEVENINGSTAR: Evening Star
  • CDLGAPSIDESIDEWHITE: Up/Down-gap side-by-side white lines
  • CDLGRAVESTONEDOJI: Gravestone Doji
  • CDLHAMMER: Hammer
  • CDLHANGINGMAN: Hanging Man
  • CDLHARAMI: Harami Pattern
  • CDLHARAMICROSS: Harami Cross Pattern
  • CDLHIGHWAVE: High-Wave Candle
  • CDLHIKKAKE: Hikkake Pattern
  • CDLHIKKAKEMOD: Modified Hikkake Pattern
  • CDLHOMINGPIGEON: Homing Pigeon
  • CDLIDENTICAL3CROWS: Identical Three Crows
  • CDLINNECK: In-Neck Pattern
  • CDLINVERTEDHAMMER: Inverted Hammer
  • CDLKICKING: Kicking
  • CDLKICKINGBYLENGTH: Kicking - bull/bear determined by the longer marubozu
  • CDLLADDERBOTTOM: Ladder Bottom
  • CDLLONGLEGGEDDOJI: Long Legged Doji
  • CDLLONGLINE: Long Line Candle
  • CDLMARUBOZU: Marubozu
  • CDLMATCHINGLOW: Matching Low
  • CDLMATHOLD: Mat Hold
  • CDLMORNINGDOJISTAR: Morning Doji Star
  • CDLMORNINGSTAR: Morning Star
  • CDLONNECK: On-Neck Pattern
  • CDLPIERCING: Piercing Pattern
  • CDLRICKSHAWMAN: Rickshaw Man
  • CDLRISEFALL3METHODS: Rising/Falling Three Methods
  • CDLSEPARATINGLINES: Separating Lines
  • CDLSHOOTINGSTAR: Shooting Star
  • CDLSHORTLINE: Short Line Candle
  • CDLSPINNINGTOP: Spinning Top
  • CDLSTALLEDPATTERN: Stalled Pattern
  • CDLSTICKSANDWICH: Stick Sandwich
  • CDLTAKURI: Takuri (Dragonfly Doji with very long lower shadow)
  • CDLTASUKIGAP: Tasuki Gap
  • CDLTHRUSTING: Thrusting Pattern
  • CDLTRISTAR: Tristar Pattern
  • CDLUNIQUE3RIVER: Unique 3 River
  • CDLUPSIDEGAP2CROWS: Upside Gap Two Crows
  • CDLXSIDEGAP3METHODS: Upside/Downside Gap Three Methods
  • CEIL: Vector Ceil
  • CMO: Chande Momentum Oscillator
  • CORREL: Pearson’s Correlation Coefficient (r)
  • COS: Vector Trigonometric Cos
  • COSH: Vector Trigonometric Cosh
  • DEMA: Double Exponential Moving Average
  • DIV: Vector Arithmetic Div
  • DX: Directional Movement Index
  • EMA: Exponential Moving Average
  • EXP: Vector Arithmetic Exp
  • FLOOR: Vector Floor
  • HT_DCPERIOD: Hilbert Transform - Dominant Cycle Period
  • HT_DCPHASE: Hilbert Transform - Dominant Cycle Phase
  • HT_PHASOR: Hilbert Transform - Phasor Components
  • HT_SINE: Hilbert Transform - SineWave
  • HT_TRENDLINE: Hilbert Transform - Instantaneous Trendline
  • HT_TRENDMODE: Hilbert Transform - Trend vs Cycle Mode
  • IMI: Intraday Momentum Index
  • KAMA: Kaufman Adaptive Moving Average
  • LINEARREG: Linear Regression
  • LINEARREG_ANGLE: Linear Regression Angle
  • LINEARREG_INTERCEPT: Linear Regression Intercept
  • LINEARREG_SLOPE: Linear Regression Slope
  • LN: Vector Log Natural
  • LOG10: Vector Log10
  • MA: Moving average
  • MACD: Moving Average Convergence/Divergence
  • MACDEXT: MACD with controllable MA type
  • MACDFIX: Moving Average Convergence/Divergence Fix 12/26
  • MAMA: MESA Adaptive Moving Average
  • MAVP: Moving average with variable period
  • MAX: Highest value over a specified period
  • MAXINDEX: Index of highest value over a specified period
  • MEDPRICE: Median Price
  • MFI: Money Flow Index
  • MIDPOINT: MidPoint over period
  • MIDPRICE: Midpoint Price over period
  • MIN: Lowest value over a specified period
  • MININDEX: Index of lowest value over a specified period
  • MINMAX: Lowest and highest values over a specified period
  • MINMAXINDEX: Indexes of lowest and highest values over a specified period
  • MINUS_DI: Minus Directional Indicator
  • MINUS_DM: Minus Directional Movement
  • MOM: Momentum
  • MULT: Vector Arithmetic Mult
  • NATR: Normalized Average True Range
  • OBV: On Balance Volume
  • PLUS_DI: Plus Directional Indicator
  • PLUS_DM: Plus Directional Movement
  • PPO: Percentage Price Oscillator
  • ROC: Rate of change : ((price/prevPrice)-1)*100
  • ROCP: Rate of change Percentage: (price-prevPrice)/prevPrice
  • ROCR: Rate of change ratio: (price/prevPrice)
  • ROCR100: Rate of change ratio 100 scale: (price/prevPrice)*100
  • RSI: Relative Strength Index
  • SAR: Parabolic SAR
  • SAREXT: Parabolic SAR - Extended
  • SIN: Vector Trigonometric Sin
  • SINH: Vector Trigonometric Sinh
  • SMA: Simple Moving Average
  • SQRT: Vector Square Root
  • STDDEV: Standard Deviation
  • STOCH: Stochastic
  • STOCHF: Stochastic Fast
  • STOCHRSI: Stochastic Relative Strength Index
  • SUB: Vector Arithmetic Subtraction
  • SUM: Summation
  • T3: Triple Exponential Moving Average (T3)
  • TAN: Vector Trigonometric Tan
  • TANH: Vector Trigonometric Tanh
  • TEMA: Triple Exponential Moving Average
  • TRANGE: True Range
  • TRIMA: Triangular Moving Average
  • TRIX: 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
  • TSF: Time Series Forecast
  • TYPPRICE: Typical Price
  • ULTOSC: Ultimate Oscillator
  • VAR: Variance
  • WCLPRICE: Weighted Close Price
  • WILLR: Williams’ %R
  • WMA: Weighted Moving Average