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
- Universal Indicator Pattern: Every indicator guarantees identical results for batch and streaming.
- Zero-Copy Performance: Native Polars plugins operate directly on Arrow memory buffers.
- 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-libC 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
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 periodmultiplier(default: 3.0): ATR Multiplier
Formula
[ Stop = P_{high} - (Multiplier \times ATR) ]
Absolute Price Oscillator (APO)
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 periodslowperiod(default: 26): Slow period
Formula
[ APO = EMA(fast) - EMA(slow) ]
Accumulation/Distribution Line (AD)
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} ]
Anchored VWAP
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} ]
Arnaud Legoux Moving Average
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): Periodoffset(default: 0.85): Offsetsigma(default: 6.0): Sigma
Formula
[ ALMA = \sum (W_i \times P_i) / \sum W_i ]
Aroon Indicator
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 ]
Average Directional Index (ADX)
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} ]
Average Price (AVGPRICE)
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} ]
Average True 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} ]
Beta (BETA)
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)} ]
Bill Williams Alligator
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) ]
Bill Williams Fractals
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} ]
Bollinger 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 periodnbdevup(default: 2.0): Upper deviation multipliernbdevdn(default: 2.0): Lower deviation multiplier
Formula
[ Middle = SMA(n) \ Upper = Middle + (k \times \sigma) \ Lower = Middle - (k \times \sigma) ]
Chaikin Oscillator (ADOSC)
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 periodslowperiod(default: 10): Slow EMA period
Formula
[ ADOSC = EMA(AD, 3) - EMA(AD, 10) ]
Chande Momentum Oscillator (CMO)
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} ]
Commodity Channel Index (CCI)
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}} ]
Correlation Coefficient (CORREL)
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} ]
Donchian Channels
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}) ]
Double Exponential Moving Average (DEMA)
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) ]
Exponential Moving Average
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) ]
Heikin-Ashi
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} ]
Hull Moving Average
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}) ]
Ichimoku Cloud
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 periodkijun_period(default: 26): Kijun-sen periodsenkou_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} ]
KAMA
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 periodfast_period(default: 2): Fastest smoothing periodslow_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}) ]
Keltner Channels
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 Periodmultiplier(default: 2.0): ATR Multiplier
Formula
[ UC = EMA + (Multiplier \times ATR) ]
Linear Regression
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 ]
Median Price (MEDPRICE)
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} ]
Momentum (MOM)
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} ]
Money Flow Index (MFI)
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}} ]
Moving Average Convergence Divergence (MACD)
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 periodslowperiod(default: 26): Slow EMA periodsignalperiod(default: 9): Signal EMA period
Formula
[ MACD = EMA(12) - EMA(26) \ Signal = EMA(MACD, 9) ]
Normalized Average True Range (NATR)
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 ]
On-Balance Volume (OBV)
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} ]
Parabolic SAR
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 factormaximum(default: 0.2): Maximum acceleration
Formula
[ SAR_{t+1} = SAR_t + AF \times (EP - SAR_t) ]
Percentage Price Oscillator (PPO)
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 periodslowperiod(default: 26): Slow period
Formula
[ PPO = \frac{EMA(12) - EMA(26)}{EMA(26)} \times 100 ]
Pivot Points
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} ]
Rate of Change (ROC)
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 ]
Relative Strength Index (RSI)
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} ]
Simple Moving Average
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 ]
Standard Deviation
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} } ]
Stochastic Oscillator
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 periodslowk_period(default: 3): Slow %K periodslowd_period(default: 3): Slow %D period
Formula
[ %K = 100 \times \frac{C - L14}{H14 - L14} \ %D = 3\text{-period SMA of } %K ]
SuperTrend
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 lengthmultiplier(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} ]
TRIX
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 ]
TTM Squeeze
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 Periodbb_mult(default: 2.0): Bollinger Bands Multiplierkc_period(default: 20): Keltner Channel Periodkc_mult(default: 1.5): Keltner Channel Multiplier
Formula
[ \text{Squeeze} = BB_{width} < KC_{width} ]
Tilson T3 Moving Average
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 periodv_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 ]
Triangular Moving Average (TRIMA)
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) ]
Triple Exponential Moving Average
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 ]
True 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}|) ]
Typical Price (TYPPRICE)
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} ]
Ultimate Oscillator
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 periodtimeperiod2(default: 14): Medium periodtimeperiod3(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}) ]
Vortex Indicator
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} ]
Weighted Close Price (WCLPRICE)
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} ]
Weighted Moving Average
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} ]
Williams %R
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 ]
Zero Lag Exponential Moving Average
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})) ]
AM Detector
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 lengthavg_len(default: 8): Smoothing length
Formula
[ Deriv = |Close - Open|, Envel = \max(Deriv, 4), Volatil = \text{Avg}(Envel, 8) ]
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 passbandbandwidth(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} ]
Butterworth2
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}) ]
Butterworth3
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}) ]
Center of Gravity Oscillator
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} ]
ChannelCycle
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} ]
Classic Laguerre Filter
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} ]
Continuation Index
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 parameterorder(default: 8): Laguerre filter orderlength(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) ]
Correlation Trend
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)}} ]
CorrelationCycle
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)} ]
Cyber Cycle
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
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 lengthlp_length(default: 20): LowPass (SuperSmoother) lengthrms_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} ]
Cycle/Trend Analytics
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 lengthmax_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
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) ]
DSMA
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} ]
EMD
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 perioddelta(default: 0.5): Bandwidth half-widthfraction(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) ]
Ehlers Autocorrelation
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 lengthnum_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
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} ]
Ehlers Loops
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}} ]
Ehlers Stochastic
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 periodss_period(default: 10): SuperSmoother critical periodstoch_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
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)} ]
FM Demodulator
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} ]
Fisher Transform
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) ]
FisherHighPass
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 lengthnorm_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) ]
FourierDominantCycle
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))} ]
FourierSeriesModel
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 ]
Fractal Adaptive Moving Average
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} ]
GaussianFilter
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 periodpoles(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} ]
Generalized 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 periodgamma(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 ]
GriffithsDominantCycle
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 boundupper_bound(default: 40): Upper period boundlength(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) ]
GriffithsPredictor
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 lengthbars_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} ]
GriffithsSpectrum
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 boundupper_bound(default: 40): Upper period boundlength(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)} ]
HammingFilter
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 lengthpedestal(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
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)} ]
HighPass
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} ]
Hilbert Transform - Dominant Cycle Period (HT_DCPERIOD)
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} ]
Hilbert Transform - Dominant Cycle Phase (HT_DCPHASE)
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) ]
Hilbert Transform - Phasor Components (HT_PHASOR)
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) ]
Hilbert Transform - Sine Wave (HT_SINE)
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) ]
Hilbert Transform - Trend vs. Cycle Mode (HT_TRENDMODE)
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} ]
Inverse Fisher Transform
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) ]
Laguerre Filter
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 periodgamma(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 ]
Laguerre Oscillator
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 periodgamma(default: 0.5): Smoothing factorrms_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 ]
Laguerre RSI
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} ]
MAD
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 periodlong_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
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 lengthdominant_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
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 alphaslow_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} ]
MESA Adaptive Moving Average (MAMA)
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 limitslowlimit(default: 0.05): Slow limit
Formula
[ \alpha = \frac{\text{FastLimit}}{\text{PhaseRate}} ]
MESA Stochastic
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 lengthhp_period(default: 48): HighPass critical periodss_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}) ]
MarketState
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 wavelengththreshold(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} ]
MyRSI
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} ]
Noise Elimination Technology
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} ]
OCPriceRSI
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) ]
One Euro Filter
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 periodbeta(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} ]
Open-Close Average (OC2)
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
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 lengthlp_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}} ]
Precision Trend Analysis
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 periodlength2(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}) ]
Projected Moving Average
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 ]
RSIH
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} ]
RecursiveMedian
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} ]
RecursiveMedianOscillator
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 periodhp_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} ]
Reflex
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
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) ]
RocketRSI
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 periodsmooth_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) ]
Roofing Filter
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 periodss_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} ]
SimplePredictor
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 lengthlp_len(default: 30): LowPass (SuperSmoother) lengthq(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} ]
SuperSmoother
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} ]
Swiss Army Knife Indicator
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 perioddelta(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} ]
Synthetic Oscillator
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 periodupper_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) ]
Trendflex
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
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
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 isolatebandwidth(default: 0.1): Bandwidth of the filterlength(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} ]
Ultimate Bands
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 periodnum_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 ]
Ultimate Channel
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 periodstr_length(default: 20): Smooth True Range (STR) periodnum_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 ]
Ultimate Strength Index
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}} ]
UltimateSmoother
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} ]
UndersampledDoubleMA
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 lengthslow_len(default: 12): Slow Hann filter lengthsampling_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) ]
Universal Oscillator
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 ]
VossPredictor
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 filterpredict(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 ]
WaveTrend Oscillator
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 Lengthn2(default: 21): Average Length
Formula
[ WT_1 = EMA(ESA, n_2) ]
Zero Lag EC
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 lengthgain_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} ]
Hurst Exponent
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)} ]
Kalman Filter
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} ]
Choppiness Index
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)} ]
Schaff Trend Cycle
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 periodfast_period(default: 23): Fast EMA period for MACDslow_period(default: 50): Slow EMA period for MACD
Formula
[ MACD = EMA(23) - EMA(50) ] [ STC = EMA(Stochastic(EMA(Stochastic(MACD, 10), 3), 10), 3) ]
Abandoned Baby
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)}
Advance Block
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)}
Belt-Hold
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)}
Breakaway
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)}
Closing Marubozu
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)}
Concealed Baby Swallow
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)}
Counterattack
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)}
Dark Cloud Cover
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)}
Doji
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)}
Doji Star
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)}
Dragonfly Doji
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)}
Engulfing
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)}
Evening Doji Star
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)}
Evening Star
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)}
Gravestone Doji
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)}
Hammer
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)}
Hanging Man
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)}
Harami
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)}
Harami Cross
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)}
High-Wave Candle
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)}
Hikkake Pattern
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)}
Homing Pigeon
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)}
Identical Three Crows
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)}
In-Neck Pattern
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)}
Inverted Hammer
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)}
Kicking
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)}
Kicking - bull/bear determined by longer marubozu
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)}
Ladder Bottom
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)}
Long Line Candle
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)}
Long-Legged Doji
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)}
Marubozu
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)}
Mat Hold
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)}
Matching Low
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)}
Modified Hikkake Pattern
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)}
Morning Doji Star
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)}
Morning Star
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)}
On-Neck Pattern
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)}
Piercing Pattern
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)}
Rickshaw Man
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)}
Rising/Falling Three Methods
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)}
Separating Lines
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)}
Shooting Star
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)}
Short Line Candle
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)}
Spinning Top
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)}
Stalled Pattern
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)}
Stick Sandwich
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)}
Takuri
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)}
Tasuki Gap
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)}
Three Black Crows
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)}
Three Inside Up/Down
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)}
Three Outside Up/Down
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)}
Three Stars In The South
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)}
Three White Soldiers
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)}
Three-Line Strike
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)}
Thrusting Pattern
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)}
Tristar Pattern
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)}
Two Crows
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)}
Unique 3 River
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)}
Up/Down-Gap Side-By-Side White Lines
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)}
Up/Down-Gap Three Methods
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)}
Upside Gap Two Crows
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)}
Homodyne Discriminator
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)} ]
Instantaneous Trendline
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) ]
Phasor
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}) ]
Sine Wave
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) ]
System Evaluator
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 - %)} ]
Volume Profile
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 sizebins(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 ]
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 BandsACOS: Vector Trigonometric ACosAD: Chaikin A/D LineADD: Vector Arithmetic AddADOSC: Chaikin A/D OscillatorADX: Average Directional Movement IndexADXR: Average Directional Movement Index RatingAPO: Absolute Price OscillatorAROON: AroonAROONOSC: Aroon OscillatorASIN: Vector Trigonometric ASinATAN: Vector Trigonometric ATanATR: Average True RangeAVGDEV: Average DeviationAVGPRICE: Average PriceBBANDS: Bollinger BandsBETA: BetaBOP: Balance Of PowerCCI: Commodity Channel IndexCDL2CROWS: Two CrowsCDL3BLACKCROWS: Three Black CrowsCDL3INSIDE: Three Inside Up/DownCDL3LINESTRIKE: Three-Line StrikeCDL3OUTSIDE: Three Outside Up/DownCDL3STARSINSOUTH: Three Stars In The SouthCDL3WHITESOLDIERS: Three Advancing White SoldiersCDLABANDONEDBABY: Abandoned BabyCDLADVANCEBLOCK: Advance BlockCDLBELTHOLD: Belt-holdCDLBREAKAWAY: BreakawayCDLCLOSINGMARUBOZU: Closing MarubozuCDLCONCEALBABYSWALL: Concealing Baby SwallowCDLCOUNTERATTACK: CounterattackCDLDARKCLOUDCOVER: Dark Cloud CoverCDLDOJI: DojiCDLDOJISTAR: Doji StarCDLDRAGONFLYDOJI: Dragonfly DojiCDLENGULFING: Engulfing PatternCDLEVENINGDOJISTAR: Evening Doji StarCDLEVENINGSTAR: Evening StarCDLGAPSIDESIDEWHITE: Up/Down-gap side-by-side white linesCDLGRAVESTONEDOJI: Gravestone DojiCDLHAMMER: HammerCDLHANGINGMAN: Hanging ManCDLHARAMI: Harami PatternCDLHARAMICROSS: Harami Cross PatternCDLHIGHWAVE: High-Wave CandleCDLHIKKAKE: Hikkake PatternCDLHIKKAKEMOD: Modified Hikkake PatternCDLHOMINGPIGEON: Homing PigeonCDLIDENTICAL3CROWS: Identical Three CrowsCDLINNECK: In-Neck PatternCDLINVERTEDHAMMER: Inverted HammerCDLKICKING: KickingCDLKICKINGBYLENGTH: Kicking - bull/bear determined by the longer marubozuCDLLADDERBOTTOM: Ladder BottomCDLLONGLEGGEDDOJI: Long Legged DojiCDLLONGLINE: Long Line CandleCDLMARUBOZU: MarubozuCDLMATCHINGLOW: Matching LowCDLMATHOLD: Mat HoldCDLMORNINGDOJISTAR: Morning Doji StarCDLMORNINGSTAR: Morning StarCDLONNECK: On-Neck PatternCDLPIERCING: Piercing PatternCDLRICKSHAWMAN: Rickshaw ManCDLRISEFALL3METHODS: Rising/Falling Three MethodsCDLSEPARATINGLINES: Separating LinesCDLSHOOTINGSTAR: Shooting StarCDLSHORTLINE: Short Line CandleCDLSPINNINGTOP: Spinning TopCDLSTALLEDPATTERN: Stalled PatternCDLSTICKSANDWICH: Stick SandwichCDLTAKURI: Takuri (Dragonfly Doji with very long lower shadow)CDLTASUKIGAP: Tasuki GapCDLTHRUSTING: Thrusting PatternCDLTRISTAR: Tristar PatternCDLUNIQUE3RIVER: Unique 3 RiverCDLUPSIDEGAP2CROWS: Upside Gap Two CrowsCDLXSIDEGAP3METHODS: Upside/Downside Gap Three MethodsCEIL: Vector CeilCMO: Chande Momentum OscillatorCORREL: Pearson’s Correlation Coefficient (r)COS: Vector Trigonometric CosCOSH: Vector Trigonometric CoshDEMA: Double Exponential Moving AverageDIV: Vector Arithmetic DivDX: Directional Movement IndexEMA: Exponential Moving AverageEXP: Vector Arithmetic ExpFLOOR: Vector FloorHT_DCPERIOD: Hilbert Transform - Dominant Cycle PeriodHT_DCPHASE: Hilbert Transform - Dominant Cycle PhaseHT_PHASOR: Hilbert Transform - Phasor ComponentsHT_SINE: Hilbert Transform - SineWaveHT_TRENDLINE: Hilbert Transform - Instantaneous TrendlineHT_TRENDMODE: Hilbert Transform - Trend vs Cycle ModeIMI: Intraday Momentum IndexKAMA: Kaufman Adaptive Moving AverageLINEARREG: Linear RegressionLINEARREG_ANGLE: Linear Regression AngleLINEARREG_INTERCEPT: Linear Regression InterceptLINEARREG_SLOPE: Linear Regression SlopeLN: Vector Log NaturalLOG10: Vector Log10MA: Moving averageMACD: Moving Average Convergence/DivergenceMACDEXT: MACD with controllable MA typeMACDFIX: Moving Average Convergence/Divergence Fix 12/26MAMA: MESA Adaptive Moving AverageMAVP: Moving average with variable periodMAX: Highest value over a specified periodMAXINDEX: Index of highest value over a specified periodMEDPRICE: Median PriceMFI: Money Flow IndexMIDPOINT: MidPoint over periodMIDPRICE: Midpoint Price over periodMIN: Lowest value over a specified periodMININDEX: Index of lowest value over a specified periodMINMAX: Lowest and highest values over a specified periodMINMAXINDEX: Indexes of lowest and highest values over a specified periodMINUS_DI: Minus Directional IndicatorMINUS_DM: Minus Directional MovementMOM: MomentumMULT: Vector Arithmetic MultNATR: Normalized Average True RangeOBV: On Balance VolumePLUS_DI: Plus Directional IndicatorPLUS_DM: Plus Directional MovementPPO: Percentage Price OscillatorROC: Rate of change : ((price/prevPrice)-1)*100ROCP: Rate of change Percentage: (price-prevPrice)/prevPriceROCR: Rate of change ratio: (price/prevPrice)ROCR100: Rate of change ratio 100 scale: (price/prevPrice)*100RSI: Relative Strength IndexSAR: Parabolic SARSAREXT: Parabolic SAR - ExtendedSIN: Vector Trigonometric SinSINH: Vector Trigonometric SinhSMA: Simple Moving AverageSQRT: Vector Square RootSTDDEV: Standard DeviationSTOCH: StochasticSTOCHF: Stochastic FastSTOCHRSI: Stochastic Relative Strength IndexSUB: Vector Arithmetic SubtractionSUM: SummationT3: Triple Exponential Moving Average (T3)TAN: Vector Trigonometric TanTANH: Vector Trigonometric TanhTEMA: Triple Exponential Moving AverageTRANGE: True RangeTRIMA: Triangular Moving AverageTRIX: 1-day Rate-Of-Change (ROC) of a Triple Smooth EMATSF: Time Series ForecastTYPPRICE: Typical PriceULTOSC: Ultimate OscillatorVAR: VarianceWCLPRICE: Weighted Close PriceWILLR: Williams’ %RWMA: Weighted Moving Average