mirror of
https://github.com/wassname/pandas-ta.git
synced 2026-07-20 12:30:43 +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.63b0 Numba v0.55.1 talib v0.4.21
In [2]:
_df = ta.df.ta.ticker("SPY", period="5y", timed=True)[+] yf | SPY(1260, 7): 3702.3428 ms (3.7023 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 1446.0085 1.44601
mama 602.6056 0.60261
atrts 390.2933 0.39029
reflex 168.9724 0.16897
trendflex 159.3148 0.15931
... ... ...
percent_return 0.1807 0.00018
tsignals 0.0013 0.00000
short_run 0.0017 0.00000
xsignals 0.0017 0.00000
long_run 0.0010 0.00000
[147 rows x 2 columns]
============================================================
Time Stats:
ms secs
min 0.001000 0.000000
50% 1.250300 0.001250
mean 22.771308 0.022771
max 1446.008500 1.446010
total 3347.382300 3.347370
============================================================
In [5]:
pta_speedsdf, pta_statsdf = ta.speed_test(df, top=10, talib=False, stats=True, gradient=True, verbose=True)[+] aberration: 1.3337 ms (0.0013 s)
[+] accbands: 1.3222 ms (0.0013 s)
[+] ad: 0.9865 ms (0.0010 s)
[+] adosc: 1.9232 ms (0.0019 s)
[+] adx: 3.9638 ms (0.0040 s)
[+] alligator: 215.7491 ms (0.2157 s)
[+] alma: 0.5415 ms (0.0005 s)
[+] amat: 3.1380 ms (0.0031 s)
[+] ao: 0.5585 ms (0.0006 s)
[+] aobv: 6.0427 ms (0.0060 s)
[+] apo: 1.0208 ms (0.0010 s)
[+] aroon: 8.1660 ms (0.0082 s)
[+] atr: 2.1119 ms (0.0021 s)
[+] atrts: 2.4344 ms (0.0024 s)
[+] bbands: 1.6845 ms (0.0017 s)
[+] bias: 0.7278 ms (0.0007 s)
[+] bop: 0.8991 ms (0.0009 s)
[+] brar: 4.2946 ms (0.0043 s)
[+] cci: 16.3019 ms (0.0163 s)
[+] cdl_pattern: 10.8324 ms (0.0108 s)
[+] cdl_z: 1.7735 ms (0.0018 s)
[+] cfo: 0.3902 ms (0.0004 s)
[+] cg: 9.9616 ms (0.0100 s)
[+] chop: 1.3447 ms (0.0013 s)
[+] cksp: 1.7038 ms (0.0017 s)
[+] cmf: 1.2955 ms (0.0013 s)
[+] cmo: 2.1742 ms (0.0022 s)
[+] coppock: 0.3594 ms (0.0004 s)
[+] cti: 18.3186 ms (0.0183 s)
[+] cube: 0.6013 ms (0.0006 s)
[+] decay: 0.6330 ms (0.0006 s)
[+] decreasing: 0.3255 ms (0.0003 s)
[+] dema: 0.9345 ms (0.0009 s)
[+] dm: 2.2490 ms (0.0022 s)
[+] donchian: 1.0341 ms (0.0010 s)
[+] dpo: 0.4700 ms (0.0005 s)
[+] ebsw: 40.1780 ms (0.0402 s)
[+] efi: 0.4426 ms (0.0004 s)
[+] ema: 0.4624 ms (0.0005 s)
[+] entropy: 0.7721 ms (0.0008 s)
[+] eom: 1.0832 ms (0.0011 s)
[+] er: 0.6801 ms (0.0007 s)
[+] eri: 0.7150 ms (0.0007 s)
[+] fisher: 9.7400 ms (0.0097 s)
[+] fwma: 2.6797 ms (0.0027 s)
[+] ha: 78.9297 ms (0.0789 s)
[+] hilo: 81.5833 ms (0.0816 s)
[+] hl2: 0.3734 ms (0.0004 s)
[+] hlc3: 0.3690 ms (0.0004 s)
[+] hma: 0.4217 ms (0.0004 s)
[+] hwc: 8.6811 ms (0.0087 s)
[+] hwma: 6.2323 ms (0.0062 s)
[+] ifisher: 0.6189 ms (0.0006 s)
[+] increasing: 0.3444 ms (0.0003 s)
[+] inertia: 4.3180 ms (0.0043 s)
[+] jma: 28.4740 ms (0.0285 s)
[+] kama: 15.6890 ms (0.0157 s)
[+] kc: 1.0599 ms (0.0011 s)
[+] kdj: 1.7477 ms (0.0017 s)
[+] kst: 1.9027 ms (0.0019 s)
[+] kurtosis: 0.4531 ms (0.0005 s)
[+] kvo: 3.6029 ms (0.0036 s)
[+] linreg: 12.0623 ms (0.0121 s)
[+] log_return: 0.2076 ms (0.0002 s)
[+] long_run: 0.0012 ms (0.0000 s)
[+] macd: 2.5717 ms (0.0026 s)
[+] mad: 14.4913 ms (0.0145 s)
[+] mama: 0.4360 ms (0.0004 s)
[+] massi: 1.5114 ms (0.0015 s)
[+] mcgd: 2.2937 ms (0.0023 s)
[+] median: 0.7571 ms (0.0008 s)
[+] mfi: 4.3062 ms (0.0043 s)
[+] midpoint: 0.6580 ms (0.0007 s)
[+] midprice: 0.6952 ms (0.0007 s)
[+] mom: 0.2043 ms (0.0002 s)
[+] natr: 2.0364 ms (0.0020 s)
[+] nvi: 2.8325 ms (0.0028 s)
[+] obv: 2.1464 ms (0.0021 s)
[+] ohlc4: 0.4745 ms (0.0005 s)
[+] pdist: 1.4983 ms (0.0015 s)
[+] percent_return: 0.1992 ms (0.0002 s)
[+] pgo: 0.6186 ms (0.0006 s)
[+] ppo: 1.6941 ms (0.0017 s)
[+] psar: 106.6588 ms (0.1067 s)
[+] psl: 1.7701 ms (0.0018 s)
[+] pvi: 2.8673 ms (0.0029 s)
[+] pvo: 0.8039 ms (0.0008 s)
[+] pvol: 0.3080 ms (0.0003 s)
[+] pvr: 2.0909 ms (0.0021 s)
[+] pvt: 0.6685 ms (0.0007 s)
[+] pwma: 2.3221 ms (0.0023 s)
[+] qqe: 194.8575 ms (0.1949 s)
[+] qstick: 0.8804 ms (0.0009 s)
[+] quantile: 0.7678 ms (0.0008 s)
[+] reflex: 0.2310 ms (0.0002 s)
[+] remap: 0.1789 ms (0.0002 s)
[+] rma: 0.3639 ms (0.0004 s)
[+] roc: 0.4538 ms (0.0005 s)
[+] rsi: 2.6416 ms (0.0026 s)
[+] rsx: 9.9792 ms (0.0100 s)
[+] rvgi: 8.6263 ms (0.0086 s)
[+] rvi: 4.4760 ms (0.0045 s)
[+] short_run: 0.0017 ms (0.0000 s)
[+] sinwma: 10.9170 ms (0.0109 s)
[+] skew: 0.3024 ms (0.0003 s)
[+] slope: 0.2518 ms (0.0003 s)
[+] sma: 0.4292 ms (0.0004 s)
[+] smi: 1.4152 ms (0.0014 s)
[+] smma: 70.9126 ms (0.0709 s)
[+] squeeze: 3.5000 ms (0.0035 s)
[+] squeeze_pro: 5.1851 ms (0.0052 s)
[+] ssf: 0.1922 ms (0.0002 s)
[+] ssf3: 0.1733 ms (0.0002 s)
[+] stc: 24.8870 ms (0.0249 s)
[+] stdev: 0.4378 ms (0.0004 s)
[+] stoch: 2.1283 ms (0.0021 s)
[+] stochf: 1.8990 ms (0.0019 s)
[+] stochrsi: 1.4045 ms (0.0014 s)
[+] supertrend: 52.9584 ms (0.0530 s)
[+] swma: 2.2575 ms (0.0023 s)
[+] t3: 2.6848 ms (0.0027 s)
[+] td_seq: 909.3875 ms (0.9094 s)
[+] tema: 1.7357 ms (0.0017 s)
[+] thermo: 1.6015 ms (0.0016 s)
[+] tos_stdevall: 3.3492 ms (0.0033 s)
[+] trendflex: 0.2684 ms (0.0003 s)
[+] trima: 0.7775 ms (0.0008 s)
[+] trix: 2.6012 ms (0.0026 s)
[+] true_range: 1.4700 ms (0.0015 s)
[+] tsi: 2.2230 ms (0.0022 s)
[+] tsignals: 0.0016 ms (0.0000 s)
[+] ttm_trend: 2.0595 ms (0.0021 s)
[+] ui: 0.9723 ms (0.0010 s)
[+] uo: 2.5761 ms (0.0026 s)
[+] variance: 0.3435 ms (0.0003 s)
[+] vhf: 1.1118 ms (0.0011 s)
[+] vidya: 48.7953 ms (0.0488 s)
[+] vortex: 1.6605 ms (0.0017 s)
[+] vwap: 2.0664 ms (0.0021 s)
[+] vwma: 0.5173 ms (0.0005 s)
[+] wb_tsv: 4.2007 ms (0.0042 s)
[+] wcp: 0.3822 ms (0.0004 s)
[+] willr: 0.9955 ms (0.0010 s)
[+] wma: 11.4177 ms (0.0114 s)
[+] xsignals: 0.0016 ms (0.0000 s)
[+] zlma: 0.7412 ms (0.0007 s)
[+] zscore: 1.0717 ms (0.0011 s)
============================================================
Slowest 10 Indicators [147]
Observations: 1260
============================================================
ms secs
Indicator
td_seq 909.3875 0.90939
alligator 215.7491 0.21575
qqe 194.8575 0.19486
psar 106.6588 0.10666
hilo 81.5833 0.08158
ha 78.9297 0.07893
smma 70.9126 0.07091
supertrend 52.9584 0.05296
vidya 48.7953 0.04880
ebsw 40.1780 0.04018
============================================================
Time Stats:
ms secs
min 0.001200 0.000000
50% 1.511400 0.001510
mean 14.939214 0.014939
max 909.387500 0.909390
total 2196.064400 2.196020
============================================================
In [6]:
pta_speedsdfOut [6]:
| ms | secs | |
|---|---|---|
| Indicator | ||
| td_seq | 909.387500 | 0.909390 |
| alligator | 215.749100 | 0.215750 |
| qqe | 194.857500 | 0.194860 |
| psar | 106.658800 | 0.106660 |
| hilo | 81.583300 | 0.081580 |
| ha | 78.929700 | 0.078930 |
| smma | 70.912600 | 0.070910 |
| supertrend | 52.958400 | 0.052960 |
| vidya | 48.795300 | 0.048800 |
| ebsw | 40.178000 | 0.040180 |
In [7]:
pta_statsdfOut [7]:
| ms | secs | |
|---|---|---|
| min | 0.001200 | 0.000000 |
| 50% | 1.511400 | 0.001510 |
| mean | 14.939214 | 0.014939 |
| max | 909.387500 | 0.909390 |
| total | 2196.064400 | 2.196020 |
In [ ]:
In [8]:
tal_speedsdf, tal_statsdf = ta.speed_test(df, top=10, talib=True, stats=True, gradient=True, verbose=True)[+] aberration: 1.5714 ms (0.0016 s)
[+] accbands: 1.6372 ms (0.0016 s)
[+] ad: 0.6500 ms (0.0007 s)
[+] adosc: 0.5646 ms (0.0006 s)
[+] adx: 3.2577 ms (0.0033 s)
[+] alligator: 213.8796 ms (0.2139 s)
[+] alma: 0.5777 ms (0.0006 s)
[+] amat: 2.3146 ms (0.0023 s)
[+] ao: 0.5448 ms (0.0005 s)
[+] aobv: 2.9193 ms (0.0029 s)
[+] apo: 0.2103 ms (0.0002 s)
[+] aroon: 0.6277 ms (0.0006 s)
[+] atr: 0.3873 ms (0.0004 s)
[+] atrts: 0.5611 ms (0.0006 s)
[+] bbands: 0.9401 ms (0.0009 s)
[+] bias: 0.3203 ms (0.0003 s)
[+] bop: 0.4700 ms (0.0005 s)
[+] brar: 4.5255 ms (0.0045 s)
[+] cci: 0.4135 ms (0.0004 s)
[+] cdl_pattern: 11.2905 ms (0.0113 s)
[+] cdl_z: 1.7948 ms (0.0018 s)
[+] cfo: 0.3902 ms (0.0004 s)
[+] cg: 10.0814 ms (0.0101 s)
[+] chop: 1.4501 ms (0.0015 s)
[+] cksp: 1.8192 ms (0.0018 s)
[+] cmf: 1.3106 ms (0.0013 s)
[+] cmo: 0.2059 ms (0.0002 s)
[+] coppock: 0.3370 ms (0.0003 s)
[+] cti: 18.4478 ms (0.0184 s)
[+] cube: 0.6004 ms (0.0006 s)
[+] decay: 0.9305 ms (0.0009 s)
[+] decreasing: 0.3387 ms (0.0003 s)
[+] dema: 0.1930 ms (0.0002 s)
[+] dm: 0.5338 ms (0.0005 s)
[+] donchian: 1.0245 ms (0.0010 s)
[+] dpo: 0.4837 ms (0.0005 s)
[+] ebsw: 40.3337 ms (0.0403 s)
[+] efi: 0.4367 ms (0.0004 s)
[+] ema: 0.1733 ms (0.0002 s)
[+] entropy: 0.7008 ms (0.0007 s)
[+] eom: 1.0460 ms (0.0010 s)
[+] er: 0.5638 ms (0.0006 s)
[+] eri: 0.7054 ms (0.0007 s)
[+] fisher: 9.7551 ms (0.0098 s)
[+] fwma: 2.6089 ms (0.0026 s)
[+] ha: 78.8087 ms (0.0788 s)
[+] hilo: 84.2786 ms (0.0843 s)
[+] hl2: 0.3724 ms (0.0004 s)
[+] hlc3: 0.3856 ms (0.0004 s)
[+] hma: 0.4206 ms (0.0004 s)
[+] hwc: 8.5970 ms (0.0086 s)
[+] hwma: 6.2322 ms (0.0062 s)
[+] ifisher: 0.6622 ms (0.0007 s)
[+] increasing: 0.3526 ms (0.0004 s)
[+] inertia: 4.4732 ms (0.0045 s)
[+] jma: 28.4728 ms (0.0285 s)
[+] kama: 15.3134 ms (0.0153 s)
[+] kc: 1.0568 ms (0.0011 s)
[+] kdj: 1.7053 ms (0.0017 s)
[+] kst: 1.7699 ms (0.0018 s)
[+] kurtosis: 0.3934 ms (0.0004 s)
[+] kvo: 3.5169 ms (0.0035 s)
[+] linreg: 0.1955 ms (0.0002 s)
[+] log_return: 0.1988 ms (0.0002 s)
[+] long_run: 0.0012 ms (0.0000 s)
[+] macd: 0.4699 ms (0.0005 s)
[+] mad: 14.6732 ms (0.0147 s)
[+] mama: 0.4648 ms (0.0005 s)
[+] massi: 0.9333 ms (0.0009 s)
[+] mcgd: 2.3417 ms (0.0023 s)
[+] median: 0.7368 ms (0.0007 s)
[+] mfi: 0.4949 ms (0.0005 s)
[+] midpoint: 0.1737 ms (0.0002 s)
[+] midprice: 0.2649 ms (0.0003 s)
[+] mom: 0.1584 ms (0.0002 s)
[+] natr: 0.3607 ms (0.0004 s)
[+] nvi: 2.7678 ms (0.0028 s)
[+] obv: 0.2945 ms (0.0003 s)
[+] ohlc4: 0.4447 ms (0.0004 s)
[+] pdist: 1.3146 ms (0.0013 s)
[+] percent_return: 0.1849 ms (0.0002 s)
[+] pgo: 0.6000 ms (0.0006 s)
[+] ppo: 0.5498 ms (0.0005 s)
[+] psar: 106.3107 ms (0.1063 s)
[+] psl: 1.6307 ms (0.0016 s)
[+] pvi: 2.8318 ms (0.0028 s)
[+] pvo: 0.7522 ms (0.0008 s)
[+] pvol: 0.3010 ms (0.0003 s)
[+] pvr: 1.3501 ms (0.0014 s)
[+] pvt: 0.4005 ms (0.0004 s)
[+] pwma: 2.3472 ms (0.0023 s)
[+] qqe: 197.3449 ms (0.1973 s)
[+] qstick: 0.6361 ms (0.0006 s)
[+] quantile: 0.7778 ms (0.0008 s)
[+] reflex: 0.2361 ms (0.0002 s)
[+] remap: 0.1772 ms (0.0002 s)
[+] rma: 0.3487 ms (0.0003 s)
[+] roc: 0.1965 ms (0.0002 s)
[+] rsi: 0.1852 ms (0.0002 s)
[+] rsx: 10.1578 ms (0.0102 s)
[+] rvgi: 8.0339 ms (0.0080 s)
[+] rvi: 4.4202 ms (0.0044 s)
[+] short_run: 0.0015 ms (0.0000 s)
[+] sinwma: 10.9848 ms (0.0110 s)
[+] skew: 0.3064 ms (0.0003 s)
[+] slope: 0.2574 ms (0.0003 s)
[+] sma: 0.1800 ms (0.0002 s)
[+] smi: 1.4068 ms (0.0014 s)
[+] smma: 71.0916 ms (0.0711 s)
[+] squeeze: 3.2216 ms (0.0032 s)
[+] squeeze_pro: 5.2283 ms (0.0052 s)
[+] ssf: 0.1951 ms (0.0002 s)
[+] ssf3: 0.1738 ms (0.0002 s)
[+] stc: 24.9169 ms (0.0249 s)
[+] stdev: 0.1830 ms (0.0002 s)
[+] stoch: 0.6043 ms (0.0006 s)
[+] stochf: 0.5851 ms (0.0006 s)
[+] stochrsi: 1.3879 ms (0.0014 s)
[+] supertrend: 52.9733 ms (0.0530 s)
[+] swma: 2.3010 ms (0.0023 s)
[+] t3: 0.1947 ms (0.0002 s)
[+] td_seq: 907.9965 ms (0.9080 s)
[+] tema: 0.2842 ms (0.0003 s)
[+] thermo: 1.7636 ms (0.0018 s)
[+] tos_stdevall: 3.1643 ms (0.0032 s)
[+] trendflex: 0.2186 ms (0.0002 s)
[+] trima: 0.1801 ms (0.0002 s)
[+] trix: 1.1153 ms (0.0011 s)
[+] true_range: 0.4397 ms (0.0004 s)
[+] tsi: 0.9641 ms (0.0010 s)
[+] tsignals: 0.0030 ms (0.0000 s)
[+] ttm_trend: 1.8574 ms (0.0019 s)
[+] ui: 1.0225 ms (0.0010 s)
[+] uo: 0.4687 ms (0.0005 s)
[+] variance: 0.3024 ms (0.0003 s)
[+] vhf: 1.4387 ms (0.0014 s)
[+] vidya: 49.9903 ms (0.0500 s)
[+] vortex: 1.7544 ms (0.0018 s)
[+] vwap: 2.1345 ms (0.0021 s)
[+] vwma: 0.4779 ms (0.0005 s)
[+] wb_tsv: 4.0899 ms (0.0041 s)
[+] wcp: 0.3927 ms (0.0004 s)
[+] willr: 0.3692 ms (0.0004 s)
[+] wma: 0.1639 ms (0.0002 s)
[+] xsignals: 0.0013 ms (0.0000 s)
[+] zlma: 0.4167 ms (0.0004 s)
[+] zscore: 0.3920 ms (0.0004 s)
============================================================
Slowest 10 Indicators [147]
Observations[talib]: 1260
============================================================
ms secs
Indicator
td_seq 907.9965 0.90800
alligator 213.8796 0.21388
qqe 197.3449 0.19734
psar 106.3107 0.10631
hilo 84.2786 0.08428
ha 78.8087 0.07881
smma 71.0916 0.07109
supertrend 52.9733 0.05297
vidya 49.9903 0.04999
ebsw 40.3337 0.04033
============================================================
Time Stats:
ms secs
min 0.001200 0.000000
50% 0.650000 0.000650
mean 14.315634 0.014315
max 907.996500 0.908000
total 2104.398200 2.104340
============================================================
In [9]:
tal_speedsdfOut [9]:
| ms | secs | |
|---|---|---|
| Indicator | ||
| td_seq | 907.996500 | 0.908000 |
| alligator | 213.879600 | 0.213880 |
| qqe | 197.344900 | 0.197340 |
| psar | 106.310700 | 0.106310 |
| hilo | 84.278600 | 0.084280 |
| ha | 78.808700 | 0.078810 |
| smma | 71.091600 | 0.071090 |
| supertrend | 52.973300 | 0.052970 |
| vidya | 49.990300 | 0.049990 |
| ebsw | 40.333700 | 0.040330 |
In [10]:
tal_statsdfOut [10]:
| ms | secs | |
|---|---|---|
| min | 0.001200 | 0.000000 |
| 50% | 0.650000 | 0.000650 |
| mean | 14.315634 | 0.014315 |
| max | 907.996500 | 0.908000 |
| total | 2104.398200 | 2.104340 |
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.0012 | 0.65000 | 14.315634 | 907.99650 | 2104.39820 |
| secs | 0.0000 | 0.00065 | 0.014315 | 0.90800 | 2.10434 | |
| Pandas TA | ms | 0.0012 | 1.51140 | 14.939214 | 909.38750 | 2196.06440 |
| secs | 0.0000 | 0.00151 | 0.014939 | 0.90939 | 2.19602 |
In [12]:
diffdf = (tal_statsdf - pta_statsdf).abs().T
diffdf.columns.name = "Differences"
diffdfOut [12]:
| Differences | min | 50% | mean | max | total |
|---|---|---|---|---|---|
| ms | 0.0 | 0.86140 | 0.623580 | 1.39100 | 91.66620 |
| secs | 0.0 | 0.00086 | 0.000624 | 0.00139 | 0.09168 |
In [ ]: