Skip to content

Indicators Overview

Wickra ships 514 indicators organised into twenty-four families. Each family collects indicators that answer the same kind of question, so the taxonomy here maps one-to-one onto the crates/wickra-core/src/indicators/ source layout.

Every indicator is an O(1) state machine that consumes one input at a time and produces either Option<f64> (Rust), float | None (Python), or number | null (Node). Inputs are either a f64 close price or an OHLCV Candle (Rust) / dict-or-tuple (Python) / column arrays (Node). The full trait surface and warmup-period semantics are covered in Quickstart: Rust and Warmup Periods.

The "Output range" column is the value bounds an indicator emits once warm; "unbounded" means it tracks the price scale of the input. The "Warmup" column quotes warmup_period() as the indicator reports it — the exact first-emission index: the first non-None output lands on input warmup_period() (0-indexed warmup_period() - 1).

The twenty-four families:

#FamilyCountWhat it answers
1Moving Averages26Where is the smoothed trend line?
2Momentum Oscillators33How fast is price changing; is it overbought?
3Trend & Directional28Is there a trend, and which way?
4Price Oscillators15Difference-of-averages momentum around zero.
5Volatility & Bands26How wide is the range; where are the envelopes?
6Bands & Channels16Price-envelope overlays beyond the volatility staples.
7Trailing Stops19Where is the stop-loss for this trend?
8Volume26Is volume confirming the move?
9Price Statistics54Per-bar price transforms and rolling regressions / statistics.
10Ehlers / Cycle (DSP)29Cycle-extracting DSP filters and phase-aware tools.
11Pivots & S/R12Session-anchored pivot levels and swing detectors.
12DeMark19Tom DeMark's exhaustion / setup / countdown family.
13Ichimoku & Charts7Japanese cloud chart and smoothed candles.
14Candlestick Patterns66Classical 1- / 2- / 3-bar candle patterns.
15Market Profile10Session value-area / opening-range / IB levels.
16Risk / Performance28Risk-adjusted return, drawdown, and tail-risk metrics.
17Microstructure20Order-book, trade-flow, price-impact and footprint analytics.
18Derivatives17Funding, open-interest, positioning, flow and basis on a perp/futures feed.
19Alt-Chart Bars10Price-driven Renko / Kagi / Point & Figure bar builders.
20Market Breadth15Universe-wide advance/decline participation.
21Seasonality & Session12When in the day / week / month does this happen?
22Chart Patterns8Swing-based classical chart patterns — double/triple tops, head & shoulders, triangles, wedges, flags, rectangles, cup & handle.
23Harmonic Patterns8Fibonacci-ratio XABCD patterns — Gartley, Bat, Butterfly, Crab, Shark, Cypher, AB=CD, Three Drives.
24Fibonacci10Swing-based Fibonacci tooling — retracement, extension, projection, auto-fib, golden pocket, confluence, fan, arcs, channel, time zones.

Moving Averages

Smooth the price series to surface direction. All are single-input, single-output (f64 → f64) except Vwma, which weights by volume.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
SmaEqual-weighted rolling mean over period closes.f64f64unbounded (price scale)periodperiodIndicator-Sma
EmaEMA with α = 2 / (period + 1), SMA-seeded.f64f64unbounded (price scale)periodperiodIndicator-Ema
WmaLinear weights 1, 2, …, period; newest bar matters most.f64f64unbounded (price scale)periodperiodIndicator-Wma
DemaMulloy's 2·EMA − EMA(EMA); removes first-order EMA lag.f64f64unbounded (price scale)period2·period − 1Indicator-Dema
TemaMulloy's 3·EMA − 3·EMA(EMA) + EMA(EMA(EMA)).f64f64unbounded (price scale)period3·period − 2Indicator-Tema
HmaHull's near-zero-lag WMA(2·WMA(n/2) − WMA(n), √n).f64f64unbounded (price scale)periodperiod + round(√period) − 1Indicator-Hma
KamaKaufman's adaptive average; efficiency ratio picks α per bar.f64f64unbounded (price scale)(er_period=10, fast=2, slow=30)er_period + 1Indicator-Kama
SmmaWilder's RMA: SMA-seeded exponential average, 1/period factor.f64f64unbounded (price scale)periodperiodIndicator-Smma
TrimaA period-window SMA applied twice; triangular weights.f64f64unbounded (price scale)periodperiodIndicator-Trima
ZlemaEMA of the de-lagged series 2·price − price[lag].f64f64unbounded (price scale)periodlag + periodIndicator-Zlema
T3Tillson's six-EMA cascade recombined with a volume factor v.f64f64unbounded (price scale)(period, v=0.7) (Python)6·period − 5Indicator-T3
VwmaRolling mean of closes weighted by each bar's volume.Candlef64unbounded (price scale)periodperiodIndicator-Vwma
AlmaGaussian-weighted MA, kernel centred at offset · (period − 1).f64f64unbounded (price scale)(period=9, offset=0.85, sigma=6.0)periodIndicator-Alma
McGinleyDynamicSelf-adjusting MA, MD + (price − MD) / (0.6 · period · (price / MD)⁴).f64f64unbounded (price scale)period (10 in Python)periodIndicator-McGinleyDynamic
FramaEhlers' fractal-dimension-adaptive EMA over close-only window halves.f64f64unbounded (price scale)period=16 (even)periodIndicator-Frama
VidyaEMA whose alpha scales with |CMO(cmo_period)| / 100.f64f64unbounded (price scale)(period=14, cmo_period=9)cmo_period + 1Indicator-Vidya
JmaJurik MA — three-stage filter reconstruction.f64f64unbounded (price scale)(period=14, phase=0, power=2)1Indicator-Jma
AlligatorThree Smmas of (high + low) / 2: Jaw / Teeth / Lips.CandleAlligatorOutput (3)unbounded (price scale)(jaw=13, teeth=8, lips=5)max(jaw, teeth, lips)Indicator-Alligator
EvwmaElastic volume-weighted recurrence over a rolling window.Candlef64unbounded (price scale)period (20 in Python)periodIndicator-Evwma
AdaptiveLaguerreFilterFour-stage Laguerre filter whose damping adapts to tracking error.f64f64price-bounded (no overshoot)periodperiodIndicator-AdaptiveLaguerreFilter
EhmaExponential Hull MA — EMA(2·EMA(n/2) − EMA(n), √n), low lag.f64f64unbounded (price scale)periodperiod + round(√period) − 1Indicator-Ehma
GeneralizedDemaTillson volume-factor double EMA (1 + v)·EMA − v·EMA(EMA).f64f64unbounded (price scale)(period, v=0.7)2·period − 1Indicator-GeneralizedDema
GeometricMaRolling geometric mean of the last period prices.f64f64(0, ∞)periodperiodIndicator-GeometricMa
HoltWintersHolt double-exp smoothing (level + trend); one-step forecast.f64f64unbounded (price scale)(alpha=0.2, beta=0.1)2Indicator-HoltWinters
MedianMaRolling median of the last period prices (outlier-robust).f64f64unbounded (window min/max)periodperiodIndicator-MedianMa
SineWeightedMaSine-weighted MA (half-cycle weights, centre-heavy).f64f64unbounded (price scale)periodperiodIndicator-SineWeightedMa

Momentum Oscillators

Measure the rate of price change. Several are bounded by construction (0–100 / ±100 oscillators), the rest are difference-driven.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
RsiWilder's RSI; smoothed gain / (gain + loss) × 100.f64f64[0, 100]period = 14 (Python)period + 1Indicator-Rsi
AnchoredRsiCumulative RSI from a user-set anchor bar (RSI of the whole leg).f64f64[0, 100](set anchor via set_anchor())2Indicator-AnchoredRsi
Stochastic%K = (close − low_n)/(high_n − low_n) × 100, smoothed into %D.Candle(k, d)each in [0, 100](k_period=14, d_period=3) (Python)k_period + d_period − 1Indicator-Stochastic
Cci(typical − SMA(typical)) / (0.015 · mean_dev).Candlef64unbounded (typically ±100±200)period = 20 (Python)periodIndicator-Cci
Roc(price − price_n) / price_n × 100; raw percentage change.f64f64unbounded around zeroperiodperiod + 1Indicator-Roc
WilliamsR−100 × (high_n − close) / (high_n − low_n).Candlef64[−100, 0]period = 14 (Python)periodIndicator-WilliamsR
Mfi"Volume-weighted RSI": Wilder smoothing of money-flow ratios.Candlef64[0, 100]period = 14 (Python)periodIndicator-Mfi
AwesomeOscillatorSMA(median, fast) − SMA(median, slow); zero-line crossover.Candlef64unbounded around zero(fast=5, slow=34) (Python)slow_periodIndicator-AwesomeOscillator
Momprice − price[period]; raw price-difference momentum.f64f64unbounded around zeroperiod = 10 (Python)period + 1Indicator-Mom
CmoChande Momentum Oscillator; 100·(Σgain − Σloss)/(Σgain + Σloss).f64f64[−100, 100]period = 14 (Python)period + 1Indicator-Cmo
TsiTrue Strength Index; double-EMA-smoothed momentum ratio.f64f64[−100, 100](long=25, short=13) (Python)long + shortIndicator-Tsi
PmoDecisionPoint Price Momentum Oscillator; doubly-smoothed ROC.f64f64unbounded around zero(smoothing1=35, smoothing2=20) (Python)2Indicator-Pmo
StochRsiStochastic Oscillator applied to the RSI series.f64f64[0, 100](rsi_period=14, stoch_period=14) (Python)rsi_period + stoch_periodIndicator-StochRsi
UltimateOscillatorLarry Williams' weighted three-timeframe buying-pressure oscillator.Candlef64[0, 100](short=7, mid=14, long=28) (Python)max(short,mid,long) + 1Indicator-UltimateOscillator
RviSMA(close − open, period) / SMA(high − low, period).Candlef64unbounded (typically (−1, 1))period = 10 (Python)periodIndicator-Rvi
Pgo(close − SMA(close, period)) / EMA(TR, period).Candlef64unboundedperiod = 14 (Python)periodIndicator-Pgo
KstPring's 1·RCMA_1 + 2·RCMA_2 + 3·RCMA_3 + 4·RCMA_4, plus SMA signal.f64(kst, signal)unbounded9 periods, see deep-divelongest roc_i + sma_i + signal − 1Indicator-Kst
SmiBlau's doubly-EMA-smoothed close-vs-range displacement.Candlef64[−100, 100](period=5, d=3, d2=3)period + d + d2 − 2Indicator-Smi
LaguerreRsiEhlers' 4-stage Laguerre filter with RSI up/down accumulator.f64f64[0, 100] (clamped)gamma = 0.51Indicator-LaguerreRsi
ConnorsRsiAverage of RSI(close), RSI(streak), percentile-rank of returns.f64f64[0, 100](3, 2, 100)max(period_rsi+1, period_streak+2, period_rank+1)Indicator-ConnorsRsi
InertiaLinearRegression(RVI(rvi_period), linreg_period).Candlef64unbounded(rvi=14, linreg=20)rvi_period + linreg_period − 1Indicator-Inertia
RocpRate of Change Percentage; (close − close[period]) / close[period].f64f64unbounded around zeroperiod requiredperiodIndicator-Rocp
RocrRate of Change Ratio; close / close[period].f64f64> 0 around 1period requiredperiodIndicator-Rocr
Rocr100Rate of Change Ratio ×100; close / close[period] · 100.f64f64> 0 around 100period requiredperiodIndicator-Rocr100
DerivativeOscillatorBrown's double-EMA-smoothed RSI minus an SMA signal; zero-centered histogram.f64f64unbounded (around 0)(14, 5, 3, 9)rsi_period + smooth1 + smooth2 + signal − 2Indicator-DerivativeOscillator
DisparityIndexPercentage gap between price and its SMA (the Japanese kairi).f64f64unbounded (around 0)periodperiodIndicator-DisparityIndex
DynamicMomentumIndexChande RSI whose lookback shortens as volatility rises.f64f64[0, 100]period (14)31Indicator-DynamicMomentumIndex
ElderRayBull/Bear Power: each bar's high/low vs. an EMA of close.CandleElderRayOutput (2)unbounded (bull >0, bear <0)period (13)periodIndicator-ElderRay
FisherRsiFisher transform of a normalised RSI; sharp symmetric extremes.f64f64[−3.8, 3.8]periodperiod + 1Indicator-FisherRsi
IntradayMomentumIndexRSI built from the candle body (open→close).Candlef64[0, 100]periodperiodIndicator-IntradayMomentumIndex
QqeSmoothed RSI with an "ATR-of-RSI" trailing line.f64QqeOutput (2)[0, 100]-ish(14, 5, 4.236)72 (defaults)Indicator-Qqe
RmiWilder RSI over a multi-bar momentum lookback.f64f64[0, 100](period, momentum)momentum + periodIndicator-Rmi
RsxJurik-smoothed, low-noise RSI.f64f64[0, 100]lengthlength + 1Indicator-Rsx
StochasticCciStochastic oscillator over the CCI; bounded [0, 100].Candlef64[0, 100]period2·period − 1Indicator-StochasticCci

