- Sar.Quantower.Tests.cs: add missing opening quote on string literal (line 48) - Exports.cs: rename Correlation.Batch → Correl.Batch (CS0103) - Ad.Validation.Tests.cs: fix Ooples OutputValues key "Ad" → "Adl"
64 KiB
Validation Across TA Libraries
"Trust, but verify." — Russian proverb (applicable to both Cold War diplomacy and technical indicator libraries)
Every indicator implementation makes implicit claims about correctness. QuanTAlib validates these claims by comparing outputs against established libraries: TA-Lib, Tulip, Skender.Stock.Indicators, OoplesFinance, and pandas-ta. Where implementations diverge, the differences get documented.
Reading the Matrix
| Symbol | Meaning |
|---|---|
| ✔️ | Validated: outputs match within floating-point tolerance (1e-9) |
| ⚠️ | Partial match: minor discrepancies documented in indicator notes |
| ❔ | Implementation exists but not validated |
| - | No implementation in that library |
Tolerance rationale: Financial data uses double precision. Differences below 1e-9 stem from floating-point arithmetic order, not algorithmic divergence.
Python Wrapper vs pandas-ta (Current Sweep)
Source: python/tests/reports/pandas_ta_all_exported_report.md (latest run)
- Total scanned: 134
- Successful parity (✔️): 11
- Non-comparable / intentionally skipped (⏭️): 80
- Failing parity (⚠️): 43
Recent wrapper/parity harness fixes completed:
- Hardened pandas-ta callable resolution and aliasing in
python/tests/run_all_exported_pandasta_validation.py - Added explicit non-comparable set instead of reporting these as hard failures
- Fixed mapping/signature adapters (for example
avgprice -> ohlc4) - Corrected Python bridge ABI signatures in
python/quantalib/_bridge.pyfor:qtl_alma(period + offset + sigma)qtl_dem(requires period)qtl_etherm(requires period)
- Updated wrapper defaults/signatures in
python/quantalib/indicators.py:asi(limit=3.0)(was invalid for native call path)dem(..., length=14)etherm(..., length=14)- full ALMA native parameters (
alma_offset,sigma)
Next parity targets (highest impact):
- Reduce remaining numeric mismatches in mapped indicators (
alma,bbands,rsi,roc,ema,dema,tema,stddev,variance,zscore, volume oscillators). - Expand/replace generic sweep with indicator-specific adapters where formulas/defaults are known to differ.
- Keep the sweep split into:
- parity-comparable indicators
- non-comparable indicators (tracked, not failed)
Technical Indicators
| Indicator | QuanTAlib | TA-Lib | Tulip | Skender | Ooples | pandas-ta |
|---|---|---|---|---|---|---|
| Aberration Bands | Aberr | - | - | - | - | ⚠️ |
| Absolute Price Oscillator | Apo | ✔️ | ✔️ | - | ✔️ | ✔️ |
| Acceleration Bands | AccBands | ✔️ | - | - | - | ❔ |
| Acceleration Oscillator | Ac | - | - | - | - | - |
| Accumulation/Distribution Line | Ad | ✔️ | ✔️ | ✔️ | ✔️ | ❔ |
| Accumulation/Distribution Oscillator | Adosc | ✔️ | ✔️ | ✔️ | ✔️ | ❔ |
| Accumulation Swing Index | Asi | - | - | - | - | - |
| Adaptive Price Zone | Apz | - | - | - | - | - |
| Andrews' Pitchfork | Apchannel | - | - | ✔️ | - | - |
| Archer Moving Averages Trends | Amat | - | - | ✔️ | ✔️ | ❔ |
| Archer On-Balance Volume | Aobv | - | - | - | - | ⚠️ |
| Arnaud Legoux Moving Average | Alma | - | - | ✔️ | ✔️ | ⚠️ |
| Aroon | Aroon | ✔️ | ✔️ | ✔️ | - | ❔ |
| Aroon Oscillator | AroonOsc | ✔️ | ✔️ | ✔️ | - | - |
| ATR Bands | Atrbands | ✔️ | - | ✔️ | - | - |
| Adaptive FIR Moving Average | Afirma | - | - | - | - | - |
| Ehlers Adaptive Laguerre Filter | ALaguerre | - | - | - | - | - |
| Ehlers Automatic Gain Control | Agc | - | - | - | - | - |
| Average Daily Range | Adr | - | - | - | - | - |
| Average Directional Index | Adx | ✔️ | ✔️ | ✔️ | ✔️ | ❔ |
| Average Directional Movement Rating | Adxr | ✔️ | ✔️ | - | - | - |
| Average True Range | Atr | ✔️ | ✔️ | ✔️ | ✔️ | ❔ |
| Average True Range Normalized [0,1] | Atrn | - | - | ✔️ | - | - |
| Average Price | Avgprice | ✔️ | - | - | - | - |
| Awesome Oscillator | Ao | - | ✔️ | ✔️ | ✔️ | ❔ |
| Balance of Power | Bop | ✔️ | ✔️ | ✔️ | ✔️ | ❔ |
| Baxter-King Band-Pass Filter | BaxterKing | - | - | - | - | - |
| Christiano-Fitzgerald Filter | Cfitz | - | - | - | - | - |
| Bollinger Bands | Bbands | ✔️ | ✔️ | ✔️ | ✔️ | ⚠️ |
| Bessel Filter | Bessel | - | - | - | - | - |
| Bessel-Weighted MA | Bwma | - | - | - | - | - |
| Beta Coefficient | Beta | ⚠️ | - | ✔️ | - | - |
| Beta Distribution | Betadist | - | - | - | - | - |
| Binomial Distribution | Binomdist | - | - | - | - | - |
| Exponential Distribution | Expdist | - | - | - | - | - |
| F-Distribution | Fdist | - | - | - | - | - |
| Gamma Distribution | Gammadist | - | - | - | - | - |
| Log-Normal Distribution | Lognormdist | - | - | - | - | - |
| Normal Distribution | Normdist | - | - | - | - | - |
| Poisson Distribution | Poissondist | - | - | - | - | - |
| Student's t-Distribution | Tdist | - | - | - | - | - |
| Weibull Distribution | Weibulldist | - | - | - | - | - |
| Continuous Wavelet Transform | Cwt | - | - | - | - | - |
| Discrete Wavelet Transform | Dwt | - | - | - | - | - |
| Bias | Bias | - | - | - | - | ⚠️ |
| Bilateral Filter | Bilateral | - | - | - | - | - |
| Blackman Window MA | Blma | - | - | - | - | - |
| Bollinger %B | Bbb | - | - | ✔️ | ⚠️ | - |
| Bollinger Band Squeeze | Bbs | - | - | ✔️ | ⚠️ | - |
| Bollinger Band Width | Bbw | - | - | ✔️ | ⚠️ | - |
| Bollinger Band Width Normalized | Bbwn | - | - | - | - | - |
| Bollinger Band Width Percentile | Bbwp | - | - | - | - | - |
| BRAR | Brar | - | - | - | - | ⚠️ |
| Ehlers 2-Pole Butterworth Filter | Butter2 | - | - | - | ✔️ | - |
| Ehlers 3-Pole Butterworth Filter | Butter3 | - | - | - | - | - |
| Camarilla Pivot Points | Pivotcam | - | - | - | - | - |
| Chandelier Exit | Chandelier | - | - | ✔️ | - | ❔ |
| Chande Kroll Stop | Ckstop | - | - | - | - | ❔ |
| Chaikin Money Flow | Cmf | - | - | ✔️ | ⚠️ | ⚠️ |
| Chaikin Volatility | Cvi | - | ⚠️ | - | ⚠️ | - |
| Chande Forecast Oscillator | Cfo | - | - | ✔️ | - | ✔️ |
| Chande Momentum Oscillator | Cmo | ⚠️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Chebyshev Type I Filter | Cheby1 | - | - | - | - | - |
| Chebyshev Type II Filter | Cheby2 | - | - | - | - | - |
| Choppiness Index | Chop | - | - | ✔️ | ⚠️ | ❔ |
| Close-to-Close Volatility | Ccv | - | - | - | - | - |
| Cointegration | Cointegration | - | - | - | - | - |
| Commodity Channel Index | Cci | ✔️ | ✔️ | ✔️ | - | ❔ |
| Composite Fractal Behavior | Cfb | - | - | - | - | - |
| Conditional Volatility | Cv | - | - | - | - | - |
| Connor's RSI | Crsi | - | - | - | - | ⚠️ |
| Convolution Moving Average | Conv | ✔️ | ✔️ | ✔️ | ✔️ | - |
| Coppock Curve | Coppock | - | - | - | - | ❔ |
| Coral Trend Filter | Coral | - | - | - | - | - |
| Correlation | Correl | ✔️ | - | ✔️ | - | - |
| Correlation Trend Indicator | Cti | - | - | - | - | ⚠️ |
| Cumulative Moving Average | Cma | - | - | - | - | - |
| Decay Min-Max Channel | Decaychannel | - | - | - | - | - |
| Ehlers Decycler | Decycler | - | - | - | - | - |
| DeMark Pivot Points | Pivotdem | - | - | - | - | - |
| DeMarker Oscillator | Dem | - | - | - | ⚠️ | - |
| Detrended Price Oscillator | Dpo | - | ⚠️ | ✔️ | ⚠️ | ✔️ |
| Ehlers Detrended Synthetic Price | Dsp | - | - | - | ⚠️ | - |
| Deviation-Scaled MA | Dsma | - | - | - | ⚠️ | - |
| Directional Movement | Dm | - | - | - | - | ❔ |
| Directional Movement Index | Dx | ✔️ | ✔️ | ✔️ | ✔️ | - |
| Directional Movement Index (Jurik) | Dmx | - | - | - | - | - |
| Dirty Data Detection | Dirty | - | - | - | - | - |
| Donchian Channels | Dc | - | - | ✔️ | ⚠️ | ❔ |
| Double Exponential Moving Average | Dema | ✔️ | ✔️ | ✔️ | ✔️ | ⚠️ |
| Double Weighted Moving Average | Dwma | ✔️ | ✔️ | ✔️ | - | - |
| Dynamic Momentum Index | Dymi | - | - | - | ⚠️ | - |
| Ease of Movement | Eom | - | ✔️ | - | - | ⚠️ |
| Efficiency Ratio | Er | - | - | - | - | ⚠️ |
| Ehlers Autocorrelation Periodogram | Eacp | - | - | - | - | - |
| BandPass Filter | Bpf | - | - | - | - | - |
| Ehlers Center of Gravity | Cg | - | - | - | ⚠️ | ⚠️ |
| Ehlers Correlation Cycle | Ccor | - | - | - | - | - |
| Ehlers Cyber Cycle | Ccyc | - | - | - | ⚠️ | - |
| Ehlers Distance Coefficient Filter | Edcf | - | - | - | - | - |
| Ehlers Even Better Sinewave | Ebsw | - | - | - | ⚠️ | - |
| Ehlers Fractal Adaptive MA | Frama | - | - | - | ⚠️ | - |
| Ehlers Highpass Filter | Hpf | - | - | - | ⚠️ | - |
| Ehlers Phasor Analysis | Phasor | - | - | - | - | - |
| Ehlers Sine Wave | HtSine | ✔️ | - | - | - | - |
| Ehlers SSF-Based Detrended Synthetic Price | Ssfdsp | - | - | - | - | - |
| Ehlers 2-Pole Super Smooth Filter | Ssf2 | - | - | - | ✔️ | ❔ |
| Ehlers 3-Pole Super Smooth Filter | Ssf3 | - | - | - | - | ❔ |
| Ehlers Ultrasmooth Filter | Usf | - | - | - | - | - |
| Elder Ray Index | Eri | - | - | - | - | ❔ |
| Elliptic (Cauer) Filter | Elliptic | - | - | - | - | - |
| Exponential Moving Average | Ema | ✔️ | ✔️ | ✔️ | ✔️ | ⚠️ |
| Exponential Transformation | Exptrans | - | - | - | - | - |
| Exponential Weighted MA Volatility | Ewma | - | - | - | - | - |
| Elder's Thermometer | Etherm | - | - | - | - | ⚠️ |
| Elastic Volume Weighted MA | Evwma | - | - | - | - | - |
| Extended Traditional Pivots | Pivotext | - | - | - | - | - |
| Fibonacci Pivot Points | Pivotfib | - | - | - | - | - |
| Fibonacci Weighted MA | Fwma | - | - | - | - | ❔ |
| Ehlers Fisher Transform (2002) | Fisher | - | ⚠️ | ✔️ | ⚠️ | ⚠️ |
| Ehlers Fisher Transform (2004) | Fisher04 | - | - | - | - | - |
| Force Index | Efi | - | - | ✔️ | ✔️ | ⚠️ |
| Fractal Chaos Bands | Fcb | - | - | ✔️ | ⚠️ | - |
| Garman-Klass Volatility | Gkv | - | - | - | - | - |
| Gator Oscillator | Gator | - | - | - | - | - |
| Gann High-Low Activator | Ghla | - | - | - | - | ❔ |
| Gaussian Filter | Gauss | - | - | - | ⚠️ | - |
| Gaussian-Weighted MA | Gwma | - | - | - | - | - |
| Geometric Mean | Geomean | - | - | - | - | - |
| Harmonic Mean | Harmean | - | - | - | - | - |
| Granger Causality Test | Granger | - | - | - | - | - |
| Hamming Window MA | Hamma | - | - | - | - | - |
| Hann FIR Filter | Hann | - | - | - | - | - |
| Hanning Window MA | Hanma | - | - | - | - | - |
| Heikin-Ashi | Ha | - | - | - | - | ❔ |
| High-Low Volatility (Parkinson) | Hlv | - | - | - | - | - |
| Highest value | Highest | ✔️ | ✔️ | - | - | - |
| Ehlers Hilbert Transform Dominant Cycle Period | HtDcPeriod | ✔️ | - | - | - | - |
| Ehlers Hilbert Transform Dominant Cycle Phase | HtDcPhase | ✔️ | - | - | - | - |
| Ehlers Hilbert Transform Instantaneous Trend | HtTrendline | ✔️ | - | ✔️ | ✔️ | ❔ |
| Ehlers Hilbert Transform Phasor Components | HtPhasor | ✔️ | - | - | - | - |
| Ehlers Hilbert Transform SineWave | HtSine | ✔️ | - | - | - | - |
| Ehlers Hilbert Transform Trend vs Cycle Mode | Ht_trendmode | ✔️ | - | - | - | - |
| Historical Volatility (Close-to-Close) | Hv | - | - | ✔️ | - | - |
| Hodrick-Prescott Filter | Hp | - | - | - | - | - |
| Holt Exponential Smoothing | Holt | - | - | - | - | - |
| Holt Weighted MA | Hwma | - | - | - | - | ❔ |
| Ehlers Homodyne Discriminator | Homod | - | - | - | ⚠️ | - |
| Huber Loss | Huber | - | - | - | - | - |
| Hull Exponential MA | Hema | - | - | - | - | - |
| Hull Moving Average | Hma | - | ✔️ | ✔️ | ⚠️ | ⚠️ |
| Hurst Exponent | Hurst | - | - | ⚠️ | - | - |
| Ichimoku Cloud | Ichimoku | - | - | ✔️ | ⚠️ | ❔ |
| Impulse (Elder) | Impulse | - | - | - | - | - |
| Inertia | Inertia | - | - | - | ⚠️ | ⚠️ |
| Interquartile Range | Iqr | - | - | - | - | - |
| Intraday Intensity Index | Iii | - | - | - | - | - |
| Intraday Momentum Index | Imi | - | - | - | - | - |
| Jarque-Bera Test | Jb | - | - | - | - | - |
| Jurik Moving Average | Jma | - | - | - | ⚠️ | ❔ |
| Jurik Volatility | Jvolty | - | - | - | - | - |
| Jurik Adaptive Envelope Bands | Jbands | - | - | - | - | - |
| Jurik Volatility Normalized [0,100] | Jvoltyn | - | - | - | - | - |
| Kalman Filter | Kalman | - | - | - | - | - |
| Kaufman Adaptive Moving Average | Kama | ✔️ | ✔️ | ✔️ | ✔️ | ❔ |
| KDJ Indicator | Kdj | - | - | ⚠️ | - | ❔ |
| Keltner Channel | Kc | - | - | ✔️ | ⚠️ | ❔ |
| Kendall Rank Correlation | Kendall | - | - | - | - | - |
| Klinger Volume Oscillator | Kvo | - | ✔️ | ✔️ | ⚠️ | ❔ |
| Know Sure Thing | Kst | - | - | - | - | ❔ |
| Kurtosis | Kurtosis | - | - | - | ✔️ | ❔ |
| Ehlers Laguerre Filter | Laguerre | - | - | - | - | - |
| Ehlers Laguerre RSI | Lrsi | - | - | - | ⚠️ | - |
| Least Mean Squares | Lms | - | - | - | - | - |
| Recursive Least Squares | Rls | - | - | - | - | - |
| Least Squares Moving Average | Lsma | - | - | ✔️ | ⚠️ | ⚠️ |
| Linear Regression | LinReg | - | - | ✔️ | ⚠️ | - |
| Linear Transformation | Lineartrans | - | - | - | - | - |
| Linear Trend MA | Ltma | - | - | - | - | - |
| LOESS/LOWESS Smoothing | Loess | - | - | - | - | - |
| Logarithmic Transformation | Logtrans | - | - | - | - | - |
| Logistic Function | Sigmoid | - | - | - | - | - |
| Lowest value | Lowest | ✔️ | ✔️ | - | - | - |
| Lunar Phase | Lunar | - | - | - | - | - |
| MACD | Macd | ✔️ | ✔️ | ✔️ | ✔️ | ❔ |
| Market Facilitation Index | Marketfi | - | ✔️ | - | - | - |
| Mass Index | Massi | - | ⚠️ | ⚠️ | ⚠️ | ❔ |
| McGinley Dynamic | Mgdi | - | - | ✔️ | ✔️ | ❔ |
| Mean Absolute Error | Mae | - | - | - | - | - |
| Mean Absolute Percentage Difference | Mapd | - | - | - | - | - |
| Mean Absolute Percentage Error | Mape | - | - | - | - | - |
| Mean Absolute Scaled Error | Mase | - | - | - | - | - |
| Mean Error | Me | - | - | - | - | - |
| Mean Percentage Error | Mpe | - | - | - | - | - |
| Mean Squared Error | Mse | - | - | - | - | - |
| Mean Squared Logarithmic Error | Msle | - | - | - | - | - |
| Ehlers MESA Adaptive Moving Average | Mama | ⚠️ | - | ✔️ | ✔️ | ❔ |
| Median Price | Medprice | ✔️ | - | - | - | ⚠️ |
| Mid Price | Midprice | ✔️ | - | - | - | ⚠️ |
| Midpoint | Midpoint | ✔️ | - | - | - | ❔ |
| Min-Max Channel | Mmchannel | - | - | ✔️ | - | - |
| Min-Max Scaling (Normalization) | Normalize | - | - | - | - | - |
| Mode (Most Frequent) | Mode | - | - | - | - | - |
| Modified MA | Mma | - | - | - | - | ❔ |
| Modular Filter | Modf | - | - | - | - | - |
| Money Flow Index | Mfi | ✔️ | - | ✔️ | ✔️ | ✔️ |
| Momentum | Mom | ✔️ | ✔️ | ✔️ | ⚠️ | ⚠️ |
| Momentum change; 2nd derivative | Accel | - | - | - | - | - |
| Moon Phase | Moon | - | - | - | - | - |
| Moving Average Envelopes | Maenv | - | - | ✔️ | ⚠️ | - |
| Natural Moving Average | Nma | - | - | - | - | - |
| Negative Volume Index | Nvi | - | ✔️ | - | - | ⚠️ |
| Normalized Average True Range | Natr | ✔️ | ✔️ | ✔️ | ✔️ | ❔ |
| Normalized Shannon Entropy | Entropy | - | - | - | - | ⚠️ |
| Notch Filter | Notch | - | - | - | - | - |
| Nadaraya-Watson Estimator | Nw | - | - | - | - | - |
| Open-Close Average | Midbody | - | - | ✔️ | - | - |
| One Euro Filter | OneEuro | - | - | - | - | - |
| On Balance Volume | Obv | ⚠️ | ✔️ | ✔️ | ⚠️ | ✔️ |
| Parabolic SAR | Sar | ✔️ | - | ✔️ | ⚠️ | ❔ |
| Pascal Weighted Moving Average | Pwma | - | - | - | ✔️ | ❔ |
| Percentage Change | Change | - | ✔️ | - | - | - |
| Percentage Price Oscillator | Ppo | ✔️ | ✔️ | - | ✔️ | ❔ |
| Percentage Volume Oscillator | Pvo | - | - | ✔️ | ⚠️ | ✔️ |
| Percentile | Percentile | - | - | - | - | - |
| Polarized Fractal Efficiency | Pfe | - | - | - | - | - |
| Pivot Points | Pivot | - | - | - | - | ❔ |
| Pivot Points (Camarilla) | Pivotcam | - | - | - | - | - |
| Pivot Points (DeMark) | Pivotdem | - | - | - | - | - |
| Pivot Points (Extended) | Pivotext | - | - | - | - | - |
| Pivot Points (Fibonacci) | Pivotfib | - | - | - | - | - |
| Positive Volume Index | Pvi | - | ✔️ | - | - | ⚠️ |
| Pretty Good Oscillator | Pgo | - | - | - | ⚠️ | ❔ |
| Price Channel | Pc | - | - | ✔️ | - | - |
| Price Momentum Oscillator | Pmo | - | - | ✔️ | ✔️ | - |
| Price Relative Strength | Rs | - | - | ✔️ | - | - |
| Price Volume Divergence | Pvd | - | - | - | - | - |
| Price Volume Rank | Pvr | - | - | - | - | ⚠️ |
| Price Volume Trend | Pvt | - | - | - | ✔️ | ⚠️ |
| Psychological Line | Psl | - | - | - | - | ⚠️ |
| Qstick Indicator | Qstick | - | - | - | - | ❔ |
| Quad Exponential MA | Qema | - | - | - | - | - |
| QQE Indicator | Qqe | - | - | - | - | ❔ |
| Quantile | Quantile | - | - | - | - | ❔ |
| Range Action Verification Index | Ravi | - | - | - | - | - |
| Rate of acceleration; 3rd derivative | Jerk | - | - | - | - | - |
| Rate of Change | Roc | ✔️ | ✔️ | ✔️ | ⚠️ | ⚠️ |
| Rate of change; 1st derivative | Slope | - | - | ✔️ | - | ⚠️ |
| Rate of Change Percentage | Rocp | ✔️ | - | - | - | - |
| Rate of Change Ratio | Rocr | ✔️ | ✔️ | - | - | - |
| Realized Volatility | Rv | - | - | - | - | - |
| Rectified Linear Unit | Relu | - | - | - | - | - |
| Recursive Gaussian MA | Rgma | - | - | - | - | - |
| Ehlers Recursive Median Filter | Rmed | - | - | - | - | - |
| Reflex | Reflex | - | - | - | - | - |
| Regression Channels | Regchannel | - | - | - | - | - |
| Regularized Exponential MA | Rema | - | - | - | ⚠️ | - |
| Relative Absolute Error | Rae | - | - | - | - | - |
| Relative Squared Error | Rse | - | - | - | - | - |
| Relative Strength Index | Rsi | ✔️ | ✔️ | ✔️ | ✔️ | ⚠️ |
| Relative Strength Quality Index | Rsx | - | - | - | ⚠️ | ✔️ |
| Relative Volatility Index | Rvi | - | - | - | - | ❔ |
| RVGI | Rvgi | - | - | - | - | ❔ |
| Renko | - | - | - | ✔️ | - | - |
| Rogers-Satchell Volatility | Rsv | - | - | - | - | - |
| Ehlers Roofing Filter | Roofing | - | - | - | ✔️ | - |
| Root Mean Squared Error | Rmse | - | - | - | - | - |
| Root Mean Squared Logarithmic Error | Rmsle | - | - | - | - | - |
| R-Squared | RSquared | - | - | ✔️ | - | - |
| Savitzky-Golay Filter | Sgf | - | - | - | - | - |
| Savitzky-Golay MA | Sgma | - | - | - | - | - |
| Schaff Trend Cycle | Stc | - | - | ✔️ | ⚠️ | ❔ |
| Simple Moving Average | Sma | ✔️ | ✔️ | ✔️ | ✔️ | ⚠️ |
| Sine-weighted MA | Sinema | - | - | - | - | ⚠️ |
| Smoothed Adaptive Momentum | Sam | - | - | - | - | - |
| Smoothed Moving Average | Rma | - | - | ✔️ | ✔️ | ❔ |
| SMI | Smi | - | - | ⚠️ | ⚠️ | ❔ |
| Solar Activity Cycle | Solar | - | - | - | - | - |
| Spearman Rank Correlation | Spearman | - | - | - | ⚠️ | - |
| Ehlers Super Passband Filter | Spbf | - | - | - | - | - |
| Squeeze | Squeeze | - | - | - | - | ❔ |
| Square Root Transformation | Sqrttrans | - | - | - | - | - |
| Standard Deviation Channel | Sdchannel | - | - | - | ⚠️ | - |
| Standardization (Z-score) | Zscore | - | - | - | ⚠️ | ⚠️ |
| Starc Bands | Starc | - | - | - | - | - |
| Stochastic Fast | Stochf | ✔️ | - | ✔️ | ⚠️ | ❔ |
| Stochastic Momentum Index | Smi | - | - | ⚠️ | ⚠️ | ❔ |
| Stochastic Oscillator | Stoch | ✔️ | - | ✔️ | - | ❔ |
| Stochastic RSI | Stochrsi | ✔️ | - | ✔️ | ✔️ | ❔ |
| Stoller Average Range Channel | Starchannel | - | - | ✔️ | ⚠️ | - |
| Super Trend Bands | Stbands | - | - | - | - | - |
| SuperTrend | Super | - | - | ✔️ | - | ❔ |
| Swing High/Low Detection | Swings | - | - | - | - | - |
| Symmetric Mean Absolute Percentage Error | Smape | - | - | - | - | - |
| Symmetric Weighted Moving Average | Swma | - | - | - | - | ⚠️ |
| T3 Moving Average | T3 | ✔️ | - | ✔️ | ✔️ | ❔ |
| Theil Index | Theil | - | - | - | - | - |
| Time Series Forecast | Tsf | ✔️ | ✔️ | ✔️ | ⚠️ | - |
| Time Weighted Average Price | Twap | - | - | - | - | - |
| Trade Volume Index | Tvi | - | - | - | ⚠️ | - |
| TrendFlex | Trendflex | - | - | - | - | ⚠️ |
| Triangular Moving Average | Trima | ✔️ | ✔️ | ✔️ | ⚠️ | ⚠️ |
| Triple Exponential Average | Trix | ✔️ | ✔️ | ✔️ | ⚠️ | ✔️ |
| Triple Exponential Moving Average | Tema | ✔️ | ✔️ | ✔️ | ⚠️ | ⚠️ |
| Trend Regularity Adaptive MA | Trama | - | - | - | - | - |
| True Range | Tr | ✔️ | ✔️ | ✔️ | - | ✔️ |
| True Strength Index | Tsi | - | - | ✔️ | ✔️ | ⚠️ |
| Typical Price | Typprice | ✔️ | - | - | - | ⚠️ |
| TTM Trend | Ttm | - | - | - | - | ❔ |
| TTM Scalper Alert | TtmScalper | - | - | - | - | - |
| TTM Wave | TtmWave | - | - | - | - | - |
| Ulcer Index | Ui | - | - | - | ⚠️ | ❔ |
| Ehlers Ultimate Bands | Ubands | - | - | - | - | - |
| Ehlers Ultimate Channel | Uchannel | - | - | - | - | - |
| Ultimate Oscillator | Ultosc | ✔️ | ✔️ | ✔️ | ✔️ | ❔ |
| Variable Index Dynamic Average | Vidya | - | - | - | - | ❔ |
| Velocity (Jurik) | Vel | - | - | - | - | - |
| Vertical Horizontal Filter | Vhf | - | - | ⚠️ | - | ❔ |
| Volatility Adjusted Moving Average | Vama | - | - | - | - | - |
| Volatility of Volatility | Vov | - | - | - | - | - |
| Volatility Ratio | Vr | - | - | - | - | - |
| Volume Accumulation | Va | - | - | - | - | - |
| Volume Force | Vf | - | - | - | - | - |
| Volume Oscillator | Vo | - | ✔️ | - | - | - |
| Volume Rate of Change | Vroc | - | - | - | - | - |
| Volume Weighted Accumulation/Distribution | Vwad | - | - | - | - | - |
| Volume Weighted Average Price | Vwap | - | - | - | - | ❔ |
| Volume Weighted Moving Average | Vwma | - | - | ✔️ | ✔️ | ⚠️ |
| Vortex Indicator | Vortex | - | - | ✔️ | ⚠️ | ❔ |
| Ehlers Voss Predictive Filter | Voss | - | - | - | ✔️ | - |
| VWAP Bands | Vwapbands | - | - | - | - | - |
| VWAP with Standard Deviation Bands | Vwapsd | - | - | - | - | - |
| Wavelet Denoising Filter | Wavelet | - | - | - | - | - |
| Weighted Close Price | Wclprice | ✔️ | - | - | - | ⚠️ |
| Weighted Moving Average | Wma | ✔️ | ✔️ | ✔️ | - | ⚠️ |
| Wiener Filter | Wiener | - | - | - | - | - |
| Williams %R | Willr | ✔️ | ✔️ | ✔️ | ⚠️ | ❔ |
| Williams Accumulation/Distribution | Wad | - | ✔️ | - | ⚠️ | - |
| Williams Alligator | Alligator | - | - | ✔️ | ⚠️ | ❔ |
| Williams Fractal | Fractals | - | - | ✔️ | - | - |
| Woodie's Pivot Points | Pivotwood | - | - | - | - | - |
| Yang-Zhang Volatility | Yzv | - | - | - | - | - |
| Yang-Zhang Volatility Adjusted MA | Yzvama | - | - | - | - | - |
| Zero-Lag Double Exponential MA | Zldema | - | - | - | - | - |
| Zero-Lag Exponential Moving Average | Zlema | - | - | ⚠️ | - | ❔ |
| Zero-Lag Triple Exponential MA | Zltema | - | - | - | ⚠️ | - |
| ZigZag | - | - | - | ✔️ | - | ❔ |
| Z-score standardization | Zscore | - | - | - | ✔️ | ⚠️ |
| Z-Test | Ztest | - | - | - | - | - |
Statistical Indicators
| Indicator | QuanTAlib | MathNet | TA-Lib | Tulip | Skender | pandas-ta |
|---|---|---|---|---|---|---|
| Autocorrelation Function | Acf | - | - | - | - | - |
| Covariance | Covariance | - | - | - | - | - |
| Entropy (Shannon) | Entropy | - | - | - | - | ⚠️ |
| Geometric Mean | Geomean | - | - | - | - | - |
| Harmonic Mean | Harmean | - | - | - | - | - |
| Hurst Exponent | Hurst | - | - | ⚠️ | - | - |
| Interquartile Range | Iqr | - | - | - | - | - |
| Granger Causality | Granger | - | - | - | - | - |
| Jarque-Bera Test | Jb | - | - | - | - | - |
| Kendall Rank Correlation | Kendall | - | - | - | - | - |
| Median (Statistical) | Median | ✔️ | - | - | - | ❔ |
| Mode | Mode | - | - | - | - | - |
| Percentile | Percentile | - | - | - | - | - |
| Quantile | Quantile | - | - | - | - | ❔ |
| Skewness | Skew | ✔️ | - | - | - | ❔ |
| Spearman Rank Correlation | Spearman | - | - | - | - | - |
| Standard Deviation | StdDev | ✔️ | ✔️ | ✔️ | ✔️ | ⚠️ |
| Sum (Rolling) | Sum | - | ✔️ | ✔️ | - | - |
| Theil T Index | Theil | - | - | - | - | - |
| Partial Autocorrelation Function | Pacf | - | - | - | - | - |
| Variance | Variance | ✔️ | ✔️ | ✔️ | ✔️ | ⚠️ |
| Mean Absolute Deviation | MeanDev | - | - | ✔️ | - | ❔ |
| Standard Error of Regression | Stderr | - | - | ⚠️ | - | - |
| Z-Score | Zscore | - | - | ⚠️ | - | ⚠️ |
| Z-Test | Ztest | - | - | - | - | - |
Error Metrics
| Indicator | QuanTAlib | MathNet | Notes |
|---|---|---|---|
| Mean Absolute Error | Mae | ✔️ | Validated via Distance.MAE() |
| Mean Squared Error | Mse | ✔️ | Validated via Distance.MSE() |
| Root Mean Squared Error | Rmse | ✔️ | Validated via sqrt(Distance.MSE()) |
| R-Squared | Rsquared | - | Uses streaming-optimized TSS calculation |
| Huber Loss | Huber | - | No external validation available |
| Pseudo-Huber Loss | PseudoHuber | - | No external validation available |
| Log-Cosh Loss | LogCosh | - | No external validation available |
| Tukey Loss | Tukey | - | No external validation available |
| Quantile Loss | Quantile | - | No external validation available |
| MAPE | Mape | - | No external validation available |
| SMAPE | Smape | - | No external validation available |
| MAAPE | Maape | - | No external validation available |
| MASE | Mase | - | No external validation available |
| MSLE | Msle | - | No external validation available |
| RMSLE | Rmsle | - | No external validation available |
| Theil U | TheilU | - | No external validation available |
| Mean Error | Me | - | No external validation available |
| MPE | Mpe | - | No external validation available |
| RSE | Rse | - | No external validation available |
| RAE | Rae | - | No external validation available |
| MRAE | Mrae | - | No external validation available |
| MdAE | MdAE | - | No external validation available |
| MdAPE | MdAPE | - | No external validation available |
| MAPD | Mapd | - | No external validation available |
| WMAPE | Wmape | - | No external validation available |
| WRMSE | Wrmse | - | Validated via internal RMSE equivalence (uniform weights) |
pandas-ta Indicators Not in QuanTAlib
The following 30 indicators are available in pandas-ta but have no equivalent implementation in the QuanTAlib C# library. These represent potential future additions.
Candle Patterns (5)
| pandas-ta | Description |
|---|---|
cdl |
Candlestick pattern detection (multi-pattern) |
cdl_doji |
Doji candle detection |
cdl_inside |
Inside bar detection |
cdl_pattern |
Named candlestick pattern matching |
cdl_z |
Z-score candle analysis |
Performance (3)
| pandas-ta | Description |
|---|---|
drawdown |
Maximum drawdown analysis |
log_return |
Logarithmic returns |
percent_return |
Percentage returns |
Momentum (5)
| pandas-ta | Description |
|---|---|
exhc |
Exhaustion candles |
smc |
Squeeze Momentum Composite |
squeeze_pro |
TTM Squeeze Pro (extended) |
tmo |
True Momentum Oscillator |
dm |
Directional Movement (+DI/-DI separate) |
Trend (8)
| pandas-ta | Description |
|---|---|
decay |
Linear decay function |
decreasing |
Decreasing trend detection |
increasing |
Increasing trend detection |
long_run |
Long run length analysis |
short_run |
Short run length analysis |
rwi |
Random Walk Index |
zigzag |
ZigZag pivot detection |
alphatrend |
Alpha Trend |
Volatility (4)
| pandas-ta | Description |
|---|---|
atrts |
ATR Trailing Stop |
hwc |
Holt-Winter Channel |
pdist |
Price Distance |
thermo |
Thermometer indicator |
Volume (4)
| pandas-ta | Description |
|---|---|
pvol |
Price Volume oscillator |
tsv |
Time Segmented Volume |
vhm |
Volume Heat Map |
vp |
Volume Profile |
Statistics (1)
| pandas-ta | Description |
|---|---|
tos_stdevall |
ThinkOrSwim StdDev All |
Validation Libraries
| Library | Language | License | Notes |
|---|---|---|---|
| TA-Lib | C (via .NET wrapper) | BSD | Industry standard. C implementation, battle-tested. |
| Tulip | C (via .NET wrapper) | LGPL | Lightweight, well-documented. |
| Skender.Stock.Indicators | C# | MIT | Pure .NET. Active development. |
| OoplesFinance | C# | Apache 2.0 | Large indicator collection. Validation coverage varies. |
| MathNet.Numerics | C# | MIT | Statistical functions, not TA-specific. |
| pandas-ta | Python | MIT | 130+ indicators. Python-native with optional TA-Lib acceleration. |
Validation Philosophy
Three levels of confidence:
Level 1: Cross-Library Agreement Multiple independent implementations produce identical results. Highest confidence. Most mainstream indicators (SMA, EMA, RSI, MACD) fall here.
Level 2: Original Source Agreement No cross-library validation available, but implementation matches original research paper or patent description. JMA, various proprietary indicators fall here.
Level 3: Mathematical Correctness Only No external reference exists. Implementation verified through unit tests, edge case handling, and mathematical properties (e.g., filter stability, energy preservation). Novel or obscure indicators fall here.
Discrepancy Investigation
When validation fails:
- Check parameter mapping. TA-Lib uses 0-based indexing for some parameters. Skender uses 1-based.
- Check warmup handling. Different libraries handle the first N values differently.
- Check smoothing assumptions. Some libraries use SMA for initial EMA seed. Others use the first value.
- Check edge cases. NaN handling, zero division, and boundary conditions vary.
Discrepancies are documented in the indicator's markdown file under a "Validation Notes" section. The goal is not to match every library exactly. The goal is to understand why differences exist and document them.