Add "Ehlers" prefix to 5 Ehlers indicators: SAM, PMA, ILRS, CTI, RVGI

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.
This commit is contained in:
Miha Kralj
2026-03-17 10:51:24 -07:00
parent 75bcc12529
commit 329b0657bc
27 changed files with 42 additions and 42 deletions
+5 -5
View File
@@ -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 |
+1 -1
View File
@@ -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. |
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -4,7 +4,7 @@ using System.Runtime.InteropServices;
namespace QuanTAlib;
/// <summary>
/// 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.
/// </summary>
+1 -1
View File
@@ -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.*
@@ -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);
}
+2 -2
View File
@@ -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 Smootherfiltered 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. |
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -4,7 +4,7 @@ using System.Runtime.InteropServices;
namespace QuanTAlib;
/// <summary>
/// CTI: Correlation Trend Indicator (Ehlers, TASC 2020)
/// CTI: Ehlers Correlation Trend Indicator
/// </summary>
/// <remarks>
/// Measures the Pearson correlation coefficient between the price series and a
+1 -1
View File
@@ -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.*
@@ -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);
}
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
namespace QuanTAlib;
/// <summary>
/// RVGI: Relative Vigor Index
/// RVGI: Ehlers Relative Vigor Index
/// </summary>
/// <remarks>
/// Dual-output oscillator built in four stages:
+1 -1
View File
@@ -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.*
@@ -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);
}
+2 -2
View File
@@ -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. |
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -4,7 +4,7 @@ using System.Runtime.InteropServices;
namespace QuanTAlib;
/// <summary>
/// ILRS: Integral of Linear Regression Slope
/// ILRS: Ehlers Integral of Linear Regression Slope
/// </summary>
/// <remarks>
/// Computes the linear regression slope over a rolling window, then accumulates
+1 -1
View File
@@ -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.*
@@ -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);
}
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -5,7 +5,7 @@ using System.Runtime.InteropServices;
namespace QuanTAlib;
/// <summary>
/// PMA: Predictive Moving Average
/// PMA: Ehlers Predictive Moving Average
/// </summary>
/// <remarks>
/// Ehlers' linear-extrapolation filter using dual WMA cascade.
+1 -1
View File
@@ -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.*
@@ -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);
}