bukosabino/ta

ADX slow, can be vectorized

jaymegordo opened this issue · 1 comments

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?

@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