Trend & Directional

Answer whether a trend exists and which way it points — directional systems, crossover packages and trend-versus-range filters.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
MacdIndicatorEMA(fast) − EMA(slow) plus a signal EMA and the histogram.f64(macd, signal, histogram)unbounded around zero(fast=12, slow=26, signal=9) (Python)slow + signal − 1Indicator-MacdIndicator
AdxWilder's directional system: +DI, −DI and the ADX strength index.Candle(plus_di, minus_di, adx)each in [0, 100]period = 14 (Python)2·periodIndicator-Adx
AdxrWilder's ADX-rating: average of ADX_t and ADX_{t − (period − 1)}.Candlef64[0, 100]period = 14 (Python)3·period − 1Indicator-Adxr
AroonBars-since-high and bars-since-low scaled to [0, 100].Candle(up, down)each in [0, 100]period = 14 (Python)period + 1Indicator-Aroon
TrixRate of change of a triple-smoothed EMA, × 10000.f64f64unbounded around zeroperiod = 15 (Python)3·period − 1Indicator-Trix
AroonOscillatorAroonUp − AroonDown; the two Aroon lines as one gauge.Candlef64[−100, 100]period = 14 (Python)period + 1Indicator-AroonOscillator
VortexVortex Indicator VI+ / VI−; crossings mark trend onset.Candle(plus, minus)each >= 0period = 14 (Python)period + 1Indicator-Vortex
RwiPoulos' Random Walk Index: actual displacement vs ATR_i · sqrt(i).Candle(high, low)each >= 0period = 14 (Python)periodIndicator-Rwi
TiiShare of recent SMA-deviations that are positive, scaled to [0, 100].f64f64[0, 100](sma_period=60, dev_period=30) (Python)sma_period + dev_period − 1Indicator-Tii
WaveTrendLazyBear: 3-stage EMA cascade through the typical-price channel index.Candle(wt1, wt2)typically [-100, +100](channel=10, average=21, signal=4) (Python)2·channel + average + signal − 3Indicator-WaveTrend
MassIndexDorsey's range-expansion sum of the EMA-of-range ratio.Candlef64> 0(ema_period=9, sum_period=25) (Python)2·ema_period + sum_period − 2Indicator-MassIndex
ChoppinessIndexSummed true range over the high-low span, log-scaled.Candlef64[0, 100]period = 14 (Python)periodIndicator-ChoppinessIndex
VerticalHorizontalFilterNet price move divided by total move over period.f64f64[0, 1]period = 28 (Python)period + 1Indicator-VerticalHorizontalFilter
MacdFixMACD with fast/slow fixed at 12/26; only the signal period is tunable.f64(macd, signal, histogram)unboundedsignal requiredsame as MacdIndicator(12, 26, signal)Indicator-MacdFix
MacdExtMACD with a selectable MA type (SMA/EMA/WMA/DEMA/TEMA/TRIMA) per line.f64(macd, signal, histogram)unbounded(fast, fast_type, slow, slow_type, signal, signal_type)slow + signalIndicator-MacdExt
PlusDmWilder-smoothed plus directional movement (+DM).Candlef64>= 0period requiredperiodIndicator-PlusDm
MinusDmWilder-smoothed minus directional movement (−DM).Candlef64>= 0period requiredperiodIndicator-MinusDm
PlusDiPlus Directional Indicator; 100·smoothed(+DM)/smoothed(TR).Candlef64[0, 100]period requiredperiodIndicator-PlusDi
MinusDiMinus Directional Indicator; 100·smoothed(−DM)/smoothed(TR).Candlef64[0, 100]period requiredperiodIndicator-MinusDi
DxDirectional Movement Index; 100·abs(+DI − −DI)/(+DI + −DI).Candlef64[0, 100]period requiredperiodIndicator-Dx
TrendLabelDiscrete trend state from the sign of the rolling OLS slope.f64f64{−1, 0, 1}period >= 2periodIndicator-TrendLabel
GatorOscillatorAlligator convergence/divergence as a two-sided histogram.CandleGatorOscillatorOutput (2)upper ≥ 0, lower ≤ 0(13, 8, 5)max(jaw, teeth, lips)Indicator-GatorOscillator
KasePermissionStochasticDouble-smoothed stochastic fast/slow permission filter.CandleKasePermissionStochasticOutput (2)[0, 100] per line(length=9, smooth=3)length + 2·smooth − 2Indicator-KasePermissionStochastic
PolarizedFractalEfficiencyDirection-signed trend efficiency (straight vs. jagged path).f64f64(−100, +100)(period, smoothing)period + smoothingIndicator-PolarizedFractalEfficiency
QstickRunning average of the candle body close − open.Candlef64unbounded (price units)periodperiodIndicator-Qstick
TrendStrengthIndexSigned of a linear regression of price vs. time.f64f64[−1, +1]period >= 2periodIndicator-TrendStrengthIndex
TtmTrend±1 by whether close is above the SMA of median prices.Candlef64{+1, −1}period (6)periodIndicator-TtmTrend
WavePmKase variance-normalised peak-momentum statistic.f64f64[0, 100)(length=32, smoothing)2·length + smoothing − 1Indicator-WavePm

Price Oscillators

Difference-of-averages and intrabar oscillators that swing around a zero line.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
PpoPercentage Price Oscillator; 100·(EMA_fast − EMA_slow)/EMA_slow.f64f64unbounded around zero (percent)(fast=12, slow=26) (Python)slowIndicator-Ppo
DpoDetrended Price Oscillator; price[t − period/2 − 1] − SMA(period).f64f64unbounded around zeroperiod = 20 (Python)max(period, period/2 + 2)Indicator-Dpo
CoppockCoppock Curve; WMA(ROC(long) + ROC(short), wma_period).f64f64unbounded around zero(roc_long=14, roc_short=11, wma_period=10) (Python)max(roc_long, roc_short) + wma_periodIndicator-Coppock
AcceleratorOscillatorAO − SMA(AO, signal); the acceleration of momentum.Candlef64unbounded around zero(ao_fast=5, ao_slow=34, signal_period=5) (Python)ao_slow + signal_period − 1Indicator-AcceleratorOscillator
BalanceOfPower(close − open) / (high − low); intrabar buyer/seller control.Candlef64[−1, +1](no parameters)1Indicator-BalanceOfPower
ApoAbsolute Price Oscillator; raw EMA_fast − EMA_slow.f64f64unbounded around zero(fast=12, slow=26) (Python)slowIndicator-Apo
AwesomeOscillatorHistogramAO − AO_{t-1}; differenced Awesome Oscillator.Candlef64unbounded around zero(fast=5, slow=34) (Python)slow + 1Indicator-AwesomeOscillatorHistogram
CfoChande Forecast Oscillator; 100·(close − linreg_endpoint)/close.f64f64unbounded around zero (percent)period = 14 (Python)periodIndicator-Cfo
ZeroLagMacdMACD with ZLEMA in place of EMA; faster, slightly noisier.f64(macd, signal, histogram)unbounded around zero(fast=12, slow=26, signal=9)~50Indicator-ZeroLagMacd
ElderImpulseAlexander Elder's (EMA-slope, MACD-hist-slope) regime classifier.f64f64 (-1, 0, +1){-1, 0, +1}(ema_period=13, macd...) (Python)slow + signal − 1Indicator-ElderImpulse
StcSchaff Trend Cycle; double-stochastic of MACD.f64f64[0, 100](fast=23, slow=50, cycle=10) (Python)~slow + cycleIndicator-Stc
TsfOscillatorTime Series Forecast Oscillator; 100·(close − TSF)/close (one bar ahead).f64f64unbounded around zero (percent)period = 14 (Python)periodIndicator-TsfOscillator
MacdHistogramStandalone MACD histogram; macd − signal.f64f64unbounded around zero(fast=12, slow=26, signal=9) (Python)slow + signal − 1Indicator-MacdHistogram
PpoHistogramPPO histogram; ppo − EMA(ppo, signal), scale-free.f64f64unbounded around zero (percent)(fast=12, slow=26, signal=9) (Python)slow + signal − 1Indicator-PpoHistogram

Volatility & Bands

