Files
pandas-ta/examples/Speed_Test.ipynb
T

1179 lines
40 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "3dbbe3ae-2e85-46a1-b4c7-5bc942978bb6",
"metadata": {},
"source": [
"# Indicator Speed Test\n",
"\n",
"This Notebook shows the **Indicator Speed** with and without TA Lib\n",
"* Results may vary if ```vectorbt``` or ```numba``` is installed.\n",
"* These values are based on a M1 Macbook with 16GB Memory."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "63c0934c-9bb3-4a3e-a65a-9f142aa346f9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Package Versions:\n",
"Pandas TA v0.3.53b0\n",
"Numba v0.55.1\n",
"talib v0.4.21\n"
]
}
],
"source": [
"from importlib.util import find_spec\n",
"\n",
"from numpy import version as numpy_version\n",
"from pandas import IndexSlice, concat, read_csv\n",
"from pandas import IndexSlice as idx\n",
"import pandas_ta as ta\n",
"\n",
"print(\"Package Versions:\")\n",
"print(f\"Pandas TA v{ta.version}\")\n",
"\n",
"has_numba = find_spec(\"numba\") is not None\n",
"if has_numba:\n",
" from numba import __version__ as numba_version\n",
" print(f\"Numba v{numba_version}\")\n",
" \n",
"if find_spec(\"talib\") is not None:\n",
" from talib import __version__ as tal_version\n",
" print(f\"talib v{tal_version}\")\n",
"\n",
"from pandas import read_csv\n",
"from pandas import DatetimeIndex as dti\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"id": "68531949-cca4-47f5-89e7-00d77855e8a3",
"metadata": {},
"source": [
"### Fetch Sample Data"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "efe05268-b2a1-4beb-9b7d-280e374d8d50",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[+] yf | SPY(1260, 7): 3021.3010 ms (3.0213 s)\n"
]
}
],
"source": [
"_df = ta.df.ta.ticker(\"SPY\", period=\"5y\", timed=True)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "3f7ad492-a70c-4367-a60e-92bd186f1afb",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1260, 7)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = _df.copy()\n",
"df.shape"
]
},
{
"cell_type": "markdown",
"id": "ea75457d-9b95-41ae-9205-23b822c3a3d8",
"metadata": {},
"source": [
"### If ```numba``` installed, prep @njit"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "38176845-652e-43dc-b426-12eaa9952c5f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"============================================================\n",
" Slowest 10 Indicators [145]\n",
" Observations: 150\n",
"============================================================\n",
" secs ms\n",
"Indicator \n",
"alligator 1.49179 1491.7925\n",
"reflex 0.24176 241.7576\n",
"trendflex 0.17356 173.5640\n",
"td_seq 0.11696 116.9565\n",
"ssf 0.11040 110.4000\n",
"ssf3 0.09443 94.4307\n",
"qqe 0.02406 24.0637\n",
"cdl_pattern 0.01379 13.7947\n",
"psar 0.01376 13.7594\n",
"ha 0.01098 10.9793\n",
"\n",
"============================================================\n",
"Time Stats:\n",
" secs ms\n",
"min 0.000000 0.001200\n",
"50% 0.001160 1.163700\n",
"mean 0.017315 17.314715\n",
"max 1.491790 1491.792500\n",
"total 2.510610 2510.633700\n",
"\n",
"============================================================\n",
"\n"
]
}
],
"source": [
"if has_numba:\n",
" ta.speed_test(df.iloc[-150:], top=10, talib=False)"
]
},
{
"cell_type": "markdown",
"id": "4ce3fb06-5ca6-44e2-a8f1-6c35af7c0c23",
"metadata": {},
"source": [
"## Performance **without** TA Lib"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "6404c4d7-3318-4749-a2b7-c5dd9c5e3f59",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[+] aberration: 1.6990 ms (0.0017 s)\n",
"[+] accbands: 1.8994 ms (0.0019 s)\n",
"[+] ad: 1.2811 ms (0.0013 s)\n",
"[+] adosc: 2.9222 ms (0.0029 s)\n",
"[+] adx: 4.5722 ms (0.0046 s)\n",
"[+] alligator: 226.0575 ms (0.2261 s)\n",
"[+] alma: 0.5551 ms (0.0006 s)\n",
"[+] amat: 3.4300 ms (0.0034 s)\n",
"[+] ao: 0.6411 ms (0.0006 s)\n",
"[+] aobv: 6.0598 ms (0.0061 s)\n",
"[+] apo: 0.9210 ms (0.0009 s)\n",
"[+] aroon: 8.8892 ms (0.0089 s)\n",
"[+] atr: 1.7015 ms (0.0017 s)\n",
"[+] bbands: 1.6626 ms (0.0017 s)\n",
"[+] bias: 0.6522 ms (0.0007 s)\n",
"[+] bop: 0.8675 ms (0.0009 s)\n",
"[+] brar: 4.3142 ms (0.0043 s)\n",
"[+] cci: 16.5590 ms (0.0166 s)\n",
"[+] cdl_pattern: 11.1535 ms (0.0112 s)\n",
"[+] cdl_z: 1.7875 ms (0.0018 s)\n",
"[+] cfo: 0.3952 ms (0.0004 s)\n",
"[+] cg: 5.4697 ms (0.0055 s)\n",
"[+] chop: 1.4557 ms (0.0015 s)\n",
"[+] cksp: 1.6924 ms (0.0017 s)\n",
"[+] cmf: 1.2164 ms (0.0012 s)\n",
"[+] cmo: 2.4125 ms (0.0024 s)\n",
"[+] coppock: 0.3712 ms (0.0004 s)\n",
"[+] cti: 0.1973 ms (0.0002 s)\n",
"[+] cube: 0.5875 ms (0.0006 s)\n",
"[+] decay: 0.6320 ms (0.0006 s)\n",
"[+] decreasing: 0.3385 ms (0.0003 s)\n",
"[+] dema: 0.9428 ms (0.0009 s)\n",
"[+] dm: 2.4339 ms (0.0024 s)\n",
"[+] donchian: 1.0355 ms (0.0010 s)\n",
"[+] dpo: 0.5002 ms (0.0005 s)\n",
"[+] ebsw: 40.8816 ms (0.0409 s)\n",
"[+] efi: 0.4551 ms (0.0005 s)\n",
"[+] ema: 0.4725 ms (0.0005 s)\n",
"[+] entropy: 0.8759 ms (0.0009 s)\n",
"[+] eom: 1.0703 ms (0.0011 s)\n",
"[+] er: 0.6870 ms (0.0007 s)\n",
"[+] eri: 0.7210 ms (0.0007 s)\n",
"[+] fisher: 10.0844 ms (0.0101 s)\n",
"[+] fwma: 2.5778 ms (0.0026 s)\n",
"[+] ha: 77.6224 ms (0.0776 s)\n",
"[+] hilo: 83.8590 ms (0.0839 s)\n",
"[+] hl2: 0.3308 ms (0.0003 s)\n",
"[+] hlc3: 0.3575 ms (0.0004 s)\n",
"[+] hma: 0.4153 ms (0.0004 s)\n",
"[+] hwc: 8.5444 ms (0.0085 s)\n",
"[+] hwma: 6.3970 ms (0.0064 s)\n",
"[+] ifisher: 0.7444 ms (0.0007 s)\n",
"[+] increasing: 0.3444 ms (0.0003 s)\n",
"[+] inertia: 4.2545 ms (0.0043 s)\n",
"[+] jma: 29.2913 ms (0.0293 s)\n",
"[+] kama: 15.8392 ms (0.0158 s)\n",
"[+] kc: 0.9329 ms (0.0009 s)\n",
"[+] kdj: 1.6008 ms (0.0016 s)\n",
"[+] kst: 1.6042 ms (0.0016 s)\n",
"[+] kurtosis: 0.3775 ms (0.0004 s)\n",
"[+] kvo: 3.5412 ms (0.0035 s)\n",
"[+] linreg: 13.0964 ms (0.0131 s)\n",
"[+] log_return: 0.2040 ms (0.0002 s)\n",
"[+] long_run: 0.0013 ms (0.0000 s)\n",
"[+] macd: 2.5436 ms (0.0025 s)\n",
"[+] mad: 15.4106 ms (0.0154 s)\n",
"[+] massi: 1.3134 ms (0.0013 s)\n",
"[+] mcgd: 2.3588 ms (0.0024 s)\n",
"[+] median: 0.7268 ms (0.0007 s)\n",
"[+] mfi: 4.2106 ms (0.0042 s)\n",
"[+] midpoint: 0.6627 ms (0.0007 s)\n",
"[+] midprice: 0.7458 ms (0.0007 s)\n",
"[+] mom: 0.1954 ms (0.0002 s)\n",
"[+] natr: 1.8642 ms (0.0019 s)\n",
"[+] nvi: 2.9060 ms (0.0029 s)\n",
"[+] obv: 2.1550 ms (0.0022 s)\n",
"[+] ohlc4: 0.4605 ms (0.0005 s)\n",
"[+] pdist: 1.2077 ms (0.0012 s)\n",
"[+] percent_return: 0.1893 ms (0.0002 s)\n",
"[+] pgo: 0.6018 ms (0.0006 s)\n",
"[+] ppo: 1.6487 ms (0.0016 s)\n",
"[+] psar: 109.3518 ms (0.1094 s)\n",
"[+] psl: 1.8030 ms (0.0018 s)\n",
"[+] pvi: 3.3031 ms (0.0033 s)\n",
"[+] pvo: 0.8551 ms (0.0009 s)\n",
"[+] pvol: 0.3116 ms (0.0003 s)\n",
"[+] pvr: 1.4845 ms (0.0015 s)\n",
"[+] pvt: 0.4651 ms (0.0005 s)\n",
"[+] pwma: 2.4545 ms (0.0025 s)\n",
"[+] qqe: 206.4712 ms (0.2065 s)\n",
"[+] qstick: 0.9601 ms (0.0010 s)\n",
"[+] quantile: 1.1280 ms (0.0011 s)\n",
"[+] reflex: 0.3011 ms (0.0003 s)\n",
"[+] remap: 0.1953 ms (0.0002 s)\n",
"[+] rma: 0.3529 ms (0.0004 s)\n",
"[+] roc: 0.5170 ms (0.0005 s)\n",
"[+] rsi: 3.3309 ms (0.0033 s)\n",
"[+] rsx: 10.6474 ms (0.0106 s)\n",
"[+] rvgi: 9.2533 ms (0.0093 s)\n",
"[+] rvi: 4.9665 ms (0.0050 s)\n",
"[+] short_run: 0.0019 ms (0.0000 s)\n",
"[+] sinwma: 11.9132 ms (0.0119 s)\n",
"[+] skew: 0.5036 ms (0.0005 s)\n",
"[+] slope: 0.3027 ms (0.0003 s)\n",
"[+] sma: 0.4217 ms (0.0004 s)\n",
"[+] smi: 1.3297 ms (0.0013 s)\n",
"[+] smma: 75.4902 ms (0.0755 s)\n",
"[+] squeeze: 3.5868 ms (0.0036 s)\n",
"[+] squeeze_pro: 5.3236 ms (0.0053 s)\n",
"[+] ssf: 0.2360 ms (0.0002 s)\n",
"[+] ssf3: 0.1757 ms (0.0002 s)\n",
"[+] stc: 27.1239 ms (0.0271 s)\n",
"[+] stdev: 0.5240 ms (0.0005 s)\n",
"[+] stoch: 2.3041 ms (0.0023 s)\n",
"[+] stochf: 2.0025 ms (0.0020 s)\n",
"[+] stochrsi: 1.5106 ms (0.0015 s)\n",
"[+] supertrend: 56.9796 ms (0.0570 s)\n",
"[+] swma: 2.8700 ms (0.0029 s)\n",
"[+] t3: 3.1274 ms (0.0031 s)\n",
"[+] td_seq: 924.8030 ms (0.9248 s)\n",
"[+] tema: 2.2817 ms (0.0023 s)\n",
"[+] thermo: 2.2034 ms (0.0022 s)\n",
"[+] tos_stdevall: 3.7372 ms (0.0037 s)\n",
"[+] trendflex: 0.2847 ms (0.0003 s)\n",
"[+] trima: 0.6991 ms (0.0007 s)\n",
"[+] trix: 2.4016 ms (0.0024 s)\n",
"[+] true_range: 1.5648 ms (0.0016 s)\n",
"[+] tsi: 2.4255 ms (0.0024 s)\n",
"[+] tsignals: 0.0019 ms (0.0000 s)\n",
"[+] ttm_trend: 2.1762 ms (0.0022 s)\n",
"[+] ui: 0.9940 ms (0.0010 s)\n",
"[+] uo: 3.6072 ms (0.0036 s)\n",
"[+] variance: 0.3985 ms (0.0004 s)\n",
"[+] vhf: 1.1904 ms (0.0012 s)\n",
"[+] vidya: 51.5321 ms (0.0515 s)\n",
"[+] vortex: 1.9518 ms (0.0020 s)\n",
"[+] vwap: 2.2675 ms (0.0023 s)\n",
"[+] vwma: 0.5045 ms (0.0005 s)\n",
"[+] wb_tsv: 4.6214 ms (0.0046 s)\n",
"[+] wcp: 0.5947 ms (0.0006 s)\n",
"[+] willr: 1.1791 ms (0.0012 s)\n",
"[+] wma: 12.1194 ms (0.0121 s)\n",
"[+] xsignals: 0.0018 ms (0.0000 s)\n",
"[+] zlma: 1.0490 ms (0.0010 s)\n",
"[+] zscore: 1.1023 ms (0.0011 s)\n",
"\n",
"============================================================\n",
" Slowest 10 Indicators [145]\n",
" Observations: 1260\n",
"============================================================\n",
" secs ms\n",
"Indicator \n",
"td_seq 0.92480 924.8030\n",
"alligator 0.22606 226.0575\n",
"qqe 0.20647 206.4712\n",
"psar 0.10935 109.3518\n",
"hilo 0.08386 83.8590\n",
"ha 0.07762 77.6224\n",
"smma 0.07549 75.4902\n",
"supertrend 0.05698 56.9796\n",
"vidya 0.05153 51.5321\n",
"ebsw 0.04088 40.8816\n",
"\n",
"============================================================\n",
"Time Stats:\n",
" secs ms\n",
"min 0.00000 0.001300\n",
"50% 0.00156 1.564800\n",
"mean 0.01547 15.470785\n",
"max 0.92480 924.803000\n",
"total 2.24321 2243.263800\n",
"\n",
"============================================================\n",
"\n"
]
}
],
"source": [
"pta_speedsdf, pta_statsdf = ta.speed_test(df, top=10, talib=False, stats=True, gradient=True, verbose=True)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "b3a753e2-9634-4cc8-9544-5c28c92130a3",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_d2d67_row0_col0, #T_d2d67_row0_col1 {\n",
" background-color: #ff0000;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_d2d67_row1_col0, #T_d2d67_row1_col1 {\n",
" background-color: #ffca00;\n",
" color: #000000;\n",
"}\n",
"#T_d2d67_row2_col0, #T_d2d67_row2_col1 {\n",
" background-color: #ffd000;\n",
" color: #000000;\n",
"}\n",
"#T_d2d67_row3_col0, #T_d2d67_row3_col1 {\n",
" background-color: #ffec00;\n",
" color: #000000;\n",
"}\n",
"#T_d2d67_row4_col0, #T_d2d67_row4_col1 {\n",
" background-color: #fff300;\n",
" color: #000000;\n",
"}\n",
"#T_d2d67_row5_col0, #T_d2d67_row5_col1, #T_d2d67_row6_col0, #T_d2d67_row6_col1 {\n",
" background-color: #fff500;\n",
" color: #000000;\n",
"}\n",
"#T_d2d67_row7_col0, #T_d2d67_row7_col1 {\n",
" background-color: #fffb00;\n",
" color: #000000;\n",
"}\n",
"#T_d2d67_row8_col0, #T_d2d67_row8_col1 {\n",
" background-color: #fffc00;\n",
" color: #000000;\n",
"}\n",
"#T_d2d67_row9_col0, #T_d2d67_row9_col1 {\n",
" background-color: #ffff00;\n",
" color: #000000;\n",
"}\n",
"</style>\n",
"<table id=\"T_d2d67_\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th class=\"col_heading level0 col0\" >secs</th>\n",
" <th class=\"col_heading level0 col1\" >ms</th>\n",
" </tr>\n",
" <tr>\n",
" <th class=\"index_name level0\" >Indicator</th>\n",
" <th class=\"blank col0\" >&nbsp;</th>\n",
" <th class=\"blank col1\" >&nbsp;</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_d2d67_level0_row0\" class=\"row_heading level0 row0\" >td_seq</th>\n",
" <td id=\"T_d2d67_row0_col0\" class=\"data row0 col0\" >0.924800</td>\n",
" <td id=\"T_d2d67_row0_col1\" class=\"data row0 col1\" >924.803000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_d2d67_level0_row1\" class=\"row_heading level0 row1\" >alligator</th>\n",
" <td id=\"T_d2d67_row1_col0\" class=\"data row1 col0\" >0.226060</td>\n",
" <td id=\"T_d2d67_row1_col1\" class=\"data row1 col1\" >226.057500</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_d2d67_level0_row2\" class=\"row_heading level0 row2\" >qqe</th>\n",
" <td id=\"T_d2d67_row2_col0\" class=\"data row2 col0\" >0.206470</td>\n",
" <td id=\"T_d2d67_row2_col1\" class=\"data row2 col1\" >206.471200</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_d2d67_level0_row3\" class=\"row_heading level0 row3\" >psar</th>\n",
" <td id=\"T_d2d67_row3_col0\" class=\"data row3 col0\" >0.109350</td>\n",
" <td id=\"T_d2d67_row3_col1\" class=\"data row3 col1\" >109.351800</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_d2d67_level0_row4\" class=\"row_heading level0 row4\" >hilo</th>\n",
" <td id=\"T_d2d67_row4_col0\" class=\"data row4 col0\" >0.083860</td>\n",
" <td id=\"T_d2d67_row4_col1\" class=\"data row4 col1\" >83.859000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_d2d67_level0_row5\" class=\"row_heading level0 row5\" >ha</th>\n",
" <td id=\"T_d2d67_row5_col0\" class=\"data row5 col0\" >0.077620</td>\n",
" <td id=\"T_d2d67_row5_col1\" class=\"data row5 col1\" >77.622400</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_d2d67_level0_row6\" class=\"row_heading level0 row6\" >smma</th>\n",
" <td id=\"T_d2d67_row6_col0\" class=\"data row6 col0\" >0.075490</td>\n",
" <td id=\"T_d2d67_row6_col1\" class=\"data row6 col1\" >75.490200</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_d2d67_level0_row7\" class=\"row_heading level0 row7\" >supertrend</th>\n",
" <td id=\"T_d2d67_row7_col0\" class=\"data row7 col0\" >0.056980</td>\n",
" <td id=\"T_d2d67_row7_col1\" class=\"data row7 col1\" >56.979600</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_d2d67_level0_row8\" class=\"row_heading level0 row8\" >vidya</th>\n",
" <td id=\"T_d2d67_row8_col0\" class=\"data row8 col0\" >0.051530</td>\n",
" <td id=\"T_d2d67_row8_col1\" class=\"data row8 col1\" >51.532100</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_d2d67_level0_row9\" class=\"row_heading level0 row9\" >ebsw</th>\n",
" <td id=\"T_d2d67_row9_col0\" class=\"data row9 col0\" >0.040880</td>\n",
" <td id=\"T_d2d67_row9_col1\" class=\"data row9 col1\" >40.881600</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x155238070>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pta_speedsdf"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "715520de-ad95-47a6-aa41-5f00d1b23eac",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>secs</th>\n",
" <th>ms</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>0.00000</td>\n",
" <td>0.001300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.00156</td>\n",
" <td>1.564800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.01547</td>\n",
" <td>15.470785</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.92480</td>\n",
" <td>924.803000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>total</th>\n",
" <td>2.24321</td>\n",
" <td>2243.263800</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" secs ms\n",
"min 0.00000 0.001300\n",
"50% 0.00156 1.564800\n",
"mean 0.01547 15.470785\n",
"max 0.92480 924.803000\n",
"total 2.24321 2243.263800"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pta_statsdf"
]
},
{
"cell_type": "markdown",
"id": "942e3b8a-e3d9-480f-82b4-75d311b54cfa",
"metadata": {},
"source": [
"## Performance **with** TA Lib"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "b4757c9e-7a8f-4b82-93a9-8b3e4837a1d0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"[+] aberration: 1.3489 ms (0.0013 s)\n",
"[+] accbands: 2.4293 ms (0.0024 s)\n",
"[+] ad: 0.9455 ms (0.0009 s)\n",
"[+] adosc: 0.7832 ms (0.0008 s)\n",
"[+] adx: 5.4440 ms (0.0054 s)\n",
"[+] alligator: 223.6330 ms (0.2236 s)\n",
"[+] alma: 0.5845 ms (0.0006 s)\n",
"[+] amat: 2.3477 ms (0.0023 s)\n",
"[+] ao: 0.5491 ms (0.0005 s)\n",
"[+] aobv: 2.9005 ms (0.0029 s)\n",
"[+] apo: 0.2188 ms (0.0002 s)\n",
"[+] aroon: 0.6285 ms (0.0006 s)\n",
"[+] atr: 0.3972 ms (0.0004 s)\n",
"[+] bbands: 1.0745 ms (0.0011 s)\n",
"[+] bias: 0.3144 ms (0.0003 s)\n",
"[+] bop: 0.5317 ms (0.0005 s)\n",
"[+] brar: 4.5775 ms (0.0046 s)\n",
"[+] cci: 0.4110 ms (0.0004 s)\n",
"[+] cdl_pattern: 11.3495 ms (0.0113 s)\n",
"[+] cdl_z: 1.7693 ms (0.0018 s)\n",
"[+] cfo: 0.3880 ms (0.0004 s)\n",
"[+] cg: 5.4936 ms (0.0055 s)\n",
"[+] chop: 1.5248 ms (0.0015 s)\n",
"[+] cksp: 1.7432 ms (0.0017 s)\n",
"[+] cmf: 1.2950 ms (0.0013 s)\n",
"[+] cmo: 0.2060 ms (0.0002 s)\n",
"[+] coppock: 0.3344 ms (0.0003 s)\n",
"[+] cti: 0.1915 ms (0.0002 s)\n",
"[+] cube: 0.5648 ms (0.0006 s)\n",
"[+] decay: 0.7421 ms (0.0007 s)\n",
"[+] decreasing: 0.3255 ms (0.0003 s)\n",
"[+] dema: 0.1846 ms (0.0002 s)\n",
"[+] dm: 0.5300 ms (0.0005 s)\n",
"[+] donchian: 1.0090 ms (0.0010 s)\n",
"[+] dpo: 0.4582 ms (0.0005 s)\n",
"[+] ebsw: 39.9616 ms (0.0400 s)\n",
"[+] efi: 0.4260 ms (0.0004 s)\n",
"[+] ema: 0.1680 ms (0.0002 s)\n",
"[+] entropy: 0.7691 ms (0.0008 s)\n",
"[+] eom: 1.0576 ms (0.0011 s)\n",
"[+] er: 0.5908 ms (0.0006 s)\n",
"[+] eri: 0.7143 ms (0.0007 s)\n",
"[+] fisher: 9.8485 ms (0.0098 s)\n",
"[+] fwma: 2.7073 ms (0.0027 s)\n",
"[+] ha: 78.0391 ms (0.0780 s)\n",
"[+] hilo: 83.0280 ms (0.0830 s)\n",
"[+] hl2: 0.3353 ms (0.0003 s)\n",
"[+] hlc3: 0.3761 ms (0.0004 s)\n",
"[+] hma: 0.4238 ms (0.0004 s)\n",
"[+] hwc: 8.7674 ms (0.0088 s)\n",
"[+] hwma: 6.3823 ms (0.0064 s)\n",
"[+] ifisher: 0.6245 ms (0.0006 s)\n",
"[+] increasing: 0.3509 ms (0.0004 s)\n",
"[+] inertia: 4.5350 ms (0.0045 s)\n",
"[+] jma: 29.0445 ms (0.0290 s)\n",
"[+] kama: 15.7992 ms (0.0158 s)\n",
"[+] kc: 0.9468 ms (0.0009 s)\n",
"[+] kdj: 2.2830 ms (0.0023 s)\n",
"[+] kst: 2.1218 ms (0.0021 s)\n",
"[+] kurtosis: 0.4168 ms (0.0004 s)\n",
"[+] kvo: 3.5203 ms (0.0035 s)\n",
"[+] linreg: 0.1928 ms (0.0002 s)\n",
"[+] log_return: 0.2250 ms (0.0002 s)\n",
"[+] long_run: 0.0012 ms (0.0000 s)\n",
"[+] macd: 0.5909 ms (0.0006 s)\n",
"[+] mad: 15.6281 ms (0.0156 s)\n",
"[+] massi: 0.8248 ms (0.0008 s)\n",
"[+] mcgd: 2.4290 ms (0.0024 s)\n",
"[+] median: 0.7134 ms (0.0007 s)\n",
"[+] mfi: 0.4927 ms (0.0005 s)\n",
"[+] midpoint: 0.1744 ms (0.0002 s)\n",
"[+] midprice: 0.2610 ms (0.0003 s)\n",
"[+] mom: 0.1597 ms (0.0002 s)\n",
"[+] natr: 0.3542 ms (0.0004 s)\n",
"[+] nvi: 2.8844 ms (0.0029 s)\n",
"[+] obv: 0.2790 ms (0.0003 s)\n",
"[+] ohlc4: 0.4323 ms (0.0004 s)\n",
"[+] pdist: 1.2215 ms (0.0012 s)\n",
"[+] percent_return: 0.1815 ms (0.0002 s)\n",
"[+] pgo: 0.5857 ms (0.0006 s)\n",
"[+] ppo: 0.5495 ms (0.0005 s)\n",
"[+] psar: 112.1881 ms (0.1122 s)\n",
"[+] psl: 2.0118 ms (0.0020 s)\n",
"[+] pvi: 3.9342 ms (0.0039 s)\n",
"[+] pvo: 1.0618 ms (0.0011 s)\n",
"[+] pvol: 0.3546 ms (0.0004 s)\n",
"[+] pvr: 1.5022 ms (0.0015 s)\n",
"[+] pvt: 0.4697 ms (0.0005 s)\n",
"[+] pwma: 2.7101 ms (0.0027 s)\n",
"[+] qqe: 204.8261 ms (0.2048 s)\n",
"[+] qstick: 0.7035 ms (0.0007 s)\n",
"[+] quantile: 1.0763 ms (0.0011 s)\n",
"[+] reflex: 0.2878 ms (0.0003 s)\n",
"[+] remap: 0.1859 ms (0.0002 s)\n",
"[+] rma: 0.3788 ms (0.0004 s)\n",
"[+] roc: 0.2313 ms (0.0002 s)\n",
"[+] rsi: 0.2051 ms (0.0002 s)\n",
"[+] rsx: 10.8439 ms (0.0108 s)\n",
"[+] rvgi: 8.8667 ms (0.0089 s)\n",
"[+] rvi: 4.7788 ms (0.0048 s)\n",
"[+] short_run: 0.0015 ms (0.0000 s)\n",
"[+] sinwma: 12.2524 ms (0.0123 s)\n",
"[+] skew: 0.4899 ms (0.0005 s)\n",
"[+] slope: 0.3041 ms (0.0003 s)\n",
"[+] sma: 0.1882 ms (0.0002 s)\n",
"[+] smi: 1.3069 ms (0.0013 s)\n",
"[+] smma: 75.5255 ms (0.0755 s)\n",
"[+] squeeze: 3.7737 ms (0.0038 s)\n",
"[+] squeeze_pro: 5.9985 ms (0.0060 s)\n",
"[+] ssf: 0.2486 ms (0.0002 s)\n",
"[+] ssf3: 0.1862 ms (0.0002 s)\n",
"[+] stc: 27.0081 ms (0.0270 s)\n",
"[+] stdev: 0.2499 ms (0.0002 s)\n",
"[+] stoch: 0.6170 ms (0.0006 s)\n",
"[+] stochf: 0.5804 ms (0.0006 s)\n",
"[+] stochrsi: 1.4117 ms (0.0014 s)\n",
"[+] supertrend: 55.7674 ms (0.0558 s)\n",
"[+] swma: 3.0320 ms (0.0030 s)\n",
"[+] t3: 0.2453 ms (0.0002 s)\n",
"[+] td_seq: 941.5795 ms (0.9416 s)\n",
"[+] tema: 0.3026 ms (0.0003 s)\n",
"[+] thermo: 1.9388 ms (0.0019 s)\n",
"[+] tos_stdevall: 4.7227 ms (0.0047 s)\n",
"[+] trendflex: 0.3933 ms (0.0004 s)\n",
"[+] trima: 0.3540 ms (0.0004 s)\n",
"[+] trix: 1.2669 ms (0.0013 s)\n",
"[+] true_range: 0.4323 ms (0.0004 s)\n",
"[+] tsi: 0.9440 ms (0.0009 s)\n",
"[+] tsignals: 0.0012 ms (0.0000 s)\n",
"[+] ttm_trend: 2.1110 ms (0.0021 s)\n",
"[+] ui: 0.8789 ms (0.0009 s)\n",
"[+] uo: 0.4450 ms (0.0004 s)\n",
"[+] variance: 0.1747 ms (0.0002 s)\n",
"[+] vhf: 1.3563 ms (0.0014 s)\n",
"[+] vidya: 54.0799 ms (0.0541 s)\n",
"[+] vortex: 2.6115 ms (0.0026 s)\n",
"[+] vwap: 2.2898 ms (0.0023 s)\n",
"[+] vwma: 0.5058 ms (0.0005 s)\n",
"[+] wb_tsv: 4.7364 ms (0.0047 s)\n",
"[+] wcp: 0.4440 ms (0.0004 s)\n",
"[+] willr: 0.3801 ms (0.0004 s)\n",
"[+] wma: 0.1650 ms (0.0002 s)\n",
"[+] xsignals: 0.0016 ms (0.0000 s)\n",
"[+] zlma: 0.3880 ms (0.0004 s)\n",
"[+] zscore: 0.4089 ms (0.0004 s)\n",
"\n",
"============================================================\n",
" Slowest 10 Indicators [145]\n",
" Observations[talib]: 1260\n",
"============================================================\n",
" secs ms\n",
"Indicator \n",
"td_seq 0.94158 941.5795\n",
"alligator 0.22363 223.6330\n",
"qqe 0.20483 204.8261\n",
"psar 0.11219 112.1881\n",
"hilo 0.08303 83.0280\n",
"ha 0.07804 78.0391\n",
"smma 0.07553 75.5255\n",
"supertrend 0.05577 55.7674\n",
"vidya 0.05408 54.0799\n",
"ebsw 0.03996 39.9616\n",
"\n",
"============================================================\n",
"Time Stats:\n",
" secs ms\n",
"min 0.000000 0.001200\n",
"50% 0.000710 0.713400\n",
"mean 0.014947 14.947339\n",
"max 0.941580 941.579500\n",
"total 2.167320 2167.364100\n",
"\n",
"============================================================\n",
"\n"
]
}
],
"source": [
"tal_speedsdf, tal_statsdf = ta.speed_test(df, top=10, talib=True, stats=True, gradient=True, verbose=True)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "3fe877e5-b1eb-4e68-9720-67a1e7ee6827",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_78b62_row0_col0, #T_78b62_row0_col1 {\n",
" background-color: #ff0000;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_78b62_row1_col0, #T_78b62_row1_col1 {\n",
" background-color: #ffcb00;\n",
" color: #000000;\n",
"}\n",
"#T_78b62_row2_col0, #T_78b62_row2_col1 {\n",
" background-color: #ffd100;\n",
" color: #000000;\n",
"}\n",
"#T_78b62_row3_col0, #T_78b62_row3_col1 {\n",
" background-color: #ffeb00;\n",
" color: #000000;\n",
"}\n",
"#T_78b62_row4_col0, #T_78b62_row4_col1 {\n",
" background-color: #fff300;\n",
" color: #000000;\n",
"}\n",
"#T_78b62_row5_col0, #T_78b62_row5_col1, #T_78b62_row6_col0, #T_78b62_row6_col1 {\n",
" background-color: #fff500;\n",
" color: #000000;\n",
"}\n",
"#T_78b62_row7_col0, #T_78b62_row7_col1, #T_78b62_row8_col0, #T_78b62_row8_col1 {\n",
" background-color: #fffb00;\n",
" color: #000000;\n",
"}\n",
"#T_78b62_row9_col0, #T_78b62_row9_col1 {\n",
" background-color: #ffff00;\n",
" color: #000000;\n",
"}\n",
"</style>\n",
"<table id=\"T_78b62_\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th class=\"col_heading level0 col0\" >secs</th>\n",
" <th class=\"col_heading level0 col1\" >ms</th>\n",
" </tr>\n",
" <tr>\n",
" <th class=\"index_name level0\" >Indicator</th>\n",
" <th class=\"blank col0\" >&nbsp;</th>\n",
" <th class=\"blank col1\" >&nbsp;</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_78b62_level0_row0\" class=\"row_heading level0 row0\" >td_seq</th>\n",
" <td id=\"T_78b62_row0_col0\" class=\"data row0 col0\" >0.941580</td>\n",
" <td id=\"T_78b62_row0_col1\" class=\"data row0 col1\" >941.579500</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_78b62_level0_row1\" class=\"row_heading level0 row1\" >alligator</th>\n",
" <td id=\"T_78b62_row1_col0\" class=\"data row1 col0\" >0.223630</td>\n",
" <td id=\"T_78b62_row1_col1\" class=\"data row1 col1\" >223.633000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_78b62_level0_row2\" class=\"row_heading level0 row2\" >qqe</th>\n",
" <td id=\"T_78b62_row2_col0\" class=\"data row2 col0\" >0.204830</td>\n",
" <td id=\"T_78b62_row2_col1\" class=\"data row2 col1\" >204.826100</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_78b62_level0_row3\" class=\"row_heading level0 row3\" >psar</th>\n",
" <td id=\"T_78b62_row3_col0\" class=\"data row3 col0\" >0.112190</td>\n",
" <td id=\"T_78b62_row3_col1\" class=\"data row3 col1\" >112.188100</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_78b62_level0_row4\" class=\"row_heading level0 row4\" >hilo</th>\n",
" <td id=\"T_78b62_row4_col0\" class=\"data row4 col0\" >0.083030</td>\n",
" <td id=\"T_78b62_row4_col1\" class=\"data row4 col1\" >83.028000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_78b62_level0_row5\" class=\"row_heading level0 row5\" >ha</th>\n",
" <td id=\"T_78b62_row5_col0\" class=\"data row5 col0\" >0.078040</td>\n",
" <td id=\"T_78b62_row5_col1\" class=\"data row5 col1\" >78.039100</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_78b62_level0_row6\" class=\"row_heading level0 row6\" >smma</th>\n",
" <td id=\"T_78b62_row6_col0\" class=\"data row6 col0\" >0.075530</td>\n",
" <td id=\"T_78b62_row6_col1\" class=\"data row6 col1\" >75.525500</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_78b62_level0_row7\" class=\"row_heading level0 row7\" >supertrend</th>\n",
" <td id=\"T_78b62_row7_col0\" class=\"data row7 col0\" >0.055770</td>\n",
" <td id=\"T_78b62_row7_col1\" class=\"data row7 col1\" >55.767400</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_78b62_level0_row8\" class=\"row_heading level0 row8\" >vidya</th>\n",
" <td id=\"T_78b62_row8_col0\" class=\"data row8 col0\" >0.054080</td>\n",
" <td id=\"T_78b62_row8_col1\" class=\"data row8 col1\" >54.079900</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_78b62_level0_row9\" class=\"row_heading level0 row9\" >ebsw</th>\n",
" <td id=\"T_78b62_row9_col0\" class=\"data row9 col0\" >0.039960</td>\n",
" <td id=\"T_78b62_row9_col1\" class=\"data row9 col1\" >39.961600</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x1555fd280>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tal_speedsdf"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "bf35b59d-4253-41e3-895e-432a824789fb",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>secs</th>\n",
" <th>ms</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>0.000000</td>\n",
" <td>0.001200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.000710</td>\n",
" <td>0.713400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.014947</td>\n",
" <td>14.947339</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.941580</td>\n",
" <td>941.579500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>total</th>\n",
" <td>2.167320</td>\n",
" <td>2167.364100</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" secs ms\n",
"min 0.000000 0.001200\n",
"50% 0.000710 0.713400\n",
"mean 0.014947 14.947339\n",
"max 0.941580 941.579500\n",
"total 2.167320 2167.364100"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tal_statsdf"
]
},
{
"cell_type": "markdown",
"id": "c33c37fa-8062-4258-90ba-0c19d115698d",
"metadata": {},
"source": [
"# Comparisons"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "35454271-cee2-4bc0-84b7-4099730bb0ed",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(1260, 7)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>min</th>\n",
" <th>50%</th>\n",
" <th>mean</th>\n",
" <th>max</th>\n",
" <th>total</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">TA Lib</th>\n",
" <th>secs</th>\n",
" <td>0.0000</td>\n",
" <td>0.00071</td>\n",
" <td>0.014947</td>\n",
" <td>0.94158</td>\n",
" <td>2.16732</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ms</th>\n",
" <td>0.0012</td>\n",
" <td>0.71340</td>\n",
" <td>14.947339</td>\n",
" <td>941.57950</td>\n",
" <td>2167.36410</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">Pandas TA</th>\n",
" <th>secs</th>\n",
" <td>0.0000</td>\n",
" <td>0.00156</td>\n",
" <td>0.015470</td>\n",
" <td>0.92480</td>\n",
" <td>2.24321</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ms</th>\n",
" <td>0.0013</td>\n",
" <td>1.56480</td>\n",
" <td>15.470785</td>\n",
" <td>924.80300</td>\n",
" <td>2243.26380</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" min 50% mean max total\n",
"TA Lib secs 0.0000 0.00071 0.014947 0.94158 2.16732\n",
" ms 0.0012 0.71340 14.947339 941.57950 2167.36410\n",
"Pandas TA secs 0.0000 0.00156 0.015470 0.92480 2.24321\n",
" ms 0.0013 1.56480 15.470785 924.80300 2243.26380"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(df.shape)\n",
"compdf = concat([tal_statsdf, pta_statsdf], keys=[\"TA Lib\", \"Pandas TA\"], axis=1).T\n",
"compdf"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "167b311f-5180-4abf-95e7-1b41a96a6a1d",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>Differences</th>\n",
" <th>min</th>\n",
" <th>50%</th>\n",
" <th>mean</th>\n",
" <th>max</th>\n",
" <th>total</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>secs</th>\n",
" <td>0.0000</td>\n",
" <td>0.00085</td>\n",
" <td>0.000523</td>\n",
" <td>0.01678</td>\n",
" <td>0.07589</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ms</th>\n",
" <td>0.0001</td>\n",
" <td>0.85140</td>\n",
" <td>0.523446</td>\n",
" <td>16.77650</td>\n",
" <td>75.89970</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Differences min 50% mean max total\n",
"secs 0.0000 0.00085 0.000523 0.01678 0.07589\n",
"ms 0.0001 0.85140 0.523446 16.77650 75.89970"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"diffdf = (tal_statsdf - pta_statsdf).abs().T\n",
"diffdf.columns.name = \"Differences\"\n",
"diffdf"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "25dc4fbc-9c04-4530-ae2d-283522ec8179",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.1"
}
},
"nbformat": 4,
"nbformat_minor": 5
}