bukosabino / ta

Technical Analysis Library using Pandas and Numpy
https://technical-analysis-library-in-python.readthedocs.io/en/latest/
MIT License
4.26k stars 874 forks source link

ADX slow, can be vectorized #286

Open jaymegordo opened 2 years ago

jaymegordo commented 2 years ago

I notice the ADX indicator is very slow (~1s to calculate for a df with ~200k rows), and I'm noticing the implementation uses several for loops.

I'm not exactly sure how the ADX calculation works, but in pandas_ta for example, they have a vectorized implementation which is ~10x faster. Included the TA-Lib c implementation just for comparison:

Screen Shot 2022-03-10 at 11 58 31 AM

Seems like it would be easy to just copy their implementation and give attribution?

Groni3000 commented 10 months ago

@jaymegordo Don't know talib implementation, but about pandas_ta... They use different smoothing method: it is the exponentially weighted moving average with alpha = 1 / window, adjusted version.

ta atr using another smoothing method, that cannot be vectorized, though it can be faster (~6.5 times), it requires little changes. You can find better explanation here: #326