Indicators that measure dispersion / range and those that draw an envelope around price.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
AtrWilder-smoothed True Range; per-bar absolute volatility.Candlef64[0, ∞) (price scale)period = 14 (Python)periodIndicator-Atr
BollingerBandsSMA middle band with ±multiplier × population_stddev bands.f64(upper, middle, lower, stddev)unbounded (price scale)(period=20, multiplier=2.0) (Python)periodIndicator-BollingerBands
KeltnerEMA middle band with ±multiplier × ATR bands.Candle(upper, middle, lower)unbounded (price scale)(ema_period=20, atr_period=10, multiplier=2.0) (Python)max(ema_period, atr_period)Indicator-Keltner
DonchianHighest high and lowest low over period bars.Candle(upper, middle, lower)unbounded (price scale)period = 20 (Python)periodIndicator-Donchian
Natr100·ATR/close; ATR as a percentage.Candlef64[0, ∞) (percent)period = 14 (Python)periodIndicator-Natr
StdDevRolling population standard deviation of price.f64f64[0, ∞) (price scale)period = 20 (Python)periodIndicator-StdDev
UlcerIndexRMS of trailing-high drawdowns; downside-only risk.f64f64[0, ∞) (percent)period = 14 (Python)2·period − 1Indicator-UlcerIndex
HistoricalVolatilityAnnualised sample stddev of log returns.f64f64[0, ∞) (annualised percent)(period=20, trading_periods=252) (Python)period + 1Indicator-HistoricalVolatility
BollingerBandwidth(upper − lower) / middle of the Bollinger Bands.f64f64[0, ∞)(period=20, multiplier=2.0) (Python)periodIndicator-BollingerBandwidth
PercentB(price − lower) / (upper − lower); price position in the bands.f64f64unbounded (01 inside)(period=20, multiplier=2.0) (Python)periodIndicator-PercentB
TrueRangemax(H−L, |H−prevC|, |L−prevC|); raw single-bar volatility.Candlef64[0, ∞) (price scale)(no parameters)1Indicator-TrueRange
ChaikinVolatilityRate of change of an EMA-smoothed high-low spread.Candlef64unbounded around zero (percent)(ema_period=10, roc_period=10) (Python)ema_period + roc_periodIndicator-ChaikinVolatility
DetrendedStdDevStandard deviation of OLS residuals — noise around the trend.f64f64[0, ∞) (price scale)periodperiodIndicator-DetrendedStdDev
RVIVolatilityRSI-shaped volatility direction gauge built on rolling stddev.f64f64[0, 100]period = 10 (Python)2·period − 1Indicator-RviVolatility
ParkinsonVolatilityHigh-low realised vol; ~5× more efficient than C2C stddev.Candlef64[0, ∞) (annualised percent)(period=20, trading_periods=252) (Python)periodIndicator-ParkinsonVolatility
GarmanKlassVolatilityOHLC realised vol; ~7.4× efficient, biased under drift.Candlef64[0, ∞) (annualised percent)(period=20, trading_periods=252) (Python)periodIndicator-GarmanKlassVolatility
RogersSatchellVolatilityDrift-free OHLC realised vol; exact under arbitrary Brownian drift.Candlef64[0, ∞) (annualised percent)(period=20, trading_periods=252) (Python)periodIndicator-RogersSatchellVolatility
YangZhangVolatilityDrift- and gap-robust OHLC blend of overnight, open-close and Rogers-Satchell.Candlef64[0, ∞) (annualised percent)(period=20, trading_periods=252) (Python)period + 1Indicator-YangZhangVolatility
JumpIndicatorReturn-outlier flag vs trailing volatility (deviation from the mean).f64f64{−1, 0, 1}(period, threshold)period + 2Indicator-JumpIndicator
RegimeLabelVolatility-quantile regime: −1 calm / 0 normal / +1 stressed.f64f64{−1, 0, 1}(vol_period, lookback)vol_period + lookbackIndicator-RegimeLabel
BipowerVariationRealized Bipower Variation — a jump-robust estimator of integrated variance built from products of adjacent absolute log returns instead of squares.f64f64[0, ∞) (variance scale)(period = 20) (Python)period + 1Indicator-BipowerVariation
EwmaVolatilityEWMA Volatility — the RiskMetrics exponentially-weighted volatility of log returns, reacting instantly to a shock and forgetting it at rate λ.f64f64[0, ∞) (per-period volatility of log returns)(lambda = 0.94) (Python)2Indicator-EwmaVolatility
Garch11GARCH(1,1) conditional volatility — the EWMA recursion plus a constant ω that anchors the estimate to a finite, mean-reverting long-run variance.f64f64(0, ∞) (strictly positive per-period volatility)(omega = 0.000002, alpha = 0.1, beta = 0.88) (Python)2Indicator-Garch11
VolatilityConeVolatility Cone — where the current realized volatility sits inside its own historical envelope (min / median / max / percentile) over a lookback window.CandleVolatilityConeOutputcurrent/min/median/max in [0, ∞); percentile in [0, 100](window = 20, lookback = 60) (Python)window + lookbackIndicator-VolatilityCone
VolatilityOfVolatilityVolatility of Volatility — the standard deviation of a rolling realized- volatility series; how unstable the volatility regime itself is.f64f64[0, ∞)(vol_window = 20, vov_window = 20) (Python)vol_window + vov_windowIndicator-VolatilityOfVolatility
VolatilityRatioSchwager's Volatility Ratio — today's true range divided by the EMA of the prior true ranges; a reading above 2.0 marks a wide-ranging day.Candlef64[0, ∞) (1.0 = today's range equals its typical level)(period = 14) (Python)period + 2Indicator-VolatilityRatio

Bands & Channels

Price-envelope overlays beyond the volatility-housed Bollinger / Keltner / Donchian trio. Eleven additional bands organised by what drives their width: fixed percent, ATR, range, regression-residual stddev, fractal swings, or volume-weighted stddev.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
MaEnvelopeSMA centerline with fixed-percent envelope.f64(upper, middle, lower)unbounded (price scale)(period=20, percent=0.025) (Python)periodIndicator-MaEnvelope
AccelerationBandsPrice Headley's momentum-biased bands; width scales with (H − L) / (H + L).Candle(upper, middle, lower)unbounded (price scale)(period=20, factor=0.001) (Python)periodIndicator-AccelerationBands
StarcBandsStoller Average Range Channel — SMA(close) ± k·ATR.Candle(upper, middle, lower)unbounded (price scale)(sma_period=6, atr_period=15, multiplier=2.0) (Python)max(sma_period, atr_period)Indicator-StarcBands
AtrBandsClose-anchored envelope close ± k·ATR; stop/target bracket.Candle(upper, middle, lower)unbounded (price scale)(period=14, multiplier=3.0) (Python)periodIndicator-AtrBands
HurstChannelSMA centerline wrapped by the rolling high-low range.Candle(upper, middle, lower)unbounded (price scale)(period=10, multiplier=0.5) (Python)periodIndicator-HurstChannel
LinRegChannelOLS endpoint ± k · σ of regression residuals.f64(upper, middle, lower)unbounded (price scale)(period=20, multiplier=2.0) (Python)periodIndicator-LinRegChannel
StandardErrorBandsOLS endpoint ± k · stderr (n − 2 denominator).f64(upper, middle, lower)unbounded (price scale)(period=21, multiplier=2.0) (Python)periodIndicator-StandardErrorBands
DoubleBollingerTwo concentric Bollinger envelopes (±k_inner·σ, ±k_outer·σ).f645 bandsunbounded (price scale)(period=20, k_inner=1.0, k_outer=2.0) (Python)periodIndicator-DoubleBollinger
TtmSqueezeBB-inside-KC squeeze flag + detrended-close momentum (LinReg).Candle(squeeze, momentum)squeeze ∈ {0,1}; momentum unbounded(period=20, bb_mult=2.0, kc_mult=1.5) (Python)periodIndicator-TtmSqueeze
FractalChaosBandsStep-function envelope of the latest Bill Williams 5-bar fractals.Candle(upper, lower)unbounded (price scale)k = 2 (Python)2k + 1 plus first fractal of each kindIndicator-FractalChaosBands
VwapStdDevBandsCumulative VWAP ± k·σ (volume-weighted standard deviation).Candle(upper, middle, lower, stddev)unbounded (price scale)multiplier = 2.0 (Python)1Indicator-VwapStdDevBands
BomarBandsAdaptive percentage bands around a moving average, sized so that a fixed coverage fraction of recent closes falls inside them.f64BomarBandsOutput { upper, middle, lower }unbounded; lower ≤ middle ≤ upperperiod = 20, coverage = 0.85period (exact — first emission on bar period)Indicator-BomarBands
MedianChannelA robust analogue of Bollinger Bands: centre on the rolling median, size by the median absolute deviation (MAD).f64MedianChannelOutput { upper, middle, lower }unbounded; lower ≤ middle ≤ upperperiod = 20, multiplier = 2.0period (exact — first emission on bar period)Indicator-MedianChannel
ProjectionBandsMel Widner's forward-projected high/low envelope: fit a separate regression to the highs and to the lows, slide every bar forward along its slope, and take the running max / min.CandleProjectionBandsOutput { upper, middle, lower }unbounded; lower ≤ middle ≤ upperperiod = 14period (exact — first emission on bar period)Indicator-ProjectionBands
ProjectionOscillatorMel Widner's companion to the projection bands: where the close sits inside the [lower, upper] projection envelope, scaled to 0..100.Candlef640..100 (≈) — 0 on the lower band, 100 on the upper, 50 at the midlineperiod = 14period (exact — first emission on bar period)Indicator-ProjectionOscillator
QuartileBandsA non-parametric envelope drawn at the rolling 25th / 50th / 75th percentiles — order statistics instead of mean ± sigma.f64QuartileBandsOutput { upper, middle, lower }unbounded; lower ≤ middle ≤ upperperiod = 20period (exact — first emission on bar period)Indicator-QuartileBands

Trailing Stops

ATR-driven stop-loss trackers: per-bar levels that follow a trend and flip when price closes through them.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
PsarWilder's Parabolic Stop-and-Reverse; flips sides on a crossing.Candlef64unbounded (price scale)(af_start=0.02, af_step=0.02, af_max=0.20) (Python)2Indicator-Psar
SuperTrendATR-banded trailing stop with explicit flip logic.Candle(value, direction)value price scale; direction ±1(atr_period=10, multiplier=3.0) (Python)atr_periodIndicator-SuperTrend
ChandelierExithighest_high − k·ATR (long) and lowest_low + k·ATR (short).Candle(long_stop, short_stop)unbounded (price scale)(period=22, multiplier=3.0) (Python)periodIndicator-ChandelierExit
ChandeKrollStopTwo-stage ATR stop: extreme-based, then smoothed.Candle(stop_long, stop_short)unbounded (price scale)(atr_period=10, atr_multiplier=1.0, stop_period=9) (Python)atr_period + stop_period − 1Indicator-ChandeKrollStop
AtrTrailingStopA single line trailing the close by k·ATR, ratcheting.Candlef64unbounded (price scale)(atr_period=14, multiplier=3.0) (Python)atr_periodIndicator-AtrTrailingStop
HiLoActivatorSMA(high) / SMA(low) state-machine trail (Crabel-style).Candlef64unbounded (price scale)period = 3 (Python)period + 1Indicator-HiLoActivator
VoltyStopKase's extreme-close-anchored ATR trail (no give-back on pullbacks).Candlef64unbounded (price scale)(atr_period=14, multiplier=2.0)atr_period + 1Indicator-VoltyStop
YoyoExitLong-only ATR trail with passive re-entry trigger above the trail.Candlef64unbounded (price scale)(atr_period=14, multiplier=2.0)atr_period + 1Indicator-YoyoExit
DonchianStopTurtle exit channel: lowest low / highest high over period.Candle(stop_long, stop_short)unbounded (price scale)period = 10periodIndicator-DonchianStop
PercentageTrailingStopFixed-percentage flip-on-close-through trail.f64f64unbounded (price scale)percent = 5.01Indicator-PercentageTrailingStop
StepTrailingStopGrid-snapped trail; ratchets in discrete step_size increments.f64f64unbounded (price scale, snapped)step_size = 1.01Indicator-StepTrailingStop
RenkoTrailingStopRenko-brick-anchored trail; anchor moves only after full-brick advance.f64f64unbounded (price scale)block_size = 1.01Indicator-RenkoTrailingStop
SarExtExtended Parabolic SAR: start value, reversal offset, separate long/short acceleration, signed output.Candlef64 (signed)price scale; sign = directionWilder defaults (0.02, 0.02, 0.20) both ways2Indicator-SarExt
AtrRatchetPerry Kaufman's time-based volatility stop — it tightens by a fixed fraction of ATR every bar, so a stalled trade is squeezed out even in a flat market.CandleAtrRatchetOutput { value, direction }value in price units; direction(atr_period = 14, start_mult = 4.0, increment = 0.1)atr_periodIndicator-AtrRatchet
ElderSafeZoneAlexander Elder's trailing stop placed a multiple of the average market noise away from price — wide enough to survive normal pullbacks, tight enough to exit a real reversal.CandleElderSafeZoneOutput { value, direction }value in price units; direction(period = 14, coeff = 2.0)period + 1Indicator-ElderSafeZone
KaseDevStopCynthia Kase's volatility trailing stop, built on the standard deviation of the two-bar true range — it ratchets in the trend's favour and flips on a close through the line.CandleKaseDevStopOutput { value, direction }value in price units; direction(period = 30, dev = 1.0)period + 1Indicator-KaseDevStop
ModifiedMaStopA trailing stop riding the Modified Moving Average (SMMA / Wilder's RMA), ratcheted so it only moves in the trend's favour and flips on a decisive cross.CandleModifiedMaStopOutput { value, direction }value in price units; direction(period = 14) (Python)periodIndicator-ModifiedMaStop
NrtrNick Rypock Trailing Reverse — a scale-free percentage trailing-reverse stop that follows the trend extreme and flips when price retraces by a fixed percentage.CandleNrtrOutput { value, direction }value in price units; direction(pct = 2.0) (Python)1Indicator-Nrtr
TimeBasedStopA holding-period timer — it ignores price entirely and fires after a fixed number of bars, reporting the fraction of the window elapsed.Candlef64[0, 1] (1.0 = stop fired)(max_bars = 10) (Python)1Indicator-TimeBasedStop

Volume

Price moves weighted or confirmed by traded volume. All take Candle input.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
ObvOn-Balance Volume: cumulative signed volume.Candlef64unbounded (drifts with volume)(no parameters)1Indicator-Obv
VwapCumulative volume-weighted average price from the stream start; a sibling RollingVwap(period) is exposed for a finite window.Candlef64unbounded (price scale)(no parameters)1 (cumulative); period (rolling)Indicator-Vwap (cumulative + rolling)
AdlAccumulation/Distribution Line; cumulative range-weighted volume.Candlef64unbounded (drifts with volume)(no parameters)1Indicator-Adl
VolumePriceTrendCumulative volume · ROC; volume weighted by percentage move.Candlef64unbounded (drifts with volume)(no parameters)1Indicator-VolumePriceTrend
ChaikinMoneyFlowSummed money-flow volume over summed volume across period bars.Candlef64[−1, +1]period = 20 (Python)periodIndicator-ChaikinMoneyFlow
ChaikinOscillatorEMA(ADL, fast) − EMA(ADL, slow); the MACD of the ADL.Candlef64unbounded around zero(fast=3, slow=10) (Python)slowIndicator-ChaikinOscillator
ForceIndexEMA((close − prev_close) · volume, period).Candlef64unbounded around zeroperiod = 13 (Python)period + 1Indicator-ForceIndex
EaseOfMovementSMA of distance travelled per unit of volume.Candlef64unbounded around zero(period=14, divisor=1e8) (Python)period + 1Indicator-EaseOfMovement
RollingVwapVWAP over a finite rolling window (vs the cumulative Vwap).Candlef64unbounded (price scale)periodperiodIndicator-RollingVwap
AnchoredVwapCumulative VWAP from a user-set anchor bar (event-anchored fair price).Candlef64unbounded (price scale)(set anchor via set_anchor())1 post-anchorIndicator-AnchoredVwap
AdOscillatorWilliams' Accumulation/Distribution — volume-less cumulative price flow.Candlef64unbounded(no parameters)2Indicator-AdOscillator
KvoKlinger Volume Oscillator — long/short EMAs of trend-aware volume force.Candle(kvo, signal)unbounded around zero(34, 55, 13)slow + signal − 1Indicator-Kvo
VolumeOscillator100·(SMA(vol,fast) − SMA(vol,slow))/SMA(vol,slow).Candlef64unbounded above −100(fast=14, slow=28)slowIndicator-VolumeOscillator
VzoVolume Zone Oscillator — 100·EMA(signed vol)/EMA(|vol|).Candlef64[−100, +100]period = 14period + 1Indicator-Vzo
TsvTime Segmented Volume — rolling sum of (close-change · volume).Candlef64unbounded around zeroperiod = 18period + 1Indicator-Tsv
NviNegative Volume Index — cumulative; updates only on volume contraction.Candlef64unbounded (anchored at 1000)(no parameters)2Indicator-Nvi
PviPositive Volume Index — mirror of NVI; updates only on volume expansion.Candlef64unbounded (anchored at 1000)(no parameters)2Indicator-Pvi
DemandIndexSibbet's EMA-smoothed buying-vs-selling pressure ratio.Candlef64unbounded (typically [-100, +100])period = 20period + 1Indicator-DemandIndex
MarketFacilitationIndexWilliams' (high − low) / volume per-bar facilitation.Candlef64[0, ∞)(no parameters)1Indicator-MarketFacilitationIndex
BetterVolumeA Volume-Spread-Analysis "effort versus result" oscillator — positive means a bar spent more volume than its range warranted (churn), negative means it moved far on light volume (ease of movement).Candlef64centred near 0 (+ = churn, = ease of movement)(period = 20) (Python)periodIndicator-BetterVolume
IntradayIntensityDavid Bostian's Intraday Intensity Index — a cumulative line weighting each bar's volume by where the close sits inside its range.Candlef64(−∞, +∞) (a cumulative line; only slope/divergence matters)(no parameters)1Indicator-IntradayIntensity
TradeVolumeIndexCumulative volume signed by a minimum-tick rule — adds volume on up-ticks, subtracts on down-ticks, and holds direction through sub-tick churn.Candlef64(−∞, +∞) (a cumulative line; only slope/divergence matters)(min_tick = 0.5) (Python)2Indicator-TradeVolumeIndex
TwiggsMoneyFlowColin Twiggs' refinement of Chaikin Money Flow — true-range boundaries and Wilder exponential smoothing make a faster, gap-aware [−1, +1] money-flow oscillator.Candlef64≈ [−1, +1] (positive = buying pressure)(period = 21) (Python)period + 1Indicator-TwiggsMoneyFlow
VolumeRsiWilder's RSI applied to the volume stream instead of price — a [0, 100] oscillator of expanding versus contracting participation.Candlef64[0, 100] (50 = balanced volume changes)(period = 14) (Python)period + 1Indicator-VolumeRsi
VolumeWeightedMacdMACD built on volume-weighted moving averages — heavy-volume bars dominate the trend estimate, so crossovers reflect where real participation occurred.CandleVolumeWeightedMacdOutput { macd, signal, histogram }(−∞, +∞) for each field(fast = 12, slow = 26, signal = 9)slow + signal − 1Indicator-VolumeWeightedMacd
WadLarry Williams' Accumulation/Distribution — a cumulative, volume-free line that adds true-low accumulation on up-closes and true-high distribution on down-closes.Candlef64(−∞, +∞) (a cumulative line; only slope/divergence matters)(no parameters)2Indicator-Wad

Price Statistics

Per-bar price transforms and rolling least-squares regressions.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
TypicalPrice(high + low + close) / 3.Candlef64unbounded (price scale)(no parameters)1Indicator-TypicalPrice
MedianPrice(high + low) / 2.Candlef64unbounded (price scale)(no parameters)1Indicator-MedianPrice
WeightedClose(high + low + 2·close) / 4.Candlef64unbounded (price scale)(no parameters)1Indicator-WeightedClose
LinearRegressionEndpoint of the rolling least-squares line.f64f64unbounded (price scale)period = 14 (Python)periodIndicator-LinearRegression
LinRegSlopeSlope of the rolling least-squares line.f64f64unbounded around zeroperiod = 14 (Python)periodIndicator-LinRegSlope
ZScore(price − SMA(n)) / population_stddev(n).f64f64unbounded around zeroperiod = 20 (Python)periodIndicator-ZScore
LinRegAngleThe rolling regression slope as a degree angle.f64f64(−90°, +90°)period = 14 (Python)periodIndicator-LinRegAngle
VarianceRolling population variance (second central moment).f64f64[0, ∞)periodperiodIndicator-Variance
CoefficientOfVariationStdDev / Mean — dimensionless dispersion.f64f64[0, ∞)periodperiodIndicator-CoefficientOfVariation
SkewnessRolling Pearson skewness (third standardised moment).f64f64unboundedperiodperiodIndicator-Skewness
KurtosisRolling excess kurtosis (fourth standardised moment − 3).f64f64[-2, ∞)periodperiodIndicator-Kurtosis
StandardErrorStandard error of the rolling OLS line; trend-detrended volatility.f64f64[0, ∞)periodperiodIndicator-StandardError
RSquaredR² of the rolling OLS fit; fraction of variance explained.f64f64[0, 1]periodperiodIndicator-RSquared
MedianAbsoluteDeviationRobust dispersion: median(|x − median|).f64f64[0, ∞)periodperiodIndicator-MedianAbsoluteDeviation
AutocorrelationRolling lag-k Pearson autocorrelation.f64f64[-1, +1](period, lag)periodIndicator-Autocorrelation
HurstExponentRescaled-range (R/S) Hurst exponent estimate.f64f64typically (0, 1)(period, chunks)periodIndicator-HurstExponent
PearsonCorrelationRolling Pearson correlation of two synchronised series.(f64, f64)f64[-1, +1]periodperiodIndicator-PearsonCorrelation
BetaRolling OLS sensitivity of asset to benchmark.(f64, f64)f64unboundedperiodperiodIndicator-Beta
PairwiseBetaRolling OLS slope of one asset's log-returns on another's.(f64, f64)f64unboundedperiodperiod + 1Indicator-PairwiseBeta
PairSpreadZScoreZ-score of the log-spread ln(a) − β·ln(b) of a pair.(f64, f64)f64unbounded(beta_period, z_period)beta_period + z_period − 1Indicator-PairSpreadZScore
LeadLagCrossCorrelationOffset that maximises |corr(a[t], b[t+k])| — which asset leads.(f64, f64){lag, correlation}lag ∈ [−max_lag, max_lag](window, max_lag)window + 2·max_lagIndicator-LeadLagCrossCorrelation
CointegrationEngle–Granger hedge ratio + ADF stationarity test on the spread.(f64, f64){hedge_ratio, spread, adf_stat}adf_stat unbounded(period, adf_lags)periodIndicator-Cointegration
RelativeStrengthABRatio line a / b with its moving average and RSI.(f64, f64){ratio, ratio_ma, ratio_rsi}ratio_rsi ∈ [0, 100](ma_period, rsi_period)max(ma_period, rsi_period + 1)Indicator-RelativeStrengthAB
SpearmanCorrelationRolling rank correlation; monotone-relationship robust.(f64, f64)f64[-1, +1]periodperiodIndicator-SpearmanCorrelation
AvgPriceAverage Price; (open + high + low + close) / 4.Candlef64price scalenone1Indicator-AvgPrice
MidPrice(highest high + lowest low) / 2 over period candles.Candlef64price scaleperiod requiredperiodIndicator-MidPrice
MidPoint(highest + lowest) / 2 of a scalar series over period.f64f64price scaleperiod requiredperiodIndicator-MidPoint
LinRegInterceptIntercept a of the rolling OLS fit y = a + b·x (value at x = 0).f64f64price scaleperiod >= 2periodIndicator-LinRegIntercept
TsfTime Series Forecast; OLS line projected one bar ahead (a + b·period).f64f64price scaleperiod >= 2periodIndicator-Tsf
LogReturnLogarithmic return over a fixed lag, ln(p_t / p_{t−period}).f64f64unboundedperiodperiod + 1Indicator-LogReturn
RealizedVolatility√(Σ r²) raw quadratic variation over period returns.f64f64[0, ∞)periodperiod + 1Indicator-RealizedVolatility
RollingQuantileInterpolated q-th quantile over period values (type-7).f64f64within window(period, quantile)periodIndicator-RollingQuantile
RollingIqrInterquartile range Q3 − Q1; robust dispersion.f64f64[0, ∞)periodperiodIndicator-RollingIqr
RollingPercentileRankPercentile rank of the latest value within its window.f64f64[0, 100]periodperiodIndicator-RollingPercentileRank
SpreadAr1CoefficientAR(1) coefficient ρ of the spread a − b (cointegration strength).(f64, f64)f64~[0, 1] if stationaryperiod >= 3periodIndicator-SpreadAr1Coefficient
CloseVsOpenSigned body as a fraction of open, (close − open)/open.Candlef64unbounded(no parameters)1Indicator-CloseVsOpen
BodySizePctAbsolute body as a fraction of the bar range.Candlef64[0, 1](no parameters)1Indicator-BodySizePct
WickRatioSigned upper-vs-lower shadow imbalance over the range.Candlef64[−1, 1](no parameters)1Indicator-WickRatio
HighLowRangeBar range as a fraction of close (scale-free volatility).Candlef64[0, ∞)(no parameters)1Indicator-HighLowRange
OuHalfLifeOrnstein–Uhlenbeck half-life of mean reversion of the spread a − b.(f64, f64)f64[0, ∞); 0 = no finite half-lifeperiod >= 3periodIndicator-OuHalfLife
GrangerCausalityRolling F-statistic: does b help predict a?(f64, f64)f64[0, ∞)(period, lag)periodIndicator-GrangerCausality
KalmanHedgeRatioDynamic hedge ratio between two series via an online Kalman filter.(f64, f64){hedge_ratio, intercept, spread}unbounded(delta, observation_var)1Indicator-KalmanHedgeRatio
VarianceRatioLo–MacKinlay variance ratio of the spread a − b.(f64, f64)f64[0, ∞); 1 = random walk(period, q)periodIndicator-VarianceRatio
RollingCorrelationRolling Pearson correlation of the two series' returns.(f64, f64)f64[-1, +1]periodperiod + 1Indicator-RollingCorrelation
RollingCovarianceRolling covariance of the two series' returns.(f64, f64)f64unboundedperiodperiod + 1Indicator-RollingCovariance
SpreadHurstHurst exponent of the spread a − b (pairs regime detection).(f64, f64)f64~[0, 1]period >= 8periodIndicator-SpreadHurst
SpreadBollingerBandsBollinger bands on the spread a − b of two series.(f64, f64){middle, upper, lower, percent_b}bands in spread units(period, num_std)periodIndicator-SpreadBollingerBands
BetaNeutralSpreadRolling OLS residual of a on b — the beta-neutral spread.(f64, f64)f64unboundedperiodperiodIndicator-BetaNeutralSpread
DistanceSsdGatev sum of squared deviations between two normalised series.(f64, f64)f64[0, ∞)periodperiodIndicator-DistanceSsd
JarqueBeraThe Jarque-Bera statistic on a rolling window — a normality test that flags fat-tailed or skewed return regimes from skewness and excess kurtosis.f64f64[0, ∞) (0 = perfectly normal sample)(period = 50) (Python)periodIndicator-JarqueBera
KendallTauKendall's tau-b — a robust rank correlation between two series measured by the balance of concordant and discordant pairs, with a tie correction.(f64, f64)f64[−1, +1](period = 20) (Python)periodIndicator-KendallTau
RollingMinMaxScalerThe streaming MinMaxScaler — maps the current value onto [0, 1] against the min and max of the trailing window.f64f64[0, 1] (0 = window low, 1 = window high)(period = 14) (Python)periodIndicator-RollingMinMaxScaler
SampleEntropyRichman & Moorman's Sample Entropy (SampEn) — how regular a window is: the negative log probability that points similar for m steps stay similar at the next step.f64f64[0, ∞) (low = regular/predictable, high = irregular)(period = 50, m = 2, r_factor = 0.2)periodIndicator-SampleEntropy
ShannonEntropyThe Shannon information entropy (in bits) of a rolling window's binned distribution — a regime gauge for how spread-out and unpredictable recent prices are.f64f64[0, log2(bins)](period = 32, bins = 8) (Python)periodIndicator-ShannonEntropy

Ehlers / Cycle (DSP)

John Ehlers' family of DSP cycle filters, phase-extraction tools, and adaptive smoothers. All take f64 price input.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
MamaMESA Adaptive MA — adaptive alpha from Hilbert phase.f64(mama, fama)unbounded (price scale)(0.5, 0.05)~30Indicator-Mama
FamaScalar wrapper exposing only MAMA's slow follower line.f64f64unbounded (price scale)(0.5, 0.05)~30Indicator-Fama
FisherTransformMin/max-normalises price + 0.5·ln((1+x)/(1-x)).f64f64unbounded; mostly [-2, +2]periodperiodIndicator-FisherTransform
InverseFisherTransformtanh(scale · input); bounded squash.f64f64[-1, +1]scale1Indicator-InverseFisherTransform
SuperSmootherEhlers' 2-pole Butterworth lowpass filter.f64f64unbounded (price scale)period2Indicator-SuperSmoother
HilbertDominantCycleTruncated-Hilbert phase-derived dominant cycle period.f64f64[6, 50](no parameters)~50Indicator-HilbertDominantCycle
SineWavesin(phase) from Hilbert phase; pair with lead() for cross.f64f64[-1, +1](no parameters)~50Indicator-SineWave
Decyclerprice − HighPass(price) — low-lag trend extractor.f64f64unbounded (price scale)period2Indicator-Decycler
DecyclerOscillatorDifference of fast and slow Decyclers — MACD-shape.f64f64unbounded around zero(fast, slow)2Indicator-DecyclerOscillator
RoofingFilterHigh-pass + SuperSmoother = cycle-band bandpass.f64f64unbounded around zero(lp, hp) (default 10, 48)2Indicator-RoofingFilter
CenterOfGravityLinear-weighted price barycenter, near-zero-lag.f64f64unbounded around zeroperiodperiodIndicator-CenterOfGravity
CyberneticCycle4-tap pre-smoother + 2nd-order high-pass cycle extractor.f64f64unbounded around zeroperiod6Indicator-CyberneticCycle
AdaptiveCycleHalf-period wrapper over HilbertDominantCycle for adaptive oscillators.f64f64[3, 25] (integer)(no parameters)~50Indicator-AdaptiveCycle
EmpiricalModeDecompositionBandpass + envelope EMD; regime classifier.f64f64unbounded around zero(period, fraction)periodIndicator-EmpiricalModeDecomposition
EhlersStochasticStochastic on Roofing-Filter output ([-1, +1] scale).f64f64[-1, +1]periodperiod + ~50Indicator-EhlersStochastic
InstantaneousTrendlineNear-zero-lag tuned recurrence — fast trend line.f64f64unbounded (price scale)periodperiodIndicator-InstantaneousTrendline
HtPhasorHilbert-transform in-phase / quadrature components of the analytic signal.f64(inphase, quadrature)unboundednone19Indicator-HtPhasor
HtDcPhaseHilbert-transform dominant-cycle phase, in degrees.f64f64bounded phase band (deg)none50Indicator-HtDcPhase
HtTrendModeEhlers' trend (1) vs cycle (0) classification.f64f64{0, 1}none50Indicator-HtTrendMode
AdaptiveCciLambert's CCI with an efficiency-ratio-adaptive centre line — it leads in trends and stays calm in chop.Candlef64unbounded around 0 (≈ ±100 bands)(period = 20) (Python)periodIndicator-AdaptiveCci
AdaptiveRsiWilder's RSI whose up/down averaging adapts to trendiness via Kaufman's efficiency ratio — fast in clean moves, smooth through chop.f64f64[0, 100] (50 = neutral)(period = 14) (Python)period + 1Indicator-AdaptiveRsi
AutocorrelationPeriodogramEhlers' Autocorrelation Periodogram — estimates the market's dominant cycle period by correlating a roofing-filtered price with lagged copies of itself.f64f64[min_period, max_period](min_period = 10, max_period = 48)max_period + 3Indicator-AutocorrelationPeriodogram
BandpassFilterEhlers' two-pole bandpass resonator — isolates the cyclic component around a target period, rejecting both trend and high-frequency noise.f64f64zero-mean oscillator (price units)(period = 20, bandwidth = 0.3)1Indicator-BandpassFilter
CorrelationTrendIndicatorEhlers' CTI — the Pearson correlation of price against a straight time ramp; +1 is a clean uptrend, −1 a clean downtrend, 0 no linear trend.f64f64[−1, +1](period = 20) (Python)periodIndicator-CorrelationTrendIndicator
EvenBetterSinewaveEhlers' EBSW — a self-normalising cycle oscillator that swings cleanly in [−1, +1] regardless of price amplitude.f64f64[−1, +1](hp_period = 40, ssf_length = 10)3Indicator-EvenBetterSinewave
HighpassFilterEhlers' two-pole highpass filter — strips the low-frequency trend and leaves the cyclic content; the complement of the Decycler.f64f64zero-mean (price units)(period = 48) (Python)1Indicator-HighpassFilter
ReflexEhlers' near-zero-lag cycle oscillator — averages how far the SuperSmoothed price deviates from the straight line across the lookback, then self-normalises.f64f64self-normalised, roughly [−3, +3](period = 20) (Python)period + 1Indicator-Reflex
TrendflexEhlers' trend-sensitive companion to Reflex — averages how far the SuperSmoothed price sits above/below its recent values, then self-normalises.f64f64self-normalised, roughly [−3, +3](period = 20) (Python)period + 1Indicator-Trendflex
UniversalOscillatorEhlers' Universal Oscillator — whitens the price, SuperSmooths it, then AGC-normalises to a clean [−1, +1] cycle reading on any instrument.f64f64[−1, +1](period = 20) (Python)3Indicator-UniversalOscillator

Pivots & S/R

Session-anchored pivot levels and swing detectors. Pivots take a single (typically session-aggregated) candle and emit fixed S/R levels for the next session; swing detectors run continuously and mark structural pivots.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
ClassicPivotsFloor-trader pivots: PP, R1-R3, S1-S3 from (H+L+C)/3.Candle7 fieldsunbounded (price scale)(no parameters)1Indicator-ClassicPivots
FibonacciPivotsPivot + Fib-ratio R/S levels (0.382 / 0.618 / 1.000 · range).Candle7 fieldsunbounded (price scale)(no parameters)1Indicator-FibonacciPivots
CamarillaStott's close-anchored 4-tier ±(1.1 · range / {12,6,4,2}).Candle9 fieldsunbounded (price scale)(no parameters)1Indicator-Camarilla
WoodiePivotsClose-weighted pivot (H+L+2C)/4 with 2-tier R/S.Candle5 fieldsunbounded (price scale)(no parameters)1Indicator-WoodiePivots
DemarkPivotsOpen-conditional 1-tier pivot (different formula per bar direction).Candle(pp, r1, s1)unbounded (price scale)(no parameters)1Indicator-DemarkPivots
WilliamsFractalsBill Williams' 5-bar swing-high / swing-low detector.Candle(up, down: Option<f64>)unbounded (price scale)(no parameters)5Indicator-WilliamsFractals
ZigZagNon-repainting percentage-threshold swing detector.Candle(swing, direction)unbounded (price scale)threshold = 0.052Indicator-ZigZag
AndrewsPitchforkAlan Andrews' median-line tool — a central line through three auto-detected swing pivots, flanked by two parallels, projected to the current bar.CandleAndrewsPitchforkOutput { median, upper, lower }price units; upper >= lower(strength = 2) (Python)2·strength + 1 (then swing-dependent)Indicator-AndrewsPitchfork
CentralPivotRangeThe pivot point plus its two central lines — the width of the range forecasts a trending vs.CandleCentralPivotRangeOutput { pivot, tc, bc }price units; tc >= bc(no parameters)1Indicator-CentralPivotRange
MurreyMathLinesT.CandleMurreyMathLinesOutput { mm0_8 … mm8_8 }price units; mm0_8 <= … <= mm8_8(period = 64) (Python)periodIndicator-MurreyMathLines
PivotReversalA breakout signal off the most recent confirmed swing pivots — +1 when price closes back above a swing high, −1 when it closes below a swing low.Candlef64{−1, 0, +1}(left = 2, right = 2) (Python)left + right + 1Indicator-PivotReversal
VolumeWeightedSrA support/resistance band whose edges are the volume-weighted average of recent lows and highs — levels gravitate to where trading actually happened.CandleVolumeWeightedSrOutput { support, resistance }price units; support <= resistance(period = 20) (Python)periodIndicator-VolumeWeightedSr

DeMark

Tom DeMark's full setup / countdown / pivot family. All bar-direction-aware oscillators, exhaustion detectors, and protective-stop levels.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
TdSetup9-bar momentum-exhaustion setup count (signed).Candlef64[-target, +target](lookback=4, target=9)lookback + 1Indicator-TdSetup
TdSequentialSetup + Countdown 13 — canonical DeMark exhaustion.Candle(setup, countdown)signed(4, 9, 2, 13)max(4, 2) + 1Indicator-TdSequential
TdCountdownStandalone Countdown 13 (auto-detects setup internally).Candlef64[-13, +13](4, 9, 2, 13)max(4, 2) + 1Indicator-TdCountdown
TdComboStricter, faster countdown variant (3 strictness conditions).Candlef64[-13, +13](4, 9, 2, 13)max(4, 2) + 1Indicator-TdCombo
TdLinesTDST support/resistance — extremes of completed setups.Candle(resistance, support)unbounded; NaN before first setup(4, 9)lookback + 1Indicator-TdLines
TdDeMarkerHigh/low-extension based 0-1 momentum oscillator.Candlef64[0, 1]period = 14period + 1Indicator-TdDeMarker
TdReiRange Expansion Index — conditionally-weighted short oscillator.Candlef64[-100, +100]period = 5period + 7Indicator-TdRei
TdPressureVolume-weighted DeMark pressure oscillator.Candlef64[-100, +100]period = 5periodIndicator-TdPressure
TdRangeProjectionNext-bar high/low projection from current bar OHLC.Candle(high, low)unbounded (price scale)(no parameters)1Indicator-TdRangeProjection
TdDifferential2-bar pressure-shift reversal pattern.Candlef64{-1, 0, +1}(no parameters)2Indicator-TdDifferential
TdOpenGap-and-fade reversal signal (open outside prior range).Candlef64{-1, 0, +1}(no parameters)2Indicator-TdOpen
TdRiskLevelProtective-stop level from setup extreme + true range.Candle(buy_risk, sell_risk)unbounded; NaN before first setup(4, 9)lookback + 1Indicator-TdRiskLevel
TdCamouflageTom DeMark's TD Camouflage — a one-bar reversal that looks weak (or strong) on the close but reveals hidden accumulation (or distribution) intrabar.Candlef64{−1, 0, +1}(no parameters)2Indicator-TdCamouflage
TdClopTom DeMark's TD Clop — a two-bar open/close reversal: the bar opens beyond the whole prior body and closes back beyond it.Candlef64{−1, 0, +1}(no parameters)2Indicator-TdClop
TdClopwinTom DeMark's TD Clopwin — the inside-body cousin of TD Clop: the bar's open and close both sit inside the prior body, a compression bar whose direction hints at the next move.Candlef64{−1, 0, +1}(no parameters)2Indicator-TdClopwin
TdDWaveTom DeMark's TD D-Wave — an objective Elliott-style wave counter that labels the swing sequence 1–5 (impulse) then A–C (correction).Candlef64[1, 8] (6/7/8 = corrective A/B/C)(strength = 2) (Python)2·strength + 1 (then swing-dependent)Indicator-TdDWave
TdMovingAverageTom DeMark's TD Moving Averages — a fast (ST1) / slow (ST2) ribbon on the median price; their relationship defines the trend.CandleTdMovingAverageOutput { st1, st2 }price units(period_st1 = 5, period_st2 = 13)period_st2Indicator-TdMovingAverage
TdPropulsionTom DeMark's TD Propulsion — a two-bar continuation thrust: open on the trend side of the prior close, then close beyond the prior bar's extreme.Candlef64{−1, 0, +1}(no parameters)2Indicator-TdPropulsion
TdTrapTom DeMark's TD Trap — an inside ("trap") bar followed by a close beyond its range fires a directional breakout signal.Candlef64{−1, 0, +1}(no parameters)3Indicator-TdTrap

Ichimoku & Charts

Japanese cloud charting and candle-smoothing transforms.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
IchimokuFive-line cloud system (Tenkan, Kijun, Senkou A/B, Chikou).Candle5 Option<f64> fieldsunbounded (price scale)(9, 26, 52, 26)senkou_b + displacement - 1 (77 at defaults)Indicator-Ichimoku
HeikinAshi"Average bar" candle-smoothing transform.Candle(open, high, low, close)unbounded (price scale)(no parameters)1Indicator-HeikinAshi
CandleVolumeThe candlestick analogue of Equivolume — each bar's signed body paired with a width proportional to its volume relative to the recent average.CandleCandleVolumeOutput { body, width }body signed (price units); width ≥ 0 (1.0 = average)(period = 14) (Python)periodIndicator-CandleVolume
EquivolumeRichard Arms' Equivolume chart as numbers — each bar is a box whose height is its price range and whose width is its volume relative to the recent average.CandleEquivolumeOutput { height, width }height ≥ 0 (price units); width ≥ 0 (1.0 = average volume)(period = 14) (Python)periodIndicator-Equivolume
HeikinAshiOscillatorThe Heikin-Ashi candle body (ha_close − ha_open), optionally EMA-smoothed, as a zero-line oscillator — the HA colour/strength turned into a number.Candlef64zero-mean (price units)(period = 5) (Python)periodIndicator-HeikinAshiOscillator
SmoothedHeikinAshiThe Heikin-Ashi transform applied to EMA-smoothed OHLC — long, clean runs of same-colour candles for an even clearer trend read.CandleSmoothedHeikinAshiOutput { open, high, low, close }price units; low <= open,close <= high(period = 10) (Python)periodIndicator-SmoothedHeikinAshi
ThreeLineBreakThe trend direction of a line-break chart — a reversal needs the close to break the extreme of the last three lines, filtering out minor pullbacks.Candlef64{−1, +1}(lines = 3) (Python)2 (then data-dependent)Indicator-ThreeLineBreak

Candlestick Patterns

Classical 1- / 2- / 3-bar candlestick pattern detectors. All take Candle input and return a signed f64 (+1 bullish, -1 bearish, 0 no signal) unless noted. Pattern-shape checks only — combine with a trend filter for actionable signals.

IndicatorPatternBarsOutputDefaultsWarmupDeep dive
DojiIndecision — body ≤ threshold·range.1f64 (0 or +1)body_threshold = 0.11Indicator-Doji
HammerSmall body top, long lower shadow ≥ 2·body.1f64 (0 or +1)(no parameters)1Indicator-Hammer
InvertedHammerMirror of Hammer (long upper shadow).1f64 (0 or +1)(no parameters)1Indicator-InvertedHammer
HangingManSame shape as Hammer, bearish reading at top of uptrend.1f64 (0 or -1)(no parameters)1Indicator-HangingMan
ShootingStarSame shape as Inverted Hammer, bearish reading at top.1f64 (0 or -1)(no parameters)1Indicator-ShootingStar
MarubozuFull-body candle with (near-)no shadows.1f64 ({-1, 0, +1})shadow_tolerance = 0.051Indicator-Marubozu
SpinningTopSmall body, both shadows ≥ 2·body.1f64 ({-1, 0, +1})body_threshold = 0.31Indicator-SpinningTop
Engulfing2-bar full-body engulfing reversal.2f64 ({-1, 0, +1})(no parameters)2Indicator-Engulfing
Harami2-bar inside-body reversal (opposite of Engulfing).2f64 ({-1, 0, +1})(no parameters)2Indicator-Harami
PiercingDarkCloud2-bar gap-and-recover-past-midpoint reversal.2f64 ({-1, 0, +1})(no parameters)2Indicator-PiercingDarkCloud
Tweezer2-bar matching-extreme reversal (Top / Bottom).2f64 ({-1, 0, +1})tolerance = 0.0012Indicator-Tweezer
MorningEveningStar3-bar reversal: long bar + star + opposite long bar.3f64 ({-1, 0, +1})(no parameters)3Indicator-MorningEveningStar
ThreeSoldiersOrCrows3-bar continuation: three rising / falling long bars.3f64 ({-1, 0, +1})(no parameters)3Indicator-ThreeSoldiersOrCrows
ThreeInsideConfirmed Harami: Harami + close past Bar 1 body.3f64 ({-1, 0, +1})(no parameters)3Indicator-ThreeInside
ThreeOutsideConfirmed Engulfing: Engulfing + close past Bar 2 close.3f64 ({-1, 0, +1})(no parameters)3Indicator-ThreeOutside
TwoCrows3-bar bearish reversal after an advance.3f64 (0 or -1)(no parameters)3Indicator-TwoCrows
UpsideGapTwoCrowsTwo crows holding an upside gap (bearish).3f64 (0 or -1)(no parameters)3Indicator-UpsideGapTwoCrows
IdenticalThreeCrowsThree blacks opening at the prior close, lower closes.3f64 (0 or -1)tolerance = 0.0013Indicator-IdenticalThreeCrows
ThreeLineStrikeThree-bar run struck by an opposite 4th bar.4f64 ({-1, 0, +1})(no parameters)4Indicator-ThreeLineStrike
ThreeStarsInSouthThree shrinking blacks, rising lows (rare bottom).3f64 (0 or +1)tolerance = 0.0013Indicator-ThreeStarsInSouth
AbandonedBabyDoji isolated by gaps both sides (island reversal).3f64 ({-1, 0, +1})tolerance = 0.0013Indicator-AbandonedBaby
AdvanceBlockThree rising whites, shrinking bodies / rising wicks.3f64 (0 or -1)(no parameters)3Indicator-AdvanceBlock
BeltHoldLong body opening at one extreme (opening marubozu).1f64 ({-1, 0, +1})shadow_tolerance = 0.051Indicator-BeltHold
Breakaway5-bar reversal fading a gapped over-extended run.5f64 ({-1, 0, +1})(no parameters)5Indicator-Breakaway
Counterattack2-bar reversal closing back at the prior close.2f64 ({-1, 0, +1})equal_tolerance = 0.052Indicator-Counterattack
DojiStarLong body then a gapped doji (reversal warning).2f64 ({-1, 0, +1})(no parameters)2Indicator-DojiStar
DragonflyDojiDoji at the top, long lower shadow (bullish).1f64 (0 or +1)(no parameters)1Indicator-DragonflyDoji
GravestoneDojiDoji at the bottom, long upper shadow (bearish).1f64 (0 or -1)(no parameters)1Indicator-GravestoneDoji
LongLeggedDojiDoji with long shadows both sides (indecision).1f64 (0 or +1)(no parameters)1Indicator-LongLeggedDoji
RickshawManCentred long-legged doji (balanced indecision).1f64 (0 or +1)(no parameters)1Indicator-RickshawMan
EveningDojiStar3-bar bearish top: white, gapped doji, deep black.3f64 (0 or -1)penetration = 0.33Indicator-EveningDojiStar
MorningDojiStar3-bar bullish bottom: black, gapped doji, deep white.3f64 (0 or +1)penetration = 0.33Indicator-MorningDojiStar
GapSideBySideWhiteTwo side-by-side whites holding a gap (continuation).3f64 ({-1, 0, +1})(no parameters)3Indicator-GapSideBySideWhite
HighWaveSmall body, very long shadows both sides (indecision).1f64 (0 or +1)(no parameters)1Indicator-HighWave
HikkakeInside-bar false-breakout trap.3f64 ({-1, 0, +1})(no parameters)3Indicator-Hikkake
HikkakeModifiedClose-confirmed Hikkake trap.3f64 ({-1, 0, +1})(no parameters)3Indicator-HikkakeModified
HomingPigeonSame-colour harami in a decline (bullish).2f64 (0 or +1)(no parameters)2Indicator-HomingPigeon
OnNeckWeak bounce to the prior low (bearish continuation).2f64 (0 or -1)(no parameters)2Indicator-OnNeck
InNeckBounce just into the body (bearish continuation).2f64 (0 or -1)(no parameters)2Indicator-InNeck
ThrustingBounce toward mid-body, not past (bearish continuation).2f64 (0 or -1)(no parameters)2Indicator-Thrusting
SeparatingLinesOpposite candle reopening at the prior open (continuation).2f64 ({-1, 0, +1})(no parameters)2Indicator-SeparatingLines
KickingTwo gapped opposite marubozu (violent reversal).2f64 ({-1, 0, +1})(no parameters)2Indicator-Kicking
KickingByLengthKicking signed by the longer marubozu.2f64 ({-1, 0, +1})(no parameters)2Indicator-KickingByLength
LadderBottom5-bar bullish reversal after a stepped decline.5f64 (0 or +1)(no parameters)5Indicator-LadderBottom
MatHold5-bar bullish continuation; shallow gapped rest.5f64 (0 or +1)penetration = 0.55Indicator-MatHold
MatchingLowTwo black closes at the same low (support floor).2f64 (0 or +1)(no parameters)2Indicator-MatchingLow
LongLineRange longer than the recent average, body-dominant.5f64 ({-1, 0, +1})period = 55Indicator-LongLine
ShortLineRange shorter than the recent average, body-dominant.5f64 ({-1, 0, +1})period = 55Indicator-ShortLine
RisingThreeMethods5-bar bullish continuation; in-range rest.5f64 (0 or +1)(no parameters)5Indicator-RisingThreeMethods
FallingThreeMethods5-bar bearish continuation; in-range rest.5f64 (0 or -1)(no parameters)5Indicator-FallingThreeMethods
UpsideGapThreeMethodsTwo whites gap up, black partly fills (continuation).3f64 (0 or +1)(no parameters)3Indicator-UpsideGapThreeMethods
DownsideGapThreeMethodsTwo blacks gap down, white partly fills (continuation).3f64 (0 or -1)(no parameters)3Indicator-DownsideGapThreeMethods
StalledPatternTwo long whites then a small one on the shoulder (bearish).3f64 (0 or -1)(no parameters)3Indicator-StalledPattern
StickSandwichTwo black closes sandwiching a white (support).3f64 (0 or +1)(no parameters)3Indicator-StickSandwich
TakuriStrict dragonfly doji, very long lower shadow.1f64 (0 or +1)(no parameters)1Indicator-Takuri
ClosingMarubozuLong body, no shadow on the close end.1f64 ({-1, 0, +1})(no parameters)1Indicator-ClosingMarubozu
OpeningMarubozuLong body, no shadow on the open end.1f64 ({-1, 0, +1})(no parameters)1Indicator-OpeningMarubozu
TasukiGapCounter candle into a gap that holds (continuation).3f64 ({-1, 0, +1})(no parameters)3Indicator-TasukiGap
UniqueThreeRiverBlack, new-low black inside, small white (bottom).3f64 (0 or +1)(no parameters)3Indicator-UniqueThreeRiver
ConcealingBabySwallowRare 4-bar capitulation; black run then engulf.4f64 (0 or +1)(no parameters)4Indicator-ConcealingBabySwallow
DumplingTopThe bearish mirror of the Frying Pan Bottom — a gently rounded top (dome) confirmed by a close back below where the dome began.periodf64 ({−1, 0})(period = 9) (Python)periodIndicator-DumplingTop
FryPanBottomA gently rounded (U-shaped) base confirmed by recovery above the rim — a bullish accumulation pattern.periodf64 ({0, +1})(period = 9) (Python)periodIndicator-FryPanBottom
HaramiCrossA stronger Harami — a large real body followed by a Doji contained within it; the total indecision after a strong move makes the reversal more potent.2f64 ({−1, 0, +1})(no parameters)2Indicator-HaramiCross
NewPriceLinesThe Japanese "eight/ten new price lines" exhaustion count — count consecutive higher (or lower) closes warns the run is stretched.2f64 ({−1, 0, +1})(count = 8) (Python)2Indicator-NewPriceLines
TowerTopBottomA tall directional bar, a small pause bar, then a tall opposite bar — two "towers" flanking a low wall, a compact reversal.3f64 ({−1, 0, +1})(no parameters)3Indicator-TowerTopBottom
TristarThree consecutive Doji where the middle gaps away from its neighbours — a rare top (middle above) or bottom (middle below) reversal.3f64 ({−1, 0, +1})(no parameters)3Indicator-Tristar

Market Profile

Session-anchored value-area / opening-range / initial-balance indicators. All require manual reset() at session boundaries.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
ValueAreaRolling Market Profile: POC + VAH + VAL via volume bins.Candle(poc, vah, val)unbounded (price scale)(period, bin_count, value_area_pct)periodIndicator-ValueArea
VolumeProfileFull per-bin volume histogram over a rolling window.Candle(price_low, price_high, bins)bins ≥ 0(period=20, bin_count=50)periodIndicator-VolumeProfile
TpoProfileTime-Price-Opportunity (letter) count per price bucket.Candle(price_low, price_high, counts)counts ≥ 0(period=30, bin_count=50)periodIndicator-TpoProfile
InitialBalanceFirst-N-bar session range, locked after warmup.Candle(high, low)unbounded (price scale)period = 12periodIndicator-InitialBalance
OpeningRangeLocked first-N range + live breakout-distance from midpoint.Candle(high, low, breakout_distance)unbounded (price scale)period = 6periodIndicator-OpeningRange
CompositeProfileA multi-session volume profile reduced to its point of control and value area — the swing-horizon levels that matter.CandleCompositeProfileOutput { poc, vah, val }price levels; val <= poc <= vah(period = 100, bins = 50, value_area_pct = 0.70)periodIndicator-CompositeProfile
HighLowVolumeNodesThe price levels of greatest (HVN) and least (LVN) acceptance in a rolling volume profile — magnets and rejection zones.CandleHighLowVolumeNodesOutput { hvn, lvn }price levels(period = 20, bins = 24) (Python)periodIndicator-HighLowVolumeNodes
NakedPocThe nearest untested ("virgin") point of control — a heavily-traded prior-session price the market has not yet revisited, an outstanding magnet.Candlef64price units(session_len = 20, bins = 24) (Python)session_len (then session-paced)Indicator-NakedPoc
ProfileShapeClassifies the rolling volume profile by where its point of control sits: P-shape (+1), b-shape (−1), or D/normal (0).Candlef64{−1, 0, +1}(period = 20, bins = 24) (Python)periodIndicator-ProfileShape
SinglePrintsThe count of price levels touched by exactly one bar — Market Profile "single prints" that mark fast, low-acceptance moves.Candlef64[0, bins](period = 20, bins = 24) (Python)periodIndicator-SinglePrints

Risk / Performance

Risk-adjusted return ratios, drawdown analytics, and tail-risk measures. Single-stream metrics take f64 returns / equity; benchmark-relative metrics take (asset, benchmark) pairs.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
SharpeRatio(mean - rf) / sample_stddev rolling.f64f64unbounded(period, rf)periodIndicator-SharpeRatio
SortinoRatioSharpe with downside-only deviation.f64f64unbounded(period, mar)periodIndicator-SortinoRatio
CalmarRatiomean(returns) / max_drawdown(equity) from window.f64f64unbounded; 0 if no DDperiodperiodIndicator-CalmarRatio
OmegaRatioΣ gains-above-threshold / Σ losses-below.f64f64[0, ∞) (Inf if all-positive)(period, threshold)periodIndicator-OmegaRatio
MaxDrawdownRolling worst peak-to-trough decline.f64 (equity)f64[0, 1]period1Indicator-MaxDrawdown
AverageDrawdownRolling mean drawdown depth (same as PainIndex).f64 (equity)f64[0, 1]periodperiodIndicator-AverageDrawdown
DrawdownDurationBars elapsed since all-time peak.f64 (equity)u32[0, ∞)(no parameters)1Indicator-DrawdownDuration
PainIndexMean drawdown depth (Becker).f64 (equity)f64[0, 1]periodperiodIndicator-PainIndex
ValueAtRiskHistorical lower-tail quantile, sign-flipped.f64f64[0, ∞)(period, confidence)periodIndicator-ValueAtRisk
ConditionalValueAtRiskMean of returns beyond VaR (Expected Shortfall).f64f64[0, ∞)(period, confidence)periodIndicator-ConditionalValueAtRisk
ProfitFactorΣ positive / Σ |negative| over window.f64f64[0, ∞) (Inf if all-positive)periodperiodIndicator-ProfitFactor
GainLossRatiomean(wins) / mean(|losses|).f64f64[0, ∞)periodperiodIndicator-GainLossRatio
RecoveryFactorCumulative net_return / max_drawdown.f64 (equity)f64unbounded; 0 if no DD(no parameters)1Indicator-RecoveryFactor
KellyCriterionRolling Kelly fraction winrate − (1−winrate)/payoff_ratio.f64f64unbounded; typically (0, 1)periodperiodIndicator-KellyCriterion
TreynorRatio(mean_asset − rf) / Beta.(f64, f64)f64unbounded(period, rf)periodIndicator-TreynorRatio
InformationRatiomean(active) / tracking_error.(f64, f64)f64unboundedperiodperiodIndicator-InformationRatio
AlphaJensen's alpha — mean(asset) − (rf + Beta·(mean_bench − rf)).(f64, f64)f64unbounded(period, rf)periodIndicator-Alpha
WinRateFraction of strictly-positive returns over period.f64f64[0, 1]periodperiodIndicator-WinRate
ExpectancyExpected return per unit of average loss (R-multiple).f64f64unboundedperiodperiodIndicator-Expectancy
BurkeRatioReturn per unit of severe pain — mean return over the Euclidean norm of the equity-curve drawdowns.f64f64unbounded (negative for net-losing windows)(period = 36) (Python)periodIndicator-BurkeRatio
CommonSenseRatioOne number that must win on both fronts — the profit factor (the body) multiplied by the tail ratio (the extremes).f64f64>= 0, unbounded (> 1 sound, < 1 flawed)(period = 252) (Python)periodIndicator-CommonSenseRatio
GainToPainRatioJack Schwager's return-per-unit-of-downside — the sum of all returns over the sum of the absolute losses.f64f64unbounded (negative for net-losing windows)(period = 12) (Python)periodIndicator-GainToPainRatio
KRatioKestner's consistency score — the slope of the cumulative-return curve divided by the standard error of that slope.f64f64unbounded (sign follows the equity-curve slope)(period = 30) (Python)periodIndicator-KRatio
M2MeasureThe Modigliani–Modigliani measure — the Sharpe ratio rescaled into the benchmark's return units.f64f64unbounded(period = 20, risk_free = 0.0, benchmark_stddev = 0.02) (Python)periodIndicator-M2Measure
MartinRatioThe Ulcer Performance Index — mean return over the Ulcer Index (the RMS of percentage drawdowns).f64f64unbounded (negative for net-losing windows)(period = 14) (Python)periodIndicator-MartinRatio
SterlingRatioReturn per unit of typical pain — mean return over the average drawdown of the compounded equity curve.f64f64unbounded (negative for net-losing windows)(period = 36) (Python)periodIndicator-SterlingRatio
TailRatioThe fatness of the right tail against the left — the 95th percentile of returns over the absolute 5th percentile.f64f64>= 0, unbounded (> 1 = fatter upside, < 1 = fatter downside)(period = 252) (Python)periodIndicator-TailRatio
UpsidePotentialRatioThe Sortino purist's ratio — average outperformance above a threshold over the downside deviation below it.f64f64>= 0, unbounded(period = 20, mar = 0.0) (Python)periodIndicator-UpsidePotentialRatio

Microstructure

Non-OHLCV analytics over the order book and the trade tape. Order-book indicators take an OrderBook depth snapshot; trade-flow indicators take a Trade (size + aggressor side); price-impact measures take a TradeQuote (a trade paired with the mid at execution); Footprint returns a variable-length per-bucket profile. The Python and Node bindings accept these as plain arrays (see each deep dive); WASM exposes per-event update.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
OrderBookImbalanceTop1Signed depth pressure at the touch.OrderBookf64[−1, 1](no parameters)1Indicator-OrderBookImbalanceTop1
OrderBookImbalanceTopNSigned depth pressure over the top levels.OrderBookf64[−1, 1]levels1Indicator-OrderBookImbalanceTopN
OrderBookImbalanceFullSigned depth pressure over the whole book.OrderBookf64[−1, 1](no parameters)1Indicator-OrderBookImbalanceFull
MicropriceSize-weighted fair value tilting the mid.OrderBookf64within spread(no parameters)1Indicator-Microprice
QuotedSpreadTop-of-book spread in bps of the mid.OrderBookf64≥ 0(no parameters)1Indicator-QuotedSpread
DepthSlopeMean per-side OLS slope of cumulative size vs distance.OrderBookf64≥ 0(no parameters)1Indicator-DepthSlope
SignedVolumeTrade size signed by aggressor (±size).Tradef64unbounded(no parameters)1Indicator-SignedVolume
CumulativeVolumeDeltaRunning sum of signed volume.Tradef64unbounded(no parameters)1Indicator-CumulativeVolumeDelta
TradeImbalanceRolling (buy − sell)/(buy + sell) over window trades.Tradef64[−1, 1]windowwindowIndicator-TradeImbalance
EffectiveSpread2·D·(price − mid)/mid·1e4 bps round-trip cost.TradeQuotef64unbounded(no parameters)1Indicator-EffectiveSpread
RealizedSpreadEffective spread net of impact over horizon.TradeQuotef64unboundedhorizonhorizon + 1Indicator-RealizedSpread
KylesLambdaRolling OLS price impact per unit signed volume.TradeQuotef64unboundedwindowwindow + 1Indicator-KylesLambda
FootprintBuy/sell volume profile per price bucket.TradeFootprintOutputper-bucket ≥ 0tick_size1Indicator-Footprint
OrderFlowImbalanceRolling sum of best-level order-flow events (Cont-Kukanov-Stoikov OFI).OrderBookf64unboundedperiodperiod + 1Indicator-OrderFlowImbalance
VpinVolume-bucketed order-flow toxicity (informed trading).Tradef64[0, 1](bucket_volume, num_buckets)num_bucketsIndicator-Vpin
AmihudIlliquidityMean |return| / traded value; price-impact liquidity proxy.Tradef64[0, ∞)periodperiod + 1Indicator-AmihudIlliquidity
RollMeasureEffective spread from the serial covariance of price changes.Tradef64[0, ∞)period >= 3period + 1Indicator-RollMeasure
HasbrouckInformationShareEach venue's contribution to price discovery — the share of total return variance carried by the first of two synchronised price series.(f64, f64)f64[0, 1] (share of venue x)(period = 20) (Python)period + 1Indicator-HasbrouckInformationShare
PinThe Probability of Informed Trading (EKOP) — estimated from the buy/sell imbalance over a rolling window of trades.Tradef64[0, 1](window = 20) (Python)windowIndicator-Pin
TradeSignAutocorrelationThe lag-1 autocorrelation of the trade-aggressor side — how strongly signed order flow persists, a footprint of order-splitting and informed execution.Tradef64[−1, +1](period = 20) (Python)periodIndicator-TradeSignAutocorrelation

Derivatives

Perpetual- and dated-futures analytics over a DerivativesTick — a single feed bundling funding rate, mark / index / futures price, open interest, positioning, taker flow and liquidations. Each indicator reads only the fields it needs; the Python and Node bindings expose just those fields per update (see each deep dive), and batch takes equal-length arrays. WASM exposes per-tick update.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
FundingRateThe current perpetual funding rate.DerivativesTickf64unbounded (may be negative)(no parameters)1Indicator-FundingRate
FundingRateMeanRolling mean funding rate over window.DerivativesTickf64unboundedwindowwindowIndicator-FundingRateMean
FundingRateZScoreFunding rate in stddevs from its rolling mean.DerivativesTickf64unbounded around zerowindowwindowIndicator-FundingRateZScore
FundingBasisPerp premium to spot (mark − index)/index.DerivativesTickf64unbounded around zero(no parameters)1Indicator-FundingBasis
OpenInterestDeltaTick-over-tick change in open interest.DerivativesTickf64unbounded around zero(no parameters)2Indicator-OpenInterestDelta
OIPriceDivergenceRelative OI change minus relative price change over window.DerivativesTickf64unbounded around zerowindowwindow + 1Indicator-OIPriceDivergence
OIWeightedCumulative OI-weighted mark price.DerivativesTickf64unbounded (price scale)(no parameters)1Indicator-OIWeighted
LongShortRatioAggregate long size over short size.DerivativesTickf64≥ 0 (0 if no shorts)(no parameters)1Indicator-LongShortRatio
TakerBuySellRatioTaker buy volume over taker sell volume.DerivativesTickf64≥ 0 (0 if no sells)(no parameters)1Indicator-TakerBuySellRatio
LiquidationFeaturesLong/short liquidation → net / total / imbalance.DerivativesTickLiquidationFeaturesOutputimbalance ∈ [−1, 1](no parameters)1Indicator-LiquidationFeatures
TermStructureBasisDated-future premium to spot (futures − index)/index.DerivativesTickf64unbounded around zero(no parameters)1Indicator-TermStructureBasis
CalendarSpreadDated-future premium to the perpetual (futures − mark)/mark.DerivativesTickf64unbounded around zero(no parameters)1Indicator-CalendarSpread
EstimatedLeverageRatioOpen interest relative to aggregate position size — a proxy for how leveraged the outstanding positions are.DerivativesTickf64[0, ∞)(no parameters)1Indicator-EstimatedLeverageRatio
FundingImpliedAprThe per-interval funding rate annualised — the carry cost (or yield) of holding a perpetual position for a year.DerivativesTickf64signed fraction (×100 for %)(intervals_per_year = 1095) (8h funding)1Indicator-FundingImpliedApr
OiToVolumeRatioOpen interest divided by traded volume — how much position is held versus turned over.DerivativesTickf64[0, ∞)(no parameters)1Indicator-OiToVolumeRatio
OpenInterestMomentumThe percentage rate of change of open interest over a lookback — positioning trend rather than the single-tick delta.DerivativesTickf64signed (percent)(period = 5) (Python)period + 1Indicator-OpenInterestMomentum
PerpetualPremiumIndexThe perpetual's mark price relative to spot — positive means the perp trades at a premium (net long demand), negative a discount.DerivativesTickf64centred on 0 (fraction)(no parameters)1Indicator-PerpetualPremiumIndex

Pick the right indicator for…

A short cheat-sheet of "I want X, which indicator?" answers, grounded in what each indicator actually computes.

  • Fast trend filter, minimal lag. Hma for smoothness + responsiveness, Tema for further lag reduction at the cost of noise, Kama for adaptiveness instead of fixed lag.
  • Slow trend filter. Sma is the simplest; Ema responds slightly faster with the same smoothness budget.
  • Trend-following crossovers. Two-line crossovers are the textbook entry; MacdIndicator packages the idea with a signal line and histogram.
  • Trend strength — is there a trend at all? Adx (> 25 trending, < 20 ranging); ChoppinessIndex / VerticalHorizontalFilter answer the same question without a direction.
  • Overbought / oversold. Rsi is the default; Stochastic for faster signals; WilliamsR for an inverted scale; Mfi for a volume-aware RSI.
  • Volatility level vs. momentum. Atr / TrueRange for the level; ChaikinVolatility for whether ranges are expanding or contracting.
  • Breakout level. Donchian upper/lower bands are the Turtle-style trigger.
  • Trailing stop. Psar, SuperTrend, ChandelierExit, ChandeKrollStop and AtrTrailingStop are a whole family of them.
  • Volume confirmation. Obv is the simplest; ChaikinMoneyFlow is a bounded balance; Vwap / RollingVwap give a volume-weighted reference.
  • Mean reversion. ZScore flags statistically stretched prices; BollingerBandwidth / PercentB locate price within the bands.

Source-of-truth files

Every claim above can be checked against the source in crates/wickra-core/src/indicators/ — one file per indicator. The Rust unit tests inside each module are the ground truth for sample values. Python defaults (the period = 14 etc.) come from the #[pyo3(signature = …)] attributes in bindings/python/src/lib.rs; indicators without a Python default require an explicit argument.

Alt-Chart Bars

Price-driven chart constructors built on the BarBuilder trait (not Indicator): each consumes a candle stream and emits a variable number of completed bars per candle. They are close-driven and not Chain-able.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
RenkoBarsFixed box-size bricks with the two-box reversal rule.CandleVec<RenkoBrick>n/abox_sizeseeds on 1st candleIndicator-RenkoBars
KagiBarsReversal-amount line segments.CandleVec<KagiBar>n/areversalseeds on 1st candleIndicator-KagiBars
PointAndFigureBarsBox-size X/O columns with an N-box reversal.CandleVec<PnfColumn>n/a(box_size, reversal=3)seeds on 1st candleIndicator-PointAndFigureBars
DollarBarsDrift-robust OHLC bars — one bar per fixed amount of traded value (price × volume).CandleVec<DollarBar>n/a(dollar_per_bar = 50000.0)none (emits once accumulated value reaches the threshold)Indicator-DollarBars
ImbalanceBarsOrder-flow bars — sample when cumulative signed tick imbalance becomes one-sided.CandleVec<ImbalanceBar>n/a(threshold = 20.0)none (seeds on the first candle)Indicator-ImbalanceBars
RangeBarsFixed price-range bars with no reversal penalty — one bar per range of close movement in either direction.CandleVec<RangeBar>n/a(range = 1.0)none (first candle seeds the anchor)Indicator-RangeBars
RunBarsPersistence bars — sample on an uninterrupted run of same-signed ticks.CandleVec<RunBar>n/a(run_length = 10)none (seeds on the first candle)Indicator-RunBars
ThreeLineBreakBarsLine-break chart segments — a new line per close extreme, reversing only on a break of the last three lines.CandleVec<LineBreakBar>n/a(lines = 3)none (seeds on the first candle)Indicator-ThreeLineBreakBars
TickBarsActivity-sampled OHLCV bars — one bar per fixed number of input candles (ticks).CandleVec<TickBar>n/a(ticks = 100)none (emits once ticks candles accumulate)Indicator-TickBars
VolumeBarsEqual-participation OHLCV bars — one bar per fixed amount of traded volume.CandleVec<VolumeBar>n/a(volume_per_bar = 1000.0)none (emits once accumulated volume reaches the threshold)Indicator-VolumeBars

Market Breadth

Universe-wide breadth indicators built on the CrossSection input — one tick carrying the per-symbol state of the whole universe (each member has a signed change, a volume, and new_high / new_low flags). They aggregate the cross-section into a single participation reading.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
AbsoluteBreadthIndexAbsolute value of net advancing-minus-declining issues.CrossSectionf640..=Nnone1Indicator-AbsoluteBreadthIndex
AdvanceDeclineCumulative net advancing-minus-declining issues.CrossSectionf64unboundednone1Indicator-AdvanceDecline
AdvanceDeclineRatioAdvancing issues divided by declining issues.CrossSectionf640..none1Indicator-AdvanceDeclineRatio
AdVolumeLineCumulative net advancing-minus-declining volume.CrossSectionf64unboundednone1Indicator-AdVolumeLine
BreadthThrustMoving average of the advancing-issues share (Zweig).CrossSectionf640..=1period=1010Indicator-BreadthThrust
BullishPercentIndexPercentage of the universe on a point-and-figure buy signal.CrossSectionf640..=100none1Indicator-BullishPercentIndex
CumulativeVolumeIndexRunning total of volume-normalised net advancing volume.CrossSectionf64unboundednone1Indicator-CumulativeVolumeIndex
HighLowIndexMoving average of the record-high percentage.CrossSectionf640..=100period=1010Indicator-HighLowIndex
McClellanOscillatorSpread between a 19/39-period EMA of ratio-adjusted net advances.CrossSectionf64unboundednone1Indicator-McClellanOscillator
McClellanSummationIndexRunning cumulative total of the McClellan Oscillator.CrossSectionf64unboundednone1Indicator-McClellanSummationIndex
NewHighsNewLowsNet count of new period highs minus new period lows.CrossSectionf64-N..=Nnone1Indicator-NewHighsNewLows
PercentAboveMaPercentage of the universe trading above its reference moving average.CrossSectionf640..=100none1Indicator-PercentAboveMa
TickIndexInstantaneous net advancing-minus-declining issues.CrossSectionf64-N..=Nnone1Indicator-TickIndex
TrinAdvance-decline ratio over the up-down volume ratio (Arms Index).CrossSectionf640..none1Indicator-Trin
UpDownVolumeRatioAdvancing volume divided by declining volume.CrossSectionf640..none1Indicator-UpDownVolumeRatio

Seasonality & Session

Timestamp-driven indicators that key off the wall-clock fields of Candle::timestamp (shifted by a utc_offset_minutes constructor argument so the buckets line up with the relevant exchange session). Session, day and month rollovers are detected automatically — callers never invoke reset() at a boundary.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
SessionVwapSession-anchored volume-weighted average price.Candlef64price unitsutc_offset=01Indicator-SessionVwap
SessionHighLowRunning high / low of the current session.Candle{high, low}price unitsutc_offset=01Indicator-SessionHighLow
SessionRangePer-session (Asia / EU / US) high-low range.Candle{asia, eu, us}>= 0utc_offset=01Indicator-SessionRange
AverageDailyRangeMean high-low range of the last N completed sessions.Candlef64>= 0period=14, utc_offset=0periodIndicator-AverageDailyRange
OvernightGapClose-to-open return across the session boundary.Candlef64unboundedutc_offset=02Indicator-OvernightGap
OvernightIntradayReturnSplits the session return into overnight + intraday legs.Candle{overnight, intraday}unboundedutc_offset=02Indicator-OvernightIntradayReturn
TurnOfMonthMean daily return inside the turn-of-month window.Candlef64unboundedn_first=3, n_last=1, utc_offset=02Indicator-TurnOfMonth
SeasonalZScoreZ-score of the current return vs the same hour-of-day history.Candlef64unboundedutc_offset=02Indicator-SeasonalZScore
TimeOfDayReturnProfileMean bar return bucketed by intraday time.Candlebins[]unboundedbuckets=24, utc_offset=02Indicator-TimeOfDayReturnProfile
DayOfWeekProfileMean bar return bucketed by weekday.Candlebins[7]unboundedutc_offset=02Indicator-DayOfWeekProfile
IntradayVolatilityProfileReturn standard deviation bucketed by intraday time.Candlebins[]>= 0buckets=24, utc_offset=02Indicator-IntradayVolatilityProfile
VolumeByTimeProfileMean traded volume bucketed by intraday time.Candlebins[]>= 0buckets=24, utc_offset=01Indicator-VolumeByTimeProfile

Chart Patterns

Swing-based classical chart patterns built on a non-repainting percent-threshold pivot tracker (5% swings). Each emits the uniform pattern sign — +1 bullish, -1 bearish, 0 otherwise — and is parameter-free.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
DoubleTopBottomTwin-peak / twin-trough reversal on the second matching extreme.Candlef64{-1, 0, +1}none5Indicator-DoubleTopBottom
TripleTopBottomThree matching peaks / troughs — a stronger reversal.Candlef64{-1, 0, +1}none6Indicator-TripleTopBottom
HeadAndShouldersCentral head, two matching shoulders, flat neckline (and inverse).Candlef64{-1, 0, +1}none6Indicator-HeadAndShoulders
TriangleConverging trendlines: ascending +1, descending -1, symmetrical leans with the last swing.Candlef64{-1, 0, +1}none5Indicator-Triangle
WedgeSame-direction converging trendlines: rising wedge -1, falling wedge +1.Candlef64{-1, 0, +1}none5Indicator-Wedge
FlagPennantShallow consolidation against a pole — continuation in the pole direction.Candlef64{-1, 0, +1}none4Indicator-FlagPennant
RectangleRangeFlat support / resistance — mean-reversion off the touched boundary.Candlef64{-1, 0, +1}none5Indicator-RectangleRange
CupAndHandleRounded base with a shallow handle near the rim (and inverse).Candlef64{-1, 0, +1}none5Indicator-CupAndHandle

Harmonic Patterns

Fibonacci-ratio harmonic patterns read from the last four or five confirmed swing pivots (X-A-B-C-D). Each emits +1 when the terminal point D is a swing low (bullish), -1 when D is a swing high, 0 otherwise; parameter-free, with the Fibonacci windows baked in as documented constants.

IndicatorOne-linerInputOutputRangeDefaultsWarmupDeep dive
AbcdFour-point AB=CD: BC retraces AB, CD mirrors AB.Candlef64{-1, 0, +1}none5Indicator-Abcd
GartleyFive-point harmonic with a 0.786 D completion.Candlef64{-1, 0, +1}none6Indicator-Gartley
ButterflyFive-point harmonic with an extended (1.27-1.618 XA) D.Candlef64{-1, 0, +1}none6Indicator-Butterfly
BatFive-point harmonic with a shallow B and 0.886 D.Candlef64{-1, 0, +1}none6Indicator-Bat
CrabFive-point harmonic with the deepest (1.618 XA) D.Candlef64{-1, 0, +1}none6Indicator-Crab
SharkFive-point harmonic with an expansion leg and 0.886-1.13 D.Candlef64{-1, 0, +1}none6Indicator-Shark
CypherFive-point harmonic whose D retraces XC by 0.786.Candlef64{-1, 0, +1}none6Indicator-Cypher
ThreeDrivesThree symmetric drives with extension legs.Candlef64{-1, 0, +1}none6Indicator-ThreeDrives

Fibonacci

Swing-based Fibonacci tooling built on the same non-repainting 5% pivot tracker as the chart and harmonic patterns. Each is parameter-free and emits a struct of price levels (or, for time zones, timing flags) for the most recent confirmed swing; the geometric tools (fan, arcs, channel) normalise their geometry to the swing leg's bar-width so the output is chart-scale-free. All return None until enough pivots have confirmed.

IndicatorOne-linerInputOutputDefaultsWarmupDeep dive
FibRetracementSeven retracement levels (0-100%) of the last swing leg.Candlef64none2Indicator-FibRetracement
FibExtensionFive extension ratios (127.2-261.8%) projected beyond the leg.Candlef64none2Indicator-FibExtension
FibProjectionA-B-C measured-move target zone projected from C.Candlef64none3Indicator-FibProjection
AutoFibRetracement anchored on the dominant recent leg.Candlef64none2Indicator-AutoFib
GoldenPocketThe 0.618-0.65 optimal-trade-entry band.Candlef64none2Indicator-GoldenPocket
FibConfluenceDensest cluster of retracement levels across recent legs.Candlef64none3Indicator-FibConfluence
FibFanTrendlines fanning through the leg's retracement levels.Candlef64none2Indicator-FibFan
FibArcsSemicircular retracement levels decaying over time.Candlef64none2Indicator-FibArcs
FibChannelSloped base trendline plus parallel Fibonacci offsets.Candlef64none3Indicator-FibChannel
FibTimeZonesMarkers at Fibonacci bar-distances from the latest pivot.Candlef64none2Indicator-FibTimeZones

See also