mirror of
https://github.com/wassname/pandas-ta.git
synced 2026-07-25 13:21:01 +08:00
41 KiB
41 KiB
In [1]:
from importlib.util import find_spec
from numpy import version as numpy_version
from pandas import IndexSlice, concat, read_csv
from pandas import IndexSlice as idx
import pandas_ta as ta
print("Package Versions:")
print(f"Pandas TA v{ta.version}")
has_numba = find_spec("numba") is not None
if has_numba:
from numba import __version__ as numba_version
print(f"Numba v{numba_version}")
if find_spec("talib") is not None:
from talib import __version__ as tal_version
print(f"talib v{tal_version}")
from pandas import read_csv
from pandas import DatetimeIndex as dti
%matplotlib inlinePackage Versions: Pandas TA v0.3.54b0 Numba v0.55.1 talib v0.4.21
In [2]:
_df = ta.df.ta.ticker("SPY", period="5y", timed=True)[+] yf | SPY(1260, 7): 3214.8837 ms (3.2149 s)
In [3]:
df = _df.copy()
df.shapeOut [3]:
(1260, 7)
In [4]:
if has_numba:
ta.speed_test(df.iloc[-150:], talib=False)============================================================
Slowest Indicators
Observations: 150
============================================================
ms secs
Indicator
alligator 1545.3249 1.54532
atrts 397.8743 0.39787
reflex 196.2966 0.19630
trendflex 162.9574 0.16296
td_seq 113.5860 0.11359
... ... ...
mom 0.1823 0.00018
tsignals 0.0015 0.00000
short_run 0.0018 0.00000
long_run 0.0012 0.00000
xsignals 0.0016 0.00000
[146 rows x 2 columns]
============================================================
Time Stats:
ms secs
min 0.001200 0.000000
50% 1.167250 0.001170
mean 19.846779 0.019847
max 1545.324900 1.545320
total 2897.629700 2.897610
============================================================
In [5]:
pta_speedsdf, pta_statsdf = ta.speed_test(df, top=10, talib=False, stats=True, gradient=True, verbose=True)[+] aberration: 1.1934 ms (0.0012 s)
[+] accbands: 1.3275 ms (0.0013 s)
[+] ad: 0.9927 ms (0.0010 s)
[+] adosc: 2.0405 ms (0.0020 s)
[+] adx: 3.3097 ms (0.0033 s)
[+] alligator: 220.9520 ms (0.2210 s)
[+] alma: 0.6661 ms (0.0007 s)
[+] amat: 3.1515 ms (0.0032 s)
[+] ao: 0.5532 ms (0.0006 s)
[+] aobv: 5.7468 ms (0.0057 s)
[+] apo: 0.8981 ms (0.0009 s)
[+] aroon: 7.2886 ms (0.0073 s)
[+] atr: 1.6734 ms (0.0017 s)
[+] atrts: 2.1999 ms (0.0022 s)
[+] bbands: 1.6733 ms (0.0017 s)
[+] bias: 0.6645 ms (0.0007 s)
[+] bop: 0.8861 ms (0.0009 s)
[+] brar: 4.2863 ms (0.0043 s)
[+] cci: 15.9824 ms (0.0160 s)
[+] cdl_pattern: 10.7079 ms (0.0107 s)
[+] cdl_z: 1.7786 ms (0.0018 s)
[+] cfo: 0.4038 ms (0.0004 s)
[+] cg: 5.6990 ms (0.0057 s)
[+] chop: 1.3866 ms (0.0014 s)
[+] cksp: 1.7014 ms (0.0017 s)
[+] cmf: 1.2351 ms (0.0012 s)
[+] cmo: 2.4472 ms (0.0024 s)
[+] coppock: 0.3521 ms (0.0004 s)
[+] cti: 0.1978 ms (0.0002 s)
[+] cube: 0.5798 ms (0.0006 s)
[+] decay: 0.7265 ms (0.0007 s)
[+] decreasing: 0.3314 ms (0.0003 s)
[+] dema: 1.0735 ms (0.0011 s)
[+] dm: 2.2631 ms (0.0023 s)
[+] donchian: 1.0483 ms (0.0010 s)
[+] dpo: 0.5014 ms (0.0005 s)
[+] ebsw: 40.3295 ms (0.0403 s)
[+] efi: 0.4365 ms (0.0004 s)
[+] ema: 0.4680 ms (0.0005 s)
[+] entropy: 0.8692 ms (0.0009 s)
[+] eom: 1.0560 ms (0.0011 s)
[+] er: 0.5839 ms (0.0006 s)
[+] eri: 0.7530 ms (0.0008 s)
[+] fisher: 10.0730 ms (0.0101 s)
[+] fwma: 2.5933 ms (0.0026 s)
[+] ha: 78.9096 ms (0.0789 s)
[+] hilo: 84.2305 ms (0.0842 s)
[+] hl2: 0.2878 ms (0.0003 s)
[+] hlc3: 0.3543 ms (0.0004 s)
[+] hma: 0.4175 ms (0.0004 s)
[+] hwc: 8.7230 ms (0.0087 s)
[+] hwma: 6.6251 ms (0.0066 s)
[+] ifisher: 0.6008 ms (0.0006 s)
[+] increasing: 0.3443 ms (0.0003 s)
[+] inertia: 4.5348 ms (0.0045 s)
[+] jma: 28.5384 ms (0.0285 s)
[+] kama: 16.0007 ms (0.0160 s)
[+] kc: 0.9843 ms (0.0010 s)
[+] kdj: 1.7305 ms (0.0017 s)
[+] kst: 1.9293 ms (0.0019 s)
[+] kurtosis: 0.3692 ms (0.0004 s)
[+] kvo: 3.7142 ms (0.0037 s)
[+] linreg: 13.2551 ms (0.0133 s)
[+] log_return: 0.2034 ms (0.0002 s)
[+] long_run: 0.0013 ms (0.0000 s)
[+] macd: 2.8142 ms (0.0028 s)
[+] mad: 14.8339 ms (0.0148 s)
[+] massi: 1.3622 ms (0.0014 s)
[+] mcgd: 2.3288 ms (0.0023 s)
[+] median: 0.7961 ms (0.0008 s)
[+] mfi: 4.2371 ms (0.0042 s)
[+] midpoint: 0.6487 ms (0.0006 s)
[+] midprice: 0.7317 ms (0.0007 s)
[+] mom: 0.1998 ms (0.0002 s)
[+] natr: 1.9175 ms (0.0019 s)
[+] nvi: 3.1174 ms (0.0031 s)
[+] obv: 2.3015 ms (0.0023 s)
[+] ohlc4: 0.4677 ms (0.0005 s)
[+] pdist: 1.2363 ms (0.0012 s)
[+] percent_return: 0.1922 ms (0.0002 s)
[+] pgo: 0.6081 ms (0.0006 s)
[+] ppo: 1.7576 ms (0.0018 s)
[+] psar: 111.5600 ms (0.1116 s)
[+] psl: 1.8368 ms (0.0018 s)
[+] pvi: 3.0967 ms (0.0031 s)
[+] pvo: 0.7764 ms (0.0008 s)
[+] pvol: 0.3023 ms (0.0003 s)
[+] pvr: 1.3837 ms (0.0014 s)
[+] pvt: 0.4049 ms (0.0004 s)
[+] pwma: 2.3160 ms (0.0023 s)
[+] qqe: 203.7224 ms (0.2037 s)
[+] qstick: 0.9084 ms (0.0009 s)
[+] quantile: 0.7640 ms (0.0008 s)
[+] reflex: 0.2181 ms (0.0002 s)
[+] remap: 0.1712 ms (0.0002 s)
[+] rma: 0.3508 ms (0.0004 s)
[+] roc: 0.4792 ms (0.0005 s)
[+] rsi: 2.7735 ms (0.0028 s)
[+] rsx: 10.2466 ms (0.0102 s)
[+] rvgi: 7.7346 ms (0.0077 s)
[+] rvi: 4.4438 ms (0.0044 s)
[+] short_run: 0.0015 ms (0.0000 s)
[+] sinwma: 10.7341 ms (0.0107 s)
[+] skew: 0.2976 ms (0.0003 s)
[+] slope: 0.2550 ms (0.0003 s)
[+] sma: 0.3979 ms (0.0004 s)
[+] smi: 1.1831 ms (0.0012 s)
[+] smma: 73.9506 ms (0.0740 s)
[+] squeeze: 3.5436 ms (0.0035 s)
[+] squeeze_pro: 5.0888 ms (0.0051 s)
[+] ssf: 0.1950 ms (0.0002 s)
[+] ssf3: 0.1759 ms (0.0002 s)
[+] stc: 25.0177 ms (0.0250 s)
[+] stdev: 0.4016 ms (0.0004 s)
[+] stoch: 2.1441 ms (0.0021 s)
[+] stochf: 1.9049 ms (0.0019 s)
[+] stochrsi: 1.4435 ms (0.0014 s)
[+] supertrend: 54.9402 ms (0.0549 s)
[+] swma: 2.4172 ms (0.0024 s)
[+] t3: 2.8430 ms (0.0028 s)
[+] td_seq: 999.4675 ms (0.9995 s)
[+] tema: 2.0117 ms (0.0020 s)
[+] thermo: 1.8119 ms (0.0018 s)
[+] tos_stdevall: 3.6279 ms (0.0036 s)
[+] trendflex: 0.2490 ms (0.0002 s)
[+] trima: 0.7651 ms (0.0008 s)
[+] trix: 2.3213 ms (0.0023 s)
[+] true_range: 1.5085 ms (0.0015 s)
[+] tsi: 2.3977 ms (0.0024 s)
[+] tsignals: 0.0017 ms (0.0000 s)
[+] ttm_trend: 1.8140 ms (0.0018 s)
[+] ui: 0.8805 ms (0.0009 s)
[+] uo: 3.1802 ms (0.0032 s)
[+] variance: 0.4477 ms (0.0004 s)
[+] vhf: 1.6950 ms (0.0017 s)
[+] vidya: 55.9338 ms (0.0559 s)
[+] vortex: 1.9768 ms (0.0020 s)
[+] vwap: 2.1248 ms (0.0021 s)
[+] vwma: 0.4802 ms (0.0005 s)
[+] wb_tsv: 4.8831 ms (0.0049 s)
[+] wcp: 0.4161 ms (0.0004 s)
[+] willr: 1.0852 ms (0.0011 s)
[+] wma: 11.8522 ms (0.0119 s)
[+] xsignals: 0.0019 ms (0.0000 s)
[+] zlma: 0.8534 ms (0.0009 s)
[+] zscore: 1.1000 ms (0.0011 s)
============================================================
Slowest 10 Indicators [146]
Observations: 1260
============================================================
ms secs
Indicator
td_seq 999.4675 0.99947
alligator 220.9520 0.22095
qqe 203.7224 0.20372
psar 111.5600 0.11156
hilo 84.2305 0.08423
ha 78.9096 0.07891
smma 73.9506 0.07395
vidya 55.9338 0.05593
supertrend 54.9402 0.05494
ebsw 40.3295 0.04033
============================================================
Time Stats:
ms secs
min 0.001300 0.000000
50% 1.476000 0.001475
mean 15.751361 0.015751
max 999.467500 0.999470
total 2299.698700 2.299680
============================================================
In [6]:
pta_speedsdfOut [6]:
| ms | secs | |
|---|---|---|
| Indicator | ||
| td_seq | 999.467500 | 0.999470 |
| alligator | 220.952000 | 0.220950 |
| qqe | 203.722400 | 0.203720 |
| psar | 111.560000 | 0.111560 |
| hilo | 84.230500 | 0.084230 |
| ha | 78.909600 | 0.078910 |
| smma | 73.950600 | 0.073950 |
| vidya | 55.933800 | 0.055930 |
| supertrend | 54.940200 | 0.054940 |
| ebsw | 40.329500 | 0.040330 |
In [7]:
pta_statsdfOut [7]:
| ms | secs | |
|---|---|---|
| min | 0.001300 | 0.000000 |
| 50% | 1.476000 | 0.001475 |
| mean | 15.751361 | 0.015751 |
| max | 999.467500 | 0.999470 |
| total | 2299.698700 | 2.299680 |
In [ ]:
In [8]:
tal_speedsdf, tal_statsdf = ta.speed_test(df, top=10, talib=True, stats=True, gradient=True, verbose=True)[+] aberration: 1.3793 ms (0.0014 s)
[+] accbands: 1.4010 ms (0.0014 s)
[+] ad: 0.5917 ms (0.0006 s)
[+] adosc: 0.5685 ms (0.0006 s)
[+] adx: 4.4657 ms (0.0045 s)
[+] alligator: 228.3049 ms (0.2283 s)
[+] alma: 0.5764 ms (0.0006 s)
[+] amat: 2.2803 ms (0.0023 s)
[+] ao: 0.5338 ms (0.0005 s)
[+] aobv: 2.8592 ms (0.0029 s)
[+] apo: 0.2774 ms (0.0003 s)
[+] aroon: 0.7200 ms (0.0007 s)
[+] atr: 0.4331 ms (0.0004 s)
[+] atrts: 0.6452 ms (0.0006 s)
[+] bbands: 1.1492 ms (0.0011 s)
[+] bias: 0.4188 ms (0.0004 s)
[+] bop: 0.5234 ms (0.0005 s)
[+] brar: 5.4278 ms (0.0054 s)
[+] cci: 0.4665 ms (0.0005 s)
[+] cdl_pattern: 11.3982 ms (0.0114 s)
[+] cdl_z: 1.8717 ms (0.0019 s)
[+] cfo: 0.4020 ms (0.0004 s)
[+] cg: 5.2331 ms (0.0052 s)
[+] chop: 1.3737 ms (0.0014 s)
[+] cksp: 1.6990 ms (0.0017 s)
[+] cmf: 1.3847 ms (0.0014 s)
[+] cmo: 0.2127 ms (0.0002 s)
[+] coppock: 0.3416 ms (0.0003 s)
[+] cti: 0.1917 ms (0.0002 s)
[+] cube: 0.6841 ms (0.0007 s)
[+] decay: 0.9472 ms (0.0009 s)
[+] decreasing: 0.3457 ms (0.0003 s)
[+] dema: 0.1865 ms (0.0002 s)
[+] dm: 0.5415 ms (0.0005 s)
[+] donchian: 1.0367 ms (0.0010 s)
[+] dpo: 0.4708 ms (0.0005 s)
[+] ebsw: 39.8448 ms (0.0398 s)
[+] efi: 0.4461 ms (0.0004 s)
[+] ema: 0.1732 ms (0.0002 s)
[+] entropy: 0.8852 ms (0.0009 s)
[+] eom: 1.0705 ms (0.0011 s)
[+] er: 0.6456 ms (0.0006 s)
[+] eri: 0.7156 ms (0.0007 s)
[+] fisher: 9.8860 ms (0.0099 s)
[+] fwma: 2.8592 ms (0.0029 s)
[+] ha: 78.0263 ms (0.0780 s)
[+] hilo: 85.0740 ms (0.0851 s)
[+] hl2: 0.5325 ms (0.0005 s)
[+] hlc3: 0.3987 ms (0.0004 s)
[+] hma: 0.4288 ms (0.0004 s)
[+] hwc: 9.6443 ms (0.0096 s)
[+] hwma: 7.2366 ms (0.0072 s)
[+] ifisher: 0.8933 ms (0.0009 s)
[+] increasing: 0.4210 ms (0.0004 s)
[+] inertia: 5.5727 ms (0.0056 s)
[+] jma: 28.8803 ms (0.0289 s)
[+] kama: 16.1582 ms (0.0162 s)
[+] kc: 1.0144 ms (0.0010 s)
[+] kdj: 1.8746 ms (0.0019 s)
[+] kst: 1.9180 ms (0.0019 s)
[+] kurtosis: 0.3783 ms (0.0004 s)
[+] kvo: 3.6907 ms (0.0037 s)
[+] linreg: 0.1978 ms (0.0002 s)
[+] log_return: 0.1905 ms (0.0002 s)
[+] long_run: 0.0010 ms (0.0000 s)
[+] macd: 0.4756 ms (0.0005 s)
[+] mad: 14.7116 ms (0.0147 s)
[+] massi: 0.7483 ms (0.0007 s)
[+] mcgd: 2.3136 ms (0.0023 s)
[+] median: 0.7458 ms (0.0007 s)
[+] mfi: 0.4803 ms (0.0005 s)
[+] midpoint: 0.1726 ms (0.0002 s)
[+] midprice: 0.2598 ms (0.0003 s)
[+] mom: 0.1576 ms (0.0002 s)
[+] natr: 0.3524 ms (0.0004 s)
[+] nvi: 3.0145 ms (0.0030 s)
[+] obv: 0.2855 ms (0.0003 s)
[+] ohlc4: 0.4319 ms (0.0004 s)
[+] pdist: 1.2352 ms (0.0012 s)
[+] percent_return: 0.1985 ms (0.0002 s)
[+] pgo: 0.6131 ms (0.0006 s)
[+] ppo: 0.5387 ms (0.0005 s)
[+] psar: 109.9897 ms (0.1100 s)
[+] psl: 1.8392 ms (0.0018 s)
[+] pvi: 2.9197 ms (0.0029 s)
[+] pvo: 0.7821 ms (0.0008 s)
[+] pvol: 0.2993 ms (0.0003 s)
[+] pvr: 1.3610 ms (0.0014 s)
[+] pvt: 0.4026 ms (0.0004 s)
[+] pwma: 2.5216 ms (0.0025 s)
[+] qqe: 200.0846 ms (0.2001 s)
[+] qstick: 0.6347 ms (0.0006 s)
[+] quantile: 0.8188 ms (0.0008 s)
[+] reflex: 0.2335 ms (0.0002 s)
[+] remap: 0.1762 ms (0.0002 s)
[+] rma: 0.3200 ms (0.0003 s)
[+] roc: 0.1771 ms (0.0002 s)
[+] rsi: 0.1747 ms (0.0002 s)
[+] rsx: 10.2025 ms (0.0102 s)
[+] rvgi: 7.4596 ms (0.0075 s)
[+] rvi: 4.7372 ms (0.0047 s)
[+] short_run: 0.0015 ms (0.0000 s)
[+] sinwma: 11.0507 ms (0.0111 s)
[+] skew: 0.4837 ms (0.0005 s)
[+] slope: 0.2922 ms (0.0003 s)
[+] sma: 0.1789 ms (0.0002 s)
[+] smi: 1.2504 ms (0.0013 s)
[+] smma: 72.6012 ms (0.0726 s)
[+] squeeze: 3.1763 ms (0.0032 s)
[+] squeeze_pro: 4.9525 ms (0.0050 s)
[+] ssf: 0.1910 ms (0.0002 s)
[+] ssf3: 0.1714 ms (0.0002 s)
[+] stc: 24.9705 ms (0.0250 s)
[+] stdev: 0.1919 ms (0.0002 s)
[+] stoch: 0.6312 ms (0.0006 s)
[+] stochf: 0.5892 ms (0.0006 s)
[+] stochrsi: 1.3907 ms (0.0014 s)
[+] supertrend: 54.8929 ms (0.0549 s)
[+] swma: 2.4607 ms (0.0025 s)
[+] t3: 0.1944 ms (0.0002 s)
[+] td_seq: 927.9966 ms (0.9280 s)
[+] tema: 0.2589 ms (0.0003 s)
[+] thermo: 1.7630 ms (0.0018 s)
[+] tos_stdevall: 3.3983 ms (0.0034 s)
[+] trendflex: 0.2196 ms (0.0002 s)
[+] trima: 0.1792 ms (0.0002 s)
[+] trix: 0.9243 ms (0.0009 s)
[+] true_range: 0.3720 ms (0.0004 s)
[+] tsi: 0.8120 ms (0.0008 s)
[+] tsignals: 0.0012 ms (0.0000 s)
[+] ttm_trend: 1.8103 ms (0.0018 s)
[+] ui: 0.9170 ms (0.0009 s)
[+] uo: 0.4060 ms (0.0004 s)
[+] variance: 0.1671 ms (0.0002 s)
[+] vhf: 1.2351 ms (0.0012 s)
[+] vidya: 50.3791 ms (0.0504 s)
[+] vortex: 1.7108 ms (0.0017 s)
[+] vwap: 2.0017 ms (0.0020 s)
[+] vwma: 0.4636 ms (0.0005 s)
[+] wb_tsv: 4.2580 ms (0.0043 s)
[+] wcp: 0.3908 ms (0.0004 s)
[+] willr: 0.3693 ms (0.0004 s)
[+] wma: 0.1618 ms (0.0002 s)
[+] xsignals: 0.0017 ms (0.0000 s)
[+] zlma: 0.3481 ms (0.0003 s)
[+] zscore: 0.3853 ms (0.0004 s)
============================================================
Slowest 10 Indicators [146]
Observations[talib]: 1260
============================================================
ms secs
Indicator
td_seq 927.9966 0.92800
alligator 228.3049 0.22830
qqe 200.0846 0.20008
psar 109.9897 0.10999
hilo 85.0740 0.08507
ha 78.0263 0.07803
smma 72.6012 0.07260
supertrend 54.8929 0.05489
vidya 50.3791 0.05038
ebsw 39.8448 0.03984
============================================================
Time Stats:
ms secs
min 0.001000 0.000000
50% 0.699850 0.000700
mean 14.608716 0.014609
max 927.996600 0.928000
total 2132.872500 2.132850
============================================================
In [9]:
tal_speedsdfOut [9]:
| ms | secs | |
|---|---|---|
| Indicator | ||
| td_seq | 927.996600 | 0.928000 |
| alligator | 228.304900 | 0.228300 |
| qqe | 200.084600 | 0.200080 |
| psar | 109.989700 | 0.109990 |
| hilo | 85.074000 | 0.085070 |
| ha | 78.026300 | 0.078030 |
| smma | 72.601200 | 0.072600 |
| supertrend | 54.892900 | 0.054890 |
| vidya | 50.379100 | 0.050380 |
| ebsw | 39.844800 | 0.039840 |
In [10]:
tal_statsdfOut [10]:
| ms | secs | |
|---|---|---|
| min | 0.001000 | 0.000000 |
| 50% | 0.699850 | 0.000700 |
| mean | 14.608716 | 0.014609 |
| max | 927.996600 | 0.928000 |
| total | 2132.872500 | 2.132850 |
In [11]:
print(df.shape)
compdf = concat([tal_statsdf, pta_statsdf], keys=["TA Lib", "Pandas TA"], axis=1).T
compdfOut [11]:
(1260, 7)
| min | 50% | mean | max | total | ||
|---|---|---|---|---|---|---|
| TA Lib | ms | 0.0010 | 0.699850 | 14.608716 | 927.99660 | 2132.87250 |
| secs | 0.0000 | 0.000700 | 0.014609 | 0.92800 | 2.13285 | |
| Pandas TA | ms | 0.0013 | 1.476000 | 15.751361 | 999.46750 | 2299.69870 |
| secs | 0.0000 | 0.001475 | 0.015751 | 0.99947 | 2.29968 |
In [12]:
diffdf = (tal_statsdf - pta_statsdf).abs().T
diffdf.columns.name = "Differences"
diffdfOut [12]:
| Differences | min | 50% | mean | max | total |
|---|---|---|---|---|---|
| ms | 0.0003 | 0.776150 | 1.142645 | 71.47090 | 166.82620 |
| secs | 0.0000 | 0.000775 | 0.001143 | 0.07147 | 0.16683 |
In [ ]: