Weighted Harrell-Davis Quantile Estimator with Absolute Deviation Fences.
The Following indicator/code IS NOT intended to be a formal investment advice or recommendation by the author, nor should be construed as such. Users will be fully responsible by their use regarding their own trading vehicles/assets.
The following indicator was made for NON LUCRATIVE ACTIVITIES and must remain as is, following TradingView's regulations. Use of indicator and their code are published for work and knowledge sharing. All access granted over it, their use, copy or re-use should mention authorship(s) and origin(s).
THE INCLUDED FUNCTION MUST BE CONSIDERED FOR TESTING. The models included in the indicator have been taken from open sources on the web and some of them has been modified by the author, problems could occur at diverse data sceneries, compiler version, or any other externality.
Weighted Quantiles or <<Percentile Ranking>> are quite difficult to find on must systems, also it's non-weighted approach are rarely used to estimate the location parameter of price distribution WICH IS NOT NORMAL, all this in favour of it's non-robust counterpart, the Arithmetic rolling Mean or <<Moving Average>> and it's weighted variants like the WMA, VWAP, etc.
Also, a big drawback from this is that must statistics derived from Normal-Distribution parameter location (the Mean) definitely will not fit for an efficient, nor robust estimation for price distributions, so their moments like the standard deviation, kurtosis, skewness, etc. will not be the better tools to build derived algorithms or technical indicators among price/volume.
In an effort searching better statistical tools for price distributions, I found the excellent work of Andrey Akinshin that took me to port some of their Math research contributions for the compute benchmarking field, and bring it here at the TradingView ecosystem to take a shot at the price distribution crazy fields. For a better detail of what the weighted Harrell-Davis Quantile Estimator can do, who better than drink directly from the source at References:
- Weighted Quantile Estimators.
- DoubleMAD outlier detector based on the Harrell-Davis quantile estimator.
- Unbiased median absolute deviation based on the Harrell-Davis quantile estimator.
- Quantile confidence intervals for weighted samples.
This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International Copyright (c) 2021 (CC BY-NC-SA 4.0)
Copyright's & Mentions:
- The Gamma Functions & Beta Probability Density Functions C# implementations by the Math.NET Numerics, part of the Math.NET Project.
- The Regularized Incomplete (Left) Beta Function C# implementation by the SAMTools, htslib project.
- The Weighted Harrell-Davis Quantile estimator; C# & R implementations by Andrey Akinshin.
- External PineScript code, methods, support & consultancy by @PineCoders staff with special mention for:
+ "ma sorter ('sort by array' example)- JD" by @Duyck.
+ Porting, mods, compilation and debugging for this script by @XeL_Arjona for the TradingView's @PineCoders community.
- Replaced full betaCDF Harrell-Davis QE algorithm 'function_wHDquantile()' with a custom-trimmed betaCDF version 'function_twHDquantile()' for faster calculation and more robust capacity without loosing it's efficiency..
- Added betaPDF functions as needed dependencies for replaced 'function_twHDquantile()' function.
- Replaced full betaCDF Harrell-Davis Quantile Absolute Deviation with the custom-trimmed version 'function_twHDquantileAbsDev()' for consistency with new trimmed HD Quantile Estimator, assertions added for correct (volume) weights in deviation algorithm calculations, speed optimization added making use of TradingView's internal array.median() function when sampleWeights declared to ones (not or equal weighting).
- Code clean-ups, comment's, tooltips, and styling corrections.
- For the function_twHDquantile(), the effective sample size from the sum of all weights normalized by the maximum weight has been replaced with the Kish method, as It was changed at source code from where this port was sourced and referenced on the author's blog entry: -Using Kish's effective sample size with weighted quantiles-.
- Functions, procedures and methods was organized in a much better hierarchy approach.
- Script code was cleaned for better visualization and understanding.
- More typo fixes. XD