mirror of
https://github.com/wassname/pandas-ta.git
synced 2026-07-23 13:00:50 +08:00
40 KiB
40 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): 3134.9958 ms (3.1350 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 1496.8930 1.49689
atrts 415.8880 0.41589
reflex 192.3144 0.19231
trendflex 159.5207 0.15952
td_seq 109.6769 0.10968
... ... ...
cti 0.1705 0.00017
tsignals 0.0013 0.00000
short_run 0.0014 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.119900 0.001120
mean 19.449172 0.019449
max 1496.893000 1.496890
total 2839.579100 2.839580
============================================================
In [5]:
pta_speedsdf, pta_statsdf = ta.speed_test(df, top=10, talib=False, stats=True, gradient=True, verbose=True)[+] aberration: 1.0925 ms (0.0011 s)
[+] accbands: 1.2377 ms (0.0012 s)
[+] ad: 1.1768 ms (0.0012 s)
[+] adosc: 2.3483 ms (0.0023 s)
[+] adx: 3.3845 ms (0.0034 s)
[+] alligator: 219.4132 ms (0.2194 s)
[+] alma: 0.5391 ms (0.0005 s)
[+] amat: 3.1778 ms (0.0032 s)
[+] ao: 0.5460 ms (0.0005 s)
[+] aobv: 5.7913 ms (0.0058 s)
[+] apo: 1.0890 ms (0.0011 s)
[+] aroon: 8.9856 ms (0.0090 s)
[+] atr: 1.8194 ms (0.0018 s)
[+] atrts: 2.3529 ms (0.0024 s)
[+] bbands: 1.5946 ms (0.0016 s)
[+] bias: 0.6733 ms (0.0007 s)
[+] bop: 0.8715 ms (0.0009 s)
[+] brar: 4.6938 ms (0.0047 s)
[+] cci: 15.6281 ms (0.0156 s)
[+] cdl_pattern: 10.3017 ms (0.0103 s)
[+] cdl_z: 1.7850 ms (0.0018 s)
[+] cfo: 0.3909 ms (0.0004 s)
[+] cg: 5.2792 ms (0.0053 s)
[+] chop: 1.5169 ms (0.0015 s)
[+] cksp: 1.8153 ms (0.0018 s)
[+] cmf: 1.2263 ms (0.0012 s)
[+] cmo: 2.2767 ms (0.0023 s)
[+] coppock: 0.3589 ms (0.0004 s)
[+] cti: 0.1935 ms (0.0002 s)
[+] cube: 0.5720 ms (0.0006 s)
[+] decay: 0.8061 ms (0.0008 s)
[+] decreasing: 0.3315 ms (0.0003 s)
[+] dema: 1.1394 ms (0.0011 s)
[+] dm: 2.2477 ms (0.0022 s)
[+] donchian: 1.0922 ms (0.0011 s)
[+] dpo: 0.4757 ms (0.0005 s)
[+] ebsw: 40.1932 ms (0.0402 s)
[+] efi: 0.4309 ms (0.0004 s)
[+] ema: 0.4663 ms (0.0005 s)
[+] entropy: 0.8890 ms (0.0009 s)
[+] eom: 1.0685 ms (0.0011 s)
[+] er: 0.7039 ms (0.0007 s)
[+] eri: 0.7141 ms (0.0007 s)
[+] fisher: 9.9928 ms (0.0100 s)
[+] fwma: 2.5179 ms (0.0025 s)
[+] ha: 77.6575 ms (0.0777 s)
[+] hilo: 84.2990 ms (0.0843 s)
[+] hl2: 0.3635 ms (0.0004 s)
[+] hlc3: 0.3576 ms (0.0004 s)
[+] hma: 0.4158 ms (0.0004 s)
[+] hwc: 8.5273 ms (0.0085 s)
[+] hwma: 6.4855 ms (0.0065 s)
[+] ifisher: 0.6070 ms (0.0006 s)
[+] increasing: 0.3525 ms (0.0004 s)
[+] inertia: 4.2218 ms (0.0042 s)
[+] jma: 28.2376 ms (0.0282 s)
[+] kama: 15.8834 ms (0.0159 s)
[+] kc: 0.9397 ms (0.0009 s)
[+] kdj: 1.7454 ms (0.0017 s)
[+] kst: 1.4877 ms (0.0015 s)
[+] kurtosis: 0.4252 ms (0.0004 s)
[+] kvo: 3.5205 ms (0.0035 s)
[+] linreg: 13.0294 ms (0.0130 s)
[+] log_return: 0.2041 ms (0.0002 s)
[+] long_run: 0.0011 ms (0.0000 s)
[+] macd: 2.7193 ms (0.0027 s)
[+] mad: 14.5471 ms (0.0145 s)
[+] massi: 1.3195 ms (0.0013 s)
[+] mcgd: 2.3247 ms (0.0023 s)
[+] median: 0.7084 ms (0.0007 s)
[+] mfi: 4.1935 ms (0.0042 s)
[+] midpoint: 0.6485 ms (0.0006 s)
[+] midprice: 0.6756 ms (0.0007 s)
[+] mom: 0.2173 ms (0.0002 s)
[+] natr: 1.8147 ms (0.0018 s)
[+] nvi: 2.7327 ms (0.0027 s)
[+] obv: 2.1172 ms (0.0021 s)
[+] ohlc4: 0.4611 ms (0.0005 s)
[+] pdist: 1.2092 ms (0.0012 s)
[+] percent_return: 0.1870 ms (0.0002 s)
[+] pgo: 0.6019 ms (0.0006 s)
[+] ppo: 1.6355 ms (0.0016 s)
[+] psar: 108.8582 ms (0.1089 s)
[+] psl: 1.7168 ms (0.0017 s)
[+] pvi: 2.7434 ms (0.0027 s)
[+] pvo: 0.8043 ms (0.0008 s)
[+] pvol: 0.2969 ms (0.0003 s)
[+] pvr: 1.3597 ms (0.0014 s)
[+] pvt: 0.3973 ms (0.0004 s)
[+] pwma: 2.2865 ms (0.0023 s)
[+] qqe: 199.6916 ms (0.1997 s)
[+] qstick: 0.7852 ms (0.0008 s)
[+] quantile: 0.7704 ms (0.0008 s)
[+] reflex: 0.2441 ms (0.0002 s)
[+] remap: 0.1834 ms (0.0002 s)
[+] rma: 0.3475 ms (0.0003 s)
[+] roc: 0.4204 ms (0.0004 s)
[+] rsi: 2.6160 ms (0.0026 s)
[+] rsx: 10.6464 ms (0.0106 s)
[+] rvgi: 8.3236 ms (0.0083 s)
[+] rvi: 4.9372 ms (0.0049 s)
[+] short_run: 0.0012 ms (0.0000 s)
[+] sinwma: 11.2597 ms (0.0113 s)
[+] skew: 0.6183 ms (0.0006 s)
[+] slope: 0.2954 ms (0.0003 s)
[+] sma: 0.4162 ms (0.0004 s)
[+] smi: 1.2353 ms (0.0012 s)
[+] smma: 72.7620 ms (0.0728 s)
[+] squeeze: 3.2674 ms (0.0033 s)
[+] squeeze_pro: 5.1635 ms (0.0052 s)
[+] ssf: 0.1887 ms (0.0002 s)
[+] ssf3: 0.1724 ms (0.0002 s)
[+] stc: 24.5385 ms (0.0245 s)
[+] stdev: 0.4670 ms (0.0005 s)
[+] stoch: 2.1049 ms (0.0021 s)
[+] stochf: 1.8578 ms (0.0019 s)
[+] stochrsi: 1.3623 ms (0.0014 s)
[+] supertrend: 54.3731 ms (0.0544 s)
[+] swma: 2.3784 ms (0.0024 s)
[+] t3: 2.4433 ms (0.0024 s)
[+] td_seq: 939.3749 ms (0.9394 s)
[+] tema: 2.3474 ms (0.0023 s)
[+] thermo: 1.8748 ms (0.0019 s)
[+] tos_stdevall: 3.7445 ms (0.0037 s)
[+] trendflex: 0.2807 ms (0.0003 s)
[+] trima: 0.7627 ms (0.0008 s)
[+] trix: 2.5868 ms (0.0026 s)
[+] true_range: 2.2454 ms (0.0022 s)
[+] tsi: 3.7692 ms (0.0038 s)
[+] tsignals: 0.0018 ms (0.0000 s)
[+] ttm_trend: 2.1323 ms (0.0021 s)
[+] ui: 1.0357 ms (0.0010 s)
[+] uo: 3.8208 ms (0.0038 s)
[+] variance: 0.4530 ms (0.0005 s)
[+] vhf: 1.3929 ms (0.0014 s)
[+] vidya: 55.6581 ms (0.0557 s)
[+] vortex: 2.2883 ms (0.0023 s)
[+] vwap: 2.8340 ms (0.0028 s)
[+] vwma: 0.6360 ms (0.0006 s)
[+] wb_tsv: 5.5872 ms (0.0056 s)
[+] wcp: 0.5243 ms (0.0005 s)
[+] willr: 1.2556 ms (0.0013 s)
[+] wma: 12.9237 ms (0.0129 s)
[+] xsignals: 0.0019 ms (0.0000 s)
[+] zlma: 1.0086 ms (0.0010 s)
[+] zscore: 1.2827 ms (0.0013 s)
============================================================
Slowest 10 Indicators [146]
Observations: 1260
============================================================
ms secs
Indicator
td_seq 939.3749 0.93937
alligator 219.4132 0.21941
qqe 199.6916 0.19969
psar 108.8582 0.10886
hilo 84.2990 0.08430
ha 77.6575 0.07766
smma 72.7620 0.07276
vidya 55.6581 0.05566
supertrend 54.3731 0.05437
ebsw 40.1932 0.04019
============================================================
Time Stats:
ms secs
min 0.001100 0.000000
50% 1.440300 0.001440
mean 15.302968 0.015303
max 939.374900 0.939370
total 2234.233400 2.234260
============================================================
In [6]:
pta_speedsdfOut [6]:
| ms | secs | |
|---|---|---|
| Indicator | ||
| td_seq | 939.374900 | 0.939370 |
| alligator | 219.413200 | 0.219410 |
| qqe | 199.691600 | 0.199690 |
| psar | 108.858200 | 0.108860 |
| hilo | 84.299000 | 0.084300 |
| ha | 77.657500 | 0.077660 |
| smma | 72.762000 | 0.072760 |
| vidya | 55.658100 | 0.055660 |
| supertrend | 54.373100 | 0.054370 |
| ebsw | 40.193200 | 0.040190 |
In [7]:
pta_statsdfOut [7]:
| ms | secs | |
|---|---|---|
| min | 0.001100 | 0.000000 |
| 50% | 1.440300 | 0.001440 |
| mean | 15.302968 | 0.015303 |
| max | 939.374900 | 0.939370 |
| total | 2234.233400 | 2.234260 |
In [ ]:
In [8]:
tal_speedsdf, tal_statsdf = ta.speed_test(df, top=10, talib=True, stats=True, gradient=True, verbose=True)[+] aberration: 1.4574 ms (0.0015 s)
[+] accbands: 1.5594 ms (0.0016 s)
[+] ad: 0.6050 ms (0.0006 s)
[+] adosc: 0.5090 ms (0.0005 s)
[+] adx: 6.9582 ms (0.0070 s)
[+] alligator: 234.2123 ms (0.2342 s)
[+] alma: 0.5487 ms (0.0005 s)
[+] amat: 2.3552 ms (0.0024 s)
[+] ao: 0.5406 ms (0.0005 s)
[+] aobv: 3.0123 ms (0.0030 s)
[+] apo: 0.2258 ms (0.0002 s)
[+] aroon: 0.6451 ms (0.0006 s)
[+] atr: 0.3848 ms (0.0004 s)
[+] atrts: 0.5595 ms (0.0006 s)
[+] bbands: 0.9761 ms (0.0010 s)
[+] bias: 0.3614 ms (0.0004 s)
[+] bop: 0.5203 ms (0.0005 s)
[+] brar: 5.0789 ms (0.0051 s)
[+] cci: 0.4582 ms (0.0005 s)
[+] cdl_pattern: 12.4430 ms (0.0124 s)
[+] cdl_z: 2.2153 ms (0.0022 s)
[+] cfo: 0.4864 ms (0.0005 s)
[+] cg: 7.3939 ms (0.0074 s)
[+] chop: 1.7344 ms (0.0017 s)
[+] cksp: 1.7417 ms (0.0017 s)
[+] cmf: 1.5916 ms (0.0016 s)
[+] cmo: 0.2477 ms (0.0002 s)
[+] coppock: 0.3745 ms (0.0004 s)
[+] cti: 0.2111 ms (0.0002 s)
[+] cube: 0.8503 ms (0.0009 s)
[+] decay: 0.8619 ms (0.0009 s)
[+] decreasing: 0.3596 ms (0.0004 s)
[+] dema: 0.2110 ms (0.0002 s)
[+] dm: 0.5595 ms (0.0006 s)
[+] donchian: 1.0422 ms (0.0010 s)
[+] dpo: 0.5036 ms (0.0005 s)
[+] ebsw: 42.1200 ms (0.0421 s)
[+] efi: 0.5090 ms (0.0005 s)
[+] ema: 0.1804 ms (0.0002 s)
[+] entropy: 0.8325 ms (0.0008 s)
[+] eom: 1.1210 ms (0.0011 s)
[+] er: 0.6062 ms (0.0006 s)
[+] eri: 0.7919 ms (0.0008 s)
[+] fisher: 10.7730 ms (0.0108 s)
[+] fwma: 4.7763 ms (0.0048 s)
[+] ha: 91.8492 ms (0.0918 s)
[+] hilo: 89.0798 ms (0.0891 s)
[+] hl2: 0.5440 ms (0.0005 s)
[+] hlc3: 0.4229 ms (0.0004 s)
[+] hma: 0.4605 ms (0.0005 s)
[+] hwc: 9.0071 ms (0.0090 s)
[+] hwma: 7.2081 ms (0.0072 s)
[+] ifisher: 0.7474 ms (0.0007 s)
[+] increasing: 0.4005 ms (0.0004 s)
[+] inertia: 5.0944 ms (0.0051 s)
[+] jma: 30.4198 ms (0.0304 s)
[+] kama: 16.8293 ms (0.0168 s)
[+] kc: 1.0569 ms (0.0011 s)
[+] kdj: 1.7952 ms (0.0018 s)
[+] kst: 1.8727 ms (0.0019 s)
[+] kurtosis: 0.3943 ms (0.0004 s)
[+] kvo: 3.8675 ms (0.0039 s)
[+] linreg: 0.2095 ms (0.0002 s)
[+] log_return: 0.3195 ms (0.0003 s)
[+] long_run: 0.0013 ms (0.0000 s)
[+] macd: 0.5531 ms (0.0006 s)
[+] mad: 15.0788 ms (0.0151 s)
[+] massi: 0.7279 ms (0.0007 s)
[+] mcgd: 2.4638 ms (0.0025 s)
[+] median: 0.8215 ms (0.0008 s)
[+] mfi: 0.5097 ms (0.0005 s)
[+] midpoint: 0.1810 ms (0.0002 s)
[+] midprice: 0.2682 ms (0.0003 s)
[+] mom: 0.1870 ms (0.0002 s)
[+] natr: 0.4198 ms (0.0004 s)
[+] nvi: 3.2221 ms (0.0032 s)
[+] obv: 0.3030 ms (0.0003 s)
[+] ohlc4: 0.4550 ms (0.0005 s)
[+] pdist: 1.2511 ms (0.0013 s)
[+] percent_return: 0.1915 ms (0.0002 s)
[+] pgo: 0.6167 ms (0.0006 s)
[+] ppo: 0.5543 ms (0.0006 s)
[+] psar: 112.6814 ms (0.1127 s)
[+] psl: 1.7091 ms (0.0017 s)
[+] pvi: 2.9347 ms (0.0029 s)
[+] pvo: 0.7635 ms (0.0008 s)
[+] pvol: 0.3239 ms (0.0003 s)
[+] pvr: 1.3519 ms (0.0014 s)
[+] pvt: 0.3971 ms (0.0004 s)
[+] pwma: 2.3767 ms (0.0024 s)
[+] qqe: 197.1505 ms (0.1972 s)
[+] qstick: 0.5424 ms (0.0005 s)
[+] quantile: 0.7355 ms (0.0007 s)
[+] reflex: 0.2276 ms (0.0002 s)
[+] remap: 0.1761 ms (0.0002 s)
[+] rma: 0.3241 ms (0.0003 s)
[+] roc: 0.1672 ms (0.0002 s)
[+] rsi: 0.1781 ms (0.0002 s)
[+] rsx: 10.2953 ms (0.0103 s)
[+] rvgi: 8.2884 ms (0.0083 s)
[+] rvi: 4.5673 ms (0.0046 s)
[+] short_run: 0.0015 ms (0.0000 s)
[+] sinwma: 10.9650 ms (0.0110 s)
[+] skew: 0.4569 ms (0.0005 s)
[+] slope: 0.2607 ms (0.0003 s)
[+] sma: 0.1720 ms (0.0002 s)
[+] smi: 1.1787 ms (0.0012 s)
[+] smma: 72.3567 ms (0.0724 s)
[+] squeeze: 3.1259 ms (0.0031 s)
[+] squeeze_pro: 4.9297 ms (0.0049 s)
[+] ssf: 0.1875 ms (0.0002 s)
[+] ssf3: 0.1669 ms (0.0002 s)
[+] stc: 25.7928 ms (0.0258 s)
[+] stdev: 0.2406 ms (0.0002 s)
[+] stoch: 0.6115 ms (0.0006 s)
[+] stochf: 0.5768 ms (0.0006 s)
[+] stochrsi: 1.3957 ms (0.0014 s)
[+] supertrend: 54.8945 ms (0.0549 s)
[+] swma: 2.5675 ms (0.0026 s)
[+] t3: 0.2058 ms (0.0002 s)
[+] td_seq: 920.2317 ms (0.9202 s)
[+] tema: 0.2495 ms (0.0002 s)
[+] thermo: 1.5787 ms (0.0016 s)
[+] tos_stdevall: 3.7933 ms (0.0038 s)
[+] trendflex: 0.2212 ms (0.0002 s)
[+] trima: 0.1798 ms (0.0002 s)
[+] trix: 1.0912 ms (0.0011 s)
[+] true_range: 0.3817 ms (0.0004 s)
[+] tsi: 0.8223 ms (0.0008 s)
[+] tsignals: 0.0015 ms (0.0000 s)
[+] ttm_trend: 1.8579 ms (0.0019 s)
[+] ui: 1.0563 ms (0.0011 s)
[+] uo: 0.4031 ms (0.0004 s)
[+] variance: 0.1758 ms (0.0002 s)
[+] vhf: 1.2903 ms (0.0013 s)
[+] vidya: 50.9213 ms (0.0509 s)
[+] vortex: 1.8401 ms (0.0018 s)
[+] vwap: 2.1093 ms (0.0021 s)
[+] vwma: 0.4780 ms (0.0005 s)
[+] wb_tsv: 4.1540 ms (0.0042 s)
[+] wcp: 0.3857 ms (0.0004 s)
[+] willr: 0.3641 ms (0.0004 s)
[+] wma: 0.1608 ms (0.0002 s)
[+] xsignals: 0.0017 ms (0.0000 s)
[+] zlma: 0.3506 ms (0.0004 s)
[+] zscore: 0.3875 ms (0.0004 s)
============================================================
Slowest 10 Indicators [146]
Observations[talib]: 1260
============================================================
ms secs
Indicator
td_seq 920.2317 0.92023
alligator 234.2123 0.23421
qqe 197.1505 0.19715
psar 112.6814 0.11268
ha 91.8492 0.09185
hilo 89.0798 0.08908
smma 72.3567 0.07236
supertrend 54.8945 0.05489
vidya 50.9213 0.05092
ebsw 42.1200 0.04212
============================================================
Time Stats:
ms secs
min 0.001300 0.000000
50% 0.686500 0.000690
mean 14.826408 0.014827
max 920.231700 0.920230
total 2164.655500 2.164670
============================================================
In [9]:
tal_speedsdfOut [9]:
| ms | secs | |
|---|---|---|
| Indicator | ||
| td_seq | 920.231700 | 0.920230 |
| alligator | 234.212300 | 0.234210 |
| qqe | 197.150500 | 0.197150 |
| psar | 112.681400 | 0.112680 |
| ha | 91.849200 | 0.091850 |
| hilo | 89.079800 | 0.089080 |
| smma | 72.356700 | 0.072360 |
| supertrend | 54.894500 | 0.054890 |
| vidya | 50.921300 | 0.050920 |
| ebsw | 42.120000 | 0.042120 |
In [10]:
tal_statsdfOut [10]:
| ms | secs | |
|---|---|---|
| min | 0.001300 | 0.000000 |
| 50% | 0.686500 | 0.000690 |
| mean | 14.826408 | 0.014827 |
| max | 920.231700 | 0.920230 |
| total | 2164.655500 | 2.164670 |
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.0013 | 0.68650 | 14.826408 | 920.23170 | 2164.65550 |
| secs | 0.0000 | 0.00069 | 0.014827 | 0.92023 | 2.16467 | |
| Pandas TA | ms | 0.0011 | 1.44030 | 15.302968 | 939.37490 | 2234.23340 |
| secs | 0.0000 | 0.00144 | 0.015303 | 0.93937 | 2.23426 |
In [12]:
diffdf = (tal_statsdf - pta_statsdf).abs().T
diffdf.columns.name = "Differences"
diffdfOut [12]:
| Differences | min | 50% | mean | max | total |
|---|---|---|---|---|---|
| ms | 0.0002 | 0.75380 | 0.476561 | 19.14320 | 69.57790 |
| secs | 0.0000 | 0.00075 | 0.000477 | 0.01914 | 0.06959 |
In [ ]: