Files
Miha Kralj 6f0a339c9b fix: resolve build and test errors
- 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"
2026-03-16 12:45:13 -07:00

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.py for:
    • 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):

  1. Reduce remaining numeric mismatches in mapped indicators (alma, bbands, rsi, roc, ema, dema, tema, stddev, variance, zscore, volume oscillators).
  2. Expand/replace generic sweep with indicator-specific adapters where formulas/defaults are known to differ.
  3. 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:

  1. Check parameter mapping. TA-Lib uses 0-based indexing for some parameters. Skender uses 1-based.
  2. Check warmup handling. Different libraries handle the first N values differently.
  3. Check smoothing assumptions. Some libraries use SMA for initial EMA seed. Others use the first value.
  4. 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.