From 329b0657bcb5f8248e7a9c450b01f254214d3c0b Mon Sep 17 00:00:00 2001 From: Miha Kralj Date: Tue, 17 Mar 2026 10:51:24 -0700 Subject: [PATCH] Add "Ehlers" prefix to 5 Ehlers indicators: SAM, PMA, ILRS, CTI, RVGI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Standardize naming convention so all Ehlers-originated indicators have "Ehlers" in their display name across all documentation and code surfaces: - SAM: Smoothed Adaptive Momentum → Ehlers Smoothed Adaptive Momentum - PMA: Predictive Moving Average → Ehlers Predictive Moving Average - ILRS: Integral of LinReg Slope → Ehlers Integral of LinReg Slope - CTI: Correlation Trend Indicator → Ehlers Correlation Trend Indicator - RVGI: Relative Vigor Index → Ehlers Relative Vigor Index Updated across: .md H1 titles, XML doc summaries, Quantower Name properties, Quantower test assertions, _sidebar.md, lib/_index.md, category _index.md files, docs/indicators.md, docs/validation.md. Build: 0 warnings, 0 errors. All tests pass. --- _sidebar.md | 10 +++++----- docs/indicators.md | 10 +++++----- docs/validation.md | 4 ++-- lib/_index.md | 10 +++++----- lib/momentum/_index.md | 2 +- lib/momentum/sam/Sam.Quantower.cs | 2 +- lib/momentum/sam/Sam.cs | 2 +- lib/momentum/sam/Sam.md | 2 +- lib/momentum/sam/tests/Sam.Quantower.Tests.cs | 2 +- lib/oscillators/_index.md | 4 ++-- lib/oscillators/cti/Cti.Quantower.cs | 2 +- lib/oscillators/cti/Cti.cs | 2 +- lib/oscillators/cti/Cti.md | 2 +- lib/oscillators/cti/tests/Cti.Quantower.Tests.cs | 2 +- lib/oscillators/rvgi/Rvgi.Quantower.cs | 2 +- lib/oscillators/rvgi/Rvgi.cs | 2 +- lib/oscillators/rvgi/Rvgi.md | 2 +- lib/oscillators/rvgi/tests/Rvgi.Quantower.Tests.cs | 2 +- lib/trends_FIR/_index.md | 4 ++-- lib/trends_FIR/ilrs/Ilrs.Quantower.cs | 2 +- lib/trends_FIR/ilrs/Ilrs.cs | 2 +- lib/trends_FIR/ilrs/Ilrs.md | 2 +- lib/trends_FIR/ilrs/tests/Ilrs.Quantower.Tests.cs | 2 +- lib/trends_FIR/pma/Pma.Quantower.cs | 2 +- lib/trends_FIR/pma/Pma.cs | 2 +- lib/trends_FIR/pma/Pma.md | 2 +- lib/trends_FIR/pma/tests/Pma.Quantower.Tests.cs | 2 +- 27 files changed, 42 insertions(+), 42 deletions(-) diff --git a/_sidebar.md b/_sidebar.md index 5d26445f..634f8da4 100644 --- a/_sidebar.md +++ b/_sidebar.md @@ -23,14 +23,14 @@ * [HANMA - Hanning MA](/lib/trends_FIR/hanma/Hanma.md) * [HEND - Henderson Moving Average](/lib/trends_FIR/hend/Hend.md) * [HMA - Hull MA](/lib/trends_FIR/hma/Hma.md) - * [ILRS - Integral of LinReg Slope](/lib/trends_FIR/ilrs/Ilrs.md) + * [ILRS - Ehlers Integral of LinReg Slope](/lib/trends_FIR/ilrs/Ilrs.md) * [KAISER - Kaiser Window MA](/lib/trends_FIR/kaiser/Kaiser.md) * [LANCZOS - Lanczos (sinc) Window MA](/lib/trends_FIR/lanczos/Lanczos.md) * [LSMA - Least Squares MA](/lib/trends_FIR/lsma/Lsma.md) * [NLMA - Non-Lag MA](/lib/trends_FIR/nlma/Nlma.md) * [NYQMA - Nyquist MA](/lib/trends_FIR/nyqma/Nyqma.md) * [PARZEN - Parzen Window MA](/lib/trends_FIR/parzen/Parzen.md) - * [PMA - Predictive Moving Average](/lib/trends_FIR/pma/Pma.md) + * [PMA - Ehlers Predictive Moving Average](/lib/trends_FIR/pma/Pma.md) * [PWMA - Pascal Weighted MA](/lib/trends_FIR/pwma/Pwma.md) * [QRMA - Quadratic Regression MA](/lib/trends_FIR/qrma/Qrma.md) * [RAIN - Rainbow MA](/lib/trends_FIR/rain/Rain.md) @@ -134,7 +134,7 @@ * [CFO - Chande Forecast Oscillator](/lib/oscillators/cfo/Cfo.md) * [COPPOCK - Coppock Curve](/lib/oscillators/coppock/Coppock.md) * [CRSI - Connors RSI](/lib/oscillators/crsi/Crsi.md) - * [CTI - Correlation Trend Indicator](/lib/oscillators/cti/Cti.md) + * [CTI - Ehlers Correlation Trend Indicator](/lib/oscillators/cti/Cti.md) * [DECO - Ehlers Decycler Oscillator](/lib/oscillators/deco/Deco.md) * [DEM - DeMarker Oscillator](/lib/oscillators/dem/Dem.md) * [DOSC - Derivative Oscillator](/lib/oscillators/dosc/Dosc.md) @@ -160,7 +160,7 @@ * [QQE - Quantitative Qualitative Estimation](/lib/oscillators/qqe/Qqe.md) * [REFLEX - Ehlers Reflex](/lib/oscillators/reflex/Reflex.md) * [REVERSEEMA - Ehlers Reverse EMA](/lib/oscillators/reverseema/ReverseEma.md) - * [RVGI - Relative Vigor Index](/lib/oscillators/rvgi/Rvgi.md) + * [RVGI - Ehlers Relative Vigor Index](/lib/oscillators/rvgi/Rvgi.md) * [RRSI - Ehlers Rocket RSI](/lib/oscillators/rrsi/Rrsi.md) * [SMI - Stochastic Momentum Index](/lib/oscillators/smi/Smi.md) * [SQUEEZE - Squeeze Momentum](/lib/oscillators/squeeze/Squeeze.md) @@ -220,7 +220,7 @@ * [ROCR - Rate of Change Ratio](/lib/momentum/rocr/Rocr.md) * [RSI - Relative Strength Index](/lib/momentum/rsi/Rsi.md) * [RSX - Jurik Relative Strength X](/lib/momentum/rsx/Rsx.md) - * [SAM - Smoothed Adaptive Momentum](/lib/momentum/sam/Sam.md) + * [SAM - Ehlers Smoothed Adaptive Momentum](/lib/momentum/sam/Sam.md) * [TSI - True Strength Index](/lib/momentum/tsi/Tsi.md) * [VWMACD - Volume-Weighted MACD](/lib/momentum/vwmacd/Vwmacd.md) * [VEL - Jurik Velocity](/lib/momentum/vel/Vel.md) diff --git a/docs/indicators.md b/docs/indicators.md index 55835dec..3f1a7ea6 100644 --- a/docs/indicators.md +++ b/docs/indicators.md @@ -51,14 +51,14 @@ Finite Impulse Response filters. Output depends only on a fixed window of inputs | [**HANMA**](../lib/trends_FIR/hanma/Hanma.md) | Hanning Weighted MA | Cosine-based window | | [**HEND**](../lib/trends_FIR/hend/Hend.md) | Henderson MA | Optimized for trend extraction, minimal distortion | | [**HMA**](../lib/trends_FIR/hma/Hma.md) | Hull MA | Reduced lag via WMA differencing | -| [**ILRS**](../lib/trends_FIR/ilrs/Ilrs.md) | Integral of LinReg Slope | Cumulative linear regression slope | +| [**ILRS**](../lib/trends_FIR/ilrs/Ilrs.md) | Ehlers Integral of LinReg Slope | Cumulative linear regression slope | | [**KAISER**](../lib/trends_FIR/kaiser/Kaiser.md) | Kaiser Window MA | Adjustable β for sidelobe control | | [**LANCZOS**](../lib/trends_FIR/lanczos/Lanczos.md) | Lanczos (Sinc) Window MA | Optimal frequency-domain characteristics | | [**LSMA**](../lib/trends_FIR/lsma/Lsma.md) | Least Squares MA | Linear regression endpoint | | [**NLMA**](../lib/trends_FIR/nlma/Nlma.md) | Non-Lag MA | Damped cosine kernel FIR | | [**NYQMA**](../lib/trends_FIR/nyqma/Nyqma.md) | Nyquist MA | Dual LWMA cascade FIR | | [**PARZEN**](../lib/trends_FIR/parzen/Parzen.md) | Parzen Window MA | Piecewise cubic, good spectral leakage control | -| [**PMA**](../lib/trends_FIR/pma/Pma.md) | Predictive Moving Average | Ehlers WMA cascade + extrapolation | +| [**PMA**](../lib/trends_FIR/pma/Pma.md) | Ehlers Predictive Moving Average | WMA cascade + extrapolation | | [**PWMA**](../lib/trends_FIR/pwma/Pwma.md) | Pascal Weighted MA | Binomial coefficient weights | | [**QRMA**](../lib/trends_FIR/qrma/Qrma.md) | Quadratic Regression MA | Quadratic polynomial regression endpoint | | [**RAIN**](../lib/trends_FIR/rain/Rain.md) | Rainbow MA | 10× cascaded SMA | @@ -176,7 +176,7 @@ Bounded indicators that oscillate around a centerline or between fixed extremes. | [**CFO**](../lib/oscillators/cfo/Cfo.md) | Chande Forecast Oscillator | Forecast error percentage | | [**COPPOCK**](../lib/oscillators/coppock/Coppock.md) | Coppock Curve | Long-term momentum via weighted ROC sum | | [**CRSI**](../lib/oscillators/crsi/Crsi.md) | Connors RSI | Composite RSI + streak RSI + percentile rank | -| [**CTI**](../lib/oscillators/cti/Cti.md) | Correlation Trend Indicator | Linear regression correlation as trend strength | +| [**CTI**](../lib/oscillators/cti/Cti.md) | Ehlers Correlation Trend Indicator | Linear regression correlation as trend strength | | [**DECO**](../lib/oscillators/deco/Deco.md) | Ehlers Decycler Oscillator | Dual HP bandpass cycle isolation | | [**DEM**](../lib/oscillators/dem/Dem.md) | DeMarker Oscillator | Bounded 0-1 comparing sequential highs/lows | | [**DOSC**](../lib/oscillators/dosc/Dosc.md) | Derivative Oscillator | Double-smoothed RSI minus signal line | @@ -201,7 +201,7 @@ Bounded indicators that oscillate around a centerline or between fixed extremes. | [**QQE**](../lib/oscillators/qqe/Qqe.md) | Quantitative Qualitative Estimation | Smoothed RSI with dynamic volatility bands | | [**REFLEX**](../lib/oscillators/reflex/Reflex.md) | Ehlers Reflex | Zero-centered reversal oscillator | | [**REVERSEEMA**](../lib/oscillators/reverseema/ReverseEma.md) | Ehlers Reverse EMA | 8-stage cascaded Z-transform inversion oscillator | -| [**RVGI**](../lib/oscillators/rvgi/Rvgi.md) | Relative Vigor Index | Open-close vs high-low ratio with smoothing | +| [**RVGI**](../lib/oscillators/rvgi/Rvgi.md) | Ehlers Relative Vigor Index | Open-close vs high-low ratio with smoothing | | [**SMI**](../lib/oscillators/smi/Smi.md) | Stochastic Momentum Index | Distance from range midpoint (K/D lines) | | [**SQUEEZE**](../lib/oscillators/squeeze/Squeeze.md) | Squeeze Momentum | BB inside KC squeeze with momentum | | [**STC**](../lib/oscillators/stc/Stc.md) | Schaff Trend Cycle | MACD + double Stochastic (0-100) | @@ -269,7 +269,7 @@ Rate of change and velocity measurements. First derivatives of price. | [**ROCR**](../lib/momentum/rocr/Rocr.md) | Rate of Change Ratio | Price ratio over N periods | | [**RSI**](../lib/momentum/rsi/Rsi.md) | Relative Strength Index | Bounded 0-100 momentum | | [**RSX**](../lib/momentum/rsx/Rsx.md) | Jurik RSX | Smoothed RSI variant | -| [**SAM**](../lib/momentum/sam/Sam.md) | Smoothed Adaptive Momentum | Ehlers adaptive cycle momentum | +| [**SAM**](../lib/momentum/sam/Sam.md) | Ehlers Smoothed Adaptive Momentum | Adaptive cycle momentum | | [**TSI**](../lib/momentum/tsi/Tsi.md) | True Strength Index | Double-smoothed momentum oscillator | | [**VEL**](../lib/momentum/vel/Vel.md) | Jurik Velocity | Adaptive velocity | diff --git a/docs/validation.md b/docs/validation.md index a96f35a7..8a7c7646 100644 --- a/docs/validation.md +++ b/docs/validation.md @@ -126,7 +126,7 @@ Next parity targets (highest impact): | **Coppock Curve** | [Coppock](../lib/oscillators/coppock/Coppock.md) | - | - | - | - | ❔ | | **Coral Trend Filter** | [Coral](../lib/trends_IIR/coral/Coral.md) | - | - | - | - | - | | **Correlation** | [Correl](../lib/statistics/correl/Correl.md) | [✔️](../lib/statistics/correl/Correl.md#validation) | - | [✔️](../lib/statistics/correl/Correl.md#validation) | - | - | -| **Correlation Trend Indicator** | [Cti](../lib/oscillators/cti/Cti.md) | - | - | - | - | ⚠️ | +| **Ehlers Correlation Trend Indicator** | [Cti](../lib/oscillators/cti/Cti.md) | - | - | - | - | ⚠️ | | **Cumulative Moving Average** | [Cma](../lib/statistics/cma/Cma.md) | - | - | - | - | - | | **Decay Min-Max Channel** | [Decaychannel](../lib/channels/decaychannel/decaychannel.md) | - | - | - | - | - | | **Ehlers Decycler** | [Decycler](../lib/trends_IIR/decycler/Decycler.md) | - | - | - | - | - | @@ -325,7 +325,7 @@ Next parity targets (highest impact): | **Schaff Trend Cycle** | [Stc](../lib/oscillators/stc/stc.md) | - | - | [✔️](../lib/oscillators/stc/stc.md#validation) | [⚠️](../lib/oscillators/stc/stc.md#validation "structural test only; Ooples STC uses different stochastic smoothing") | ❔ | | **Simple Moving Average** | [Sma](../lib/trends_FIR/sma/Sma.md) | [✔️](../lib/trends_FIR/sma/Sma.md#validation) | [✔️](../lib/trends_FIR/sma/Sma.md#validation) | [✔️](../lib/trends_FIR/sma/Sma.md#validation) | [✔️](../lib/trends_FIR/sma/Sma.md#validation) | ⚠️ | | **Sine-weighted MA** | [Sinema](../lib/trends_FIR/sinema/Sinema.md) | - | - | - | - | ⚠️ | -| **Smoothed Adaptive Momentum** | [Sam](../lib/momentum/sam/Sam.md) | - | - | - | - | - | +| **Ehlers Smoothed Adaptive Momentum** | [Sam](../lib/momentum/sam/Sam.md) | - | - | - | - | - | | **Smoothed Moving Average** | [Rma](../lib/trends_IIR/rma/Rma.md) | - | - | [✔️](../lib/trends_IIR/rma/Rma.md#validation) | [✔️](../lib/trends_IIR/rma/Rma.md#validation) | ❔ | | **SMI** | [Smi](../lib/oscillators/smi/Smi.md) | - | - | [⚠️](../lib/oscillators/smi/Smi.md#validation "structural test; different smoothing parameters") | [⚠️](../lib/oscillators/smi/Smi.md#validation "structural test only; Ooples SMI uses different double-smoothing") | ❔ | | **Solar Activity Cycle** | [Solar](../lib/cycles/solar/Solar.md) | - | - | - | - | - | diff --git a/lib/_index.md b/lib/_index.md index 99aff5db..f897472c 100644 --- a/lib/_index.md +++ b/lib/_index.md @@ -82,7 +82,7 @@ | [COVARIANCE](statistics/covariance/Covariance.md) | Covariance | Statistics | | [CRMA](trends_FIR/crma/Crma.md) | Cubic Regression MA | Trends (FIR) | | [CRSI](oscillators/crsi/Crsi.md) | Connors RSI | Oscillators | -| [CTI](oscillators/cti/Cti.md) | Correlation Trend Indicator | Oscillators | +| [CTI](oscillators/cti/Cti.md) | Ehlers Correlation Trend Indicator | Oscillators | | [CV](volatility/cv/Cv.md) | Coefficient of Variation | Volatility | | [CVI](volatility/cvi/Cvi.md) | Chaikin Volatility | Volatility | | [CWT](numerics/cwt/Cwt.md) | Continuous Wavelet Transform | Numerics | @@ -165,7 +165,7 @@ | [ICHIMOKU](dynamics/ichimoku/Ichimoku.md) | Ichimoku Cloud | Dynamics | | [IFFT](numerics/ifft/Ifft.md) | Inverse Fast Fourier Transform | Numerics | | [III](volume/iii/Iii.md) | Intraday Intensity Index | Volume | -| [ILRS](trends_FIR/ilrs/Ilrs.md) | Integral of LinReg Slope | Trends (FIR) | +| [ILRS](trends_FIR/ilrs/Ilrs.md) | Ehlers Integral of LinReg Slope | Trends (FIR) | | [IMI](oscillators/imi/Imi.md) | Intraday Momentum Index | Oscillators | | [IMPULSE](dynamics/impulse/Impulse.md) | Elder Impulse System | Dynamics | | [INERTIA](oscillators/inertia/Inertia.md) | Inertia | Oscillators | @@ -263,7 +263,7 @@ | [PIVOTWOOD](reversals/pivotwood/Pivotwood.md) | Woodie's Pivot Points | Reversals | | [PLUS_DI](dynamics/plusdi/PlusDi.md) | Plus Directional Indicator | Dynamics | | [PLUS_DM](dynamics/plusdm/PlusDm.md) | Plus Directional Movement | Dynamics | -| [PMA](trends_FIR/pma/Pma.md) | Predictive Moving Average | Trends (FIR) | +| [PMA](trends_FIR/pma/Pma.md) | Ehlers Predictive Moving Average | Trends (FIR) | | [PMO](momentum/pmo/Pmo.md) | Price Momentum Oscillator | Momentum | | [POISSONDIST](numerics/poissondist/Poissondist.md) | Poisson Distribution | Numerics | | [POLYFIT](statistics/polyfit/Polyfit.md) | Polynomial Fitting | Statistics | @@ -308,11 +308,11 @@ | [RSX](momentum/rsx/Rsx.md) | Relative Strength Quality Index | Momentum | | [RV](volatility/rv/Rv.md) | Realized Volatility | Volatility | | [RVI](volatility/rvi/Rvi.md) | Relative Volatility Index | Volatility | -| [RVGI](oscillators/rvgi/Rvgi.md) | Relative Vigor Index | Oscillators | +| [RVGI](oscillators/rvgi/Rvgi.md) | Ehlers Relative Vigor Index | Oscillators | | [RRSI](oscillators/rrsi/Rrsi.md) | Ehlers Rocket RSI | Oscillators | | [RWMA](trends_FIR/rwma/Rwma.md) | Range Weighted MA | Trends (FIR) | | [SAK](filters/sak/Sak.md) | Ehlers Swiss Army Knife | Filters | -| [SAM](momentum/sam/Sam.md) | Smoothed Adaptive Momentum | Momentum | +| [SAM](momentum/sam/Sam.md) | Ehlers Smoothed Adaptive Momentum | Momentum | | [SAR](reversals/sar/Sar.md) | Parabolic Stop And Reverse | Reversals | | [SAREXT](reversals/sarext/Sarext.md) | Parabolic SAR Extended | Reversals | | [SDCHANNEL](channels/sdchannel/Sdchannel.md) | Standard Deviation Channel | Channels | diff --git a/lib/momentum/_index.md b/lib/momentum/_index.md index 61c2d166..8e370228 100644 --- a/lib/momentum/_index.md +++ b/lib/momentum/_index.md @@ -22,7 +22,7 @@ Momentum indicators measure the velocity and acceleration of price changes. Unli | [RS](rs/Rs.md) | Price Relative Strength | Performance ratio between two assets. | | [RSI](rsi/Rsi.md) | Relative Strength Index | Speed and change of price movements, bounded 0-100. | | [RSX](rsx/Rsx.md) | Relative Strength Quality Index | Noise-free RSI using cascaded IIR filters, zero lag at turning points. | -| [SAM](sam/Sam.md) | Smoothed Adaptive Momentum | Ehlers. Hilbert Transform cycle detection + adaptive momentum + Super Smoother output. | +| [SAM](sam/Sam.md) | Ehlers Smoothed Adaptive Momentum | Ehlers. Hilbert Transform cycle detection + adaptive momentum + Super Smoother output. | | [TSI](tsi/Tsi.md) | True Strength Index | Double-smoothed momentum oscillator. | | [VEL](vel/Vel.md) | Jurik Velocity | Market acceleration via PWMA vs WMA differential. | | [VWMACD](vwmacd/Vwmacd.md) | Volume-Weighted MACD | VWMA-based MACD with signal line and histogram. Volume-aware momentum. | diff --git a/lib/momentum/sam/Sam.Quantower.cs b/lib/momentum/sam/Sam.Quantower.cs index bd373754..c36ad523 100644 --- a/lib/momentum/sam/Sam.Quantower.cs +++ b/lib/momentum/sam/Sam.Quantower.cs @@ -31,7 +31,7 @@ public class SamIndicator : Indicator, IWatchlistIndicator public SamIndicator() { - Name = "SAM - Smoothed Adaptive Momentum"; + Name = "SAM - Ehlers Smoothed Adaptive Momentum"; Description = "Ehlers adaptive momentum oscillator using Hilbert Transform cycle detection and Super Smoother"; SeparateWindow = true; OnBackGround = false; diff --git a/lib/momentum/sam/Sam.cs b/lib/momentum/sam/Sam.cs index 4715554d..d539dbdd 100644 --- a/lib/momentum/sam/Sam.cs +++ b/lib/momentum/sam/Sam.cs @@ -4,7 +4,7 @@ using System.Runtime.InteropServices; namespace QuanTAlib; /// -/// SAM: Smoothed Adaptive Momentum - Ehlers adaptive momentum oscillator that +/// SAM: Ehlers Smoothed Adaptive Momentum - adaptive momentum oscillator that /// measures price change over the dominant cycle period, then smooths with a /// 2-pole Super Smoother filter. /// diff --git a/lib/momentum/sam/Sam.md b/lib/momentum/sam/Sam.md index 351c948c..6e5b5078 100644 --- a/lib/momentum/sam/Sam.md +++ b/lib/momentum/sam/Sam.md @@ -1,4 +1,4 @@ -# SAM: Smoothed Adaptive Momentum +# SAM: Ehlers Smoothed Adaptive Momentum > *Smoothed adaptive momentum adjusts its sensitivity to volatility, amplifying signals in trending regimes and dampening them in noise.* diff --git a/lib/momentum/sam/tests/Sam.Quantower.Tests.cs b/lib/momentum/sam/tests/Sam.Quantower.Tests.cs index 47b8d8be..b95bb323 100644 --- a/lib/momentum/sam/tests/Sam.Quantower.Tests.cs +++ b/lib/momentum/sam/tests/Sam.Quantower.Tests.cs @@ -13,7 +13,7 @@ public class SamIndicatorTests Assert.Equal(8, indicator.Cutoff); Assert.Equal(SourceType.Close, indicator.Source); Assert.True(indicator.ShowColdValues); - Assert.Equal("SAM - Smoothed Adaptive Momentum", indicator.Name); + Assert.Equal("SAM - Ehlers Smoothed Adaptive Momentum", indicator.Name); Assert.True(indicator.SeparateWindow); Assert.False(indicator.OnBackGround); } diff --git a/lib/oscillators/_index.md b/lib/oscillators/_index.md index 2c650a46..15ec5ab3 100644 --- a/lib/oscillators/_index.md +++ b/lib/oscillators/_index.md @@ -15,7 +15,7 @@ Oscillators fluctuate above and below a centerline or within bounded ranges. Use | [CFO](cfo/Cfo.md) | Chande Forecast Oscillator | Percentage difference between price and linear regression forecast. Also known as FOSC. | | [COPPOCK](coppock/Coppock.md) | Coppock Curve | Long-term momentum via weighted sum of ROC periods. Buy signals only. | | [CRSI](crsi/Crsi.md) | Connors RSI | Composite of RSI, streak RSI, and percentile rank. Mean-reversion. | -| [CTI](cti/Cti.md) | Correlation Trend Indicator | Linear regression correlation coefficient as trend strength. | +| [CTI](cti/Cti.md) | Ehlers Correlation Trend Indicator | Linear regression correlation coefficient as trend strength. | | [DECO](deco/Deco.md) | Ehlers Decycler Oscillator | Dual HP bandpass isolating intermediate-frequency market cycles. | | [DEM](dem/Dem.md) | DeMarker Oscillator | Bounded 0-1 oscillator comparing sequential highs and lows. | | [DOSC](dosc/Dosc.md) | Derivative Oscillator | Double-smoothed RSI minus signal line. Momentum acceleration. | @@ -41,7 +41,7 @@ Oscillators fluctuate above and below a centerline or within bounded ranges. Use | [QQE](qqe/Qqe.md) | Quantitative Qualitative Estimation | Smoothed RSI with dynamic volatility bands. | | [REFLEX](reflex/Reflex.md) | Ehlers Reflex | Ehlers zero-centered reversal oscillator using super smoother with normalized sum-of-differences. | | [REVERSEEMA](reverseema/ReverseEma.md) | Ehlers Reverse EMA | 8-stage cascaded Z-transform inversion subtracts EMA lag, producing zero-centered oscillator signal. | -| [RVGI](rvgi/Rvgi.md) | Relative Vigor Index | Open-close vs high-low ratio with SMA smoothing. Measures conviction. | +| [RVGI](rvgi/Rvgi.md) | Ehlers Relative Vigor Index | Open-close vs high-low ratio with SMA smoothing. Measures conviction. | | [RRSI](rrsi/Rrsi.md) | Ehlers Rocket RSI | Fisher Transform of Super Smoother–filtered RSI. Sharp cyclic reversal signals. | | [SMI](smi/Smi.md) | Stochastic Momentum Index | Distance from range midpoint. More sensitive than classic Stochastic. | | [SQUEEZE](squeeze/Squeeze.md) | Squeeze | BB width < KC width indicates consolidation. Breakout imminent. | diff --git a/lib/oscillators/cti/Cti.Quantower.cs b/lib/oscillators/cti/Cti.Quantower.cs index 936ca6d4..a8c1925b 100644 --- a/lib/oscillators/cti/Cti.Quantower.cs +++ b/lib/oscillators/cti/Cti.Quantower.cs @@ -29,7 +29,7 @@ public sealed class CtiIndicator : Indicator, IWatchlistIndicator { OnBackGround = true; SeparateWindow = true; - Name = "CTI - Correlation Trend Indicator"; + Name = "CTI - Ehlers Correlation Trend Indicator"; Description = "Pearson correlation between price and a perfect linear time index"; _series = new LineSeries("CTI", Color.Yellow, 2, LineStyle.Solid); diff --git a/lib/oscillators/cti/Cti.cs b/lib/oscillators/cti/Cti.cs index 245cbeb1..a012f151 100644 --- a/lib/oscillators/cti/Cti.cs +++ b/lib/oscillators/cti/Cti.cs @@ -4,7 +4,7 @@ using System.Runtime.InteropServices; namespace QuanTAlib; /// -/// CTI: Correlation Trend Indicator (Ehlers, TASC 2020) +/// CTI: Ehlers Correlation Trend Indicator /// /// /// Measures the Pearson correlation coefficient between the price series and a diff --git a/lib/oscillators/cti/Cti.md b/lib/oscillators/cti/Cti.md index 0dd37178..52f9a0ae 100644 --- a/lib/oscillators/cti/Cti.md +++ b/lib/oscillators/cti/Cti.md @@ -1,4 +1,4 @@ -# CTI: Correlation Trend Indicator +# CTI: Ehlers Correlation Trend Indicator > *Correlation trend indicator measures the linear correlation between price and a perfect trend line — how orderly is the move.* diff --git a/lib/oscillators/cti/tests/Cti.Quantower.Tests.cs b/lib/oscillators/cti/tests/Cti.Quantower.Tests.cs index 7977a7bb..acc3df2e 100644 --- a/lib/oscillators/cti/tests/Cti.Quantower.Tests.cs +++ b/lib/oscillators/cti/tests/Cti.Quantower.Tests.cs @@ -13,7 +13,7 @@ public sealed class CtiIndicatorTests Assert.Equal(20, indicator.Period); Assert.Equal(SourceType.Close, indicator.Source); Assert.True(indicator.ShowColdValues); - Assert.Equal("CTI - Correlation Trend Indicator", indicator.Name); + Assert.Equal("CTI - Ehlers Correlation Trend Indicator", indicator.Name); Assert.True(indicator.SeparateWindow); Assert.True(indicator.OnBackGround); } diff --git a/lib/oscillators/rvgi/Rvgi.Quantower.cs b/lib/oscillators/rvgi/Rvgi.Quantower.cs index e68ce75d..cfeab970 100644 --- a/lib/oscillators/rvgi/Rvgi.Quantower.cs +++ b/lib/oscillators/rvgi/Rvgi.Quantower.cs @@ -27,7 +27,7 @@ public sealed class RvgiIndicator : Indicator, IWatchlistIndicator { OnBackGround = true; SeparateWindow = true; - Name = "RVGI - Relative Vigor Index"; + Name = "RVGI - Ehlers Relative Vigor Index"; Description = "Dual-output oscillator comparing closing strength to the full bar range, smoothed via 4-tap SWMA and averaged over a period. RVGI > 0 in uptrends, < 0 in downtrends."; _rvgiLine = new LineSeries("RVGI", Color.Yellow, 2, LineStyle.Solid); diff --git a/lib/oscillators/rvgi/Rvgi.cs b/lib/oscillators/rvgi/Rvgi.cs index c34d13cf..28f4df4b 100644 --- a/lib/oscillators/rvgi/Rvgi.cs +++ b/lib/oscillators/rvgi/Rvgi.cs @@ -10,7 +10,7 @@ using System.Runtime.InteropServices; namespace QuanTAlib; /// -/// RVGI: Relative Vigor Index +/// RVGI: Ehlers Relative Vigor Index /// /// /// Dual-output oscillator built in four stages: diff --git a/lib/oscillators/rvgi/Rvgi.md b/lib/oscillators/rvgi/Rvgi.md index a6106dbc..323effb7 100644 --- a/lib/oscillators/rvgi/Rvgi.md +++ b/lib/oscillators/rvgi/Rvgi.md @@ -1,4 +1,4 @@ -# RVGI: Relative Vigor Index +# RVGI: Ehlers Relative Vigor Index > *Relative Vigor Index compares the close-open range to the high-low range, measuring conviction in each bar's direction.* diff --git a/lib/oscillators/rvgi/tests/Rvgi.Quantower.Tests.cs b/lib/oscillators/rvgi/tests/Rvgi.Quantower.Tests.cs index 0cbc797e..efeac173 100644 --- a/lib/oscillators/rvgi/tests/Rvgi.Quantower.Tests.cs +++ b/lib/oscillators/rvgi/tests/Rvgi.Quantower.Tests.cs @@ -12,7 +12,7 @@ public sealed class RvgiIndicatorTests Assert.Equal(10, indicator.Period); Assert.True(indicator.ShowColdValues); - Assert.Equal("RVGI - Relative Vigor Index", indicator.Name); + Assert.Equal("RVGI - Ehlers Relative Vigor Index", indicator.Name); Assert.True(indicator.SeparateWindow); Assert.True(indicator.OnBackGround); } diff --git a/lib/trends_FIR/_index.md b/lib/trends_FIR/_index.md index 45cc5e42..09dad821 100644 --- a/lib/trends_FIR/_index.md +++ b/lib/trends_FIR/_index.md @@ -18,14 +18,14 @@ Finite Impulse Response (FIR) trend indicators. These use fixed-length windows w | [HANMA](hanma/Hanma.md) | Hanning MA | Hanning (raised cosine). Zero at edges. Smooth roll-off. | | [HEND](hend/Hend.md) | Henderson MA | Henderson window. Optimized for trend extraction. Minimal distortion. | | [HMA](hma/Hma.md) | Hull MA | Reduced lag via weighted average differencing. Can overshoot. | -| [ILRS](ilrs/Ilrs.md) | Integral of Linear Regression Slope | Cumulative linear regression slope. Smooth trend tracking. | +| [ILRS](ilrs/Ilrs.md) | Ehlers Integral of Linear Regression Slope | Cumulative linear regression slope. Smooth trend tracking. | | [KAISER](kaiser/Kaiser.md) | Kaiser Window MA | Kaiser-Bessel window. Adjustable β parameter for sidelobe control. | | [LANCZOS](lanczos/Lanczos.md) | Lanczos (Sinc) Window MA | Windowed sinc function. Optimal frequency-domain characteristics. | | [LSMA](lsma/Lsma.md) | Least Squares MA | Linear regression endpoint. Extrapolates trend. | | [NLMA](nlma/Nlma.md) | Non-Lag MA | Damped cosine kernel convolution. Near-zero lag FIR. | | [NYQMA](nyqma/Nyqma.md) | Nyquist MA | Dual LWMA cascade. Nyquist-compliant FIR smoothing. | | [PARZEN](parzen/Parzen.md) | Parzen (de la Vallée-Poussin) Window MA | Parzen window. Piecewise cubic. Good spectral leakage control. | -| [PMA](pma/Pma.md) | Predictive Moving Average | Ehlers predictive filter combining WMA cascade with linear extrapolation. | +| [PMA](pma/Pma.md) | Ehlers Predictive Moving Average | Ehlers predictive filter combining WMA cascade with linear extrapolation. | | [PWMA](pwma/Pwma.md) | Pascal Weighted MA | Pascal's triangle coefficients. Binomial distribution weights. | | [QRMA](qrma/Qrma.md) | Quadratic Regression MA | Quadratic polynomial regression endpoint. Captures curvature. | | [RAIN](rain/Rain.md) | Rainbow MA | 10× cascaded SMA. Extreme smoothing via FIR convolution. | diff --git a/lib/trends_FIR/ilrs/Ilrs.Quantower.cs b/lib/trends_FIR/ilrs/Ilrs.Quantower.cs index 9d935752..8036183d 100644 --- a/lib/trends_FIR/ilrs/Ilrs.Quantower.cs +++ b/lib/trends_FIR/ilrs/Ilrs.Quantower.cs @@ -31,7 +31,7 @@ public sealed class IlrsIndicator : Indicator, IWatchlistIndicator { OnBackGround = true; SeparateWindow = false; - Name = "ILRS - Integral of Linear Regression Slope"; + Name = "ILRS - Ehlers Integral of Linear Regression Slope"; Description = "Cumulative sum of rolling linear regression slope (Ehlers)"; _series = new LineSeries(name: $"ILRS {Period}", color: IndicatorExtensions.Averages, width: 2, style: LineStyle.Solid); AddLineSeries(_series); diff --git a/lib/trends_FIR/ilrs/Ilrs.cs b/lib/trends_FIR/ilrs/Ilrs.cs index 8a477a6c..cb4d7f38 100644 --- a/lib/trends_FIR/ilrs/Ilrs.cs +++ b/lib/trends_FIR/ilrs/Ilrs.cs @@ -4,7 +4,7 @@ using System.Runtime.InteropServices; namespace QuanTAlib; /// -/// ILRS: Integral of Linear Regression Slope +/// ILRS: Ehlers Integral of Linear Regression Slope /// /// /// Computes the linear regression slope over a rolling window, then accumulates diff --git a/lib/trends_FIR/ilrs/Ilrs.md b/lib/trends_FIR/ilrs/Ilrs.md index 679ea7a3..177018d2 100644 --- a/lib/trends_FIR/ilrs/Ilrs.md +++ b/lib/trends_FIR/ilrs/Ilrs.md @@ -1,4 +1,4 @@ -# ILRS: Integral of Linear Regression Slope +# ILRS: Ehlers Integral of Linear Regression Slope > *John Ehlers took the slope of a regression line, integrated it, and got a smoother trend follower. Differentiate to find direction, integrate to find position. Calculus: still useful after 300 years.* diff --git a/lib/trends_FIR/ilrs/tests/Ilrs.Quantower.Tests.cs b/lib/trends_FIR/ilrs/tests/Ilrs.Quantower.Tests.cs index f8f242e8..92d12a8c 100644 --- a/lib/trends_FIR/ilrs/tests/Ilrs.Quantower.Tests.cs +++ b/lib/trends_FIR/ilrs/tests/Ilrs.Quantower.Tests.cs @@ -12,7 +12,7 @@ public class IlrsIndicatorTests Assert.Equal(14, indicator.Period); Assert.Equal(SourceType.Close, indicator.Source); Assert.True(indicator.ShowColdValues); - Assert.Equal("ILRS - Integral of Linear Regression Slope", indicator.Name); + Assert.Equal("ILRS - Ehlers Integral of Linear Regression Slope", indicator.Name); Assert.False(indicator.SeparateWindow); Assert.True(indicator.OnBackGround); } diff --git a/lib/trends_FIR/pma/Pma.Quantower.cs b/lib/trends_FIR/pma/Pma.Quantower.cs index d66a052b..a22f1c3a 100644 --- a/lib/trends_FIR/pma/Pma.Quantower.cs +++ b/lib/trends_FIR/pma/Pma.Quantower.cs @@ -33,7 +33,7 @@ public override string SourceCodeLink => "https://github.com/mihakralj/QuanTAlib OnBackGround = true; SeparateWindow = false; _sourceName = Source.ToString(); - Name = "PMA - Predictive Moving Average"; + Name = "PMA - Ehlers Predictive Moving Average"; Description = "Ehlers Predictive Moving Average"; _series = new LineSeries(name: $"PMA {Period}", color: Color.Yellow, width: 2, style: LineStyle.Solid); _triggerSeries = new LineSeries(name: "Trigger", color: Color.Orange, width: 1, style: LineStyle.Solid); diff --git a/lib/trends_FIR/pma/Pma.cs b/lib/trends_FIR/pma/Pma.cs index 3021668d..5b3a7781 100644 --- a/lib/trends_FIR/pma/Pma.cs +++ b/lib/trends_FIR/pma/Pma.cs @@ -5,7 +5,7 @@ using System.Runtime.InteropServices; namespace QuanTAlib; /// -/// PMA: Predictive Moving Average +/// PMA: Ehlers Predictive Moving Average /// /// /// Ehlers' linear-extrapolation filter using dual WMA cascade. diff --git a/lib/trends_FIR/pma/Pma.md b/lib/trends_FIR/pma/Pma.md index 3acde0fd..779b766d 100644 --- a/lib/trends_FIR/pma/Pma.md +++ b/lib/trends_FIR/pma/Pma.md @@ -1,4 +1,4 @@ -# PMA: Predictive Moving Average +# PMA: Ehlers Predictive Moving Average > *John Ehlers looked at WMA's lag and said: 'What if we just extrapolated it away?' The result is a moving average that actually tries to predict where price is going, not where it has been.* diff --git a/lib/trends_FIR/pma/tests/Pma.Quantower.Tests.cs b/lib/trends_FIR/pma/tests/Pma.Quantower.Tests.cs index d5d62d26..45bd0425 100644 --- a/lib/trends_FIR/pma/tests/Pma.Quantower.Tests.cs +++ b/lib/trends_FIR/pma/tests/Pma.Quantower.Tests.cs @@ -12,7 +12,7 @@ public class PmaIndicatorTests Assert.Equal(7, indicator.Period); Assert.Equal(SourceType.Close, indicator.Source); Assert.True(indicator.ShowColdValues); - Assert.Equal("PMA - Predictive Moving Average", indicator.Name); + Assert.Equal("PMA - Ehlers Predictive Moving Average", indicator.Name); Assert.False(indicator.SeparateWindow); Assert.True(indicator.OnBackGround); }