SIMD by_assets: 4 Assets Simultaneously¶
Processes 4 different assets with the same options in a single 256-bit AVX2 f64x4 SIMD pass. Times represent the total wall-time for all 4 assets. All times are nanoseconds (ns); lower is better.
- Speedup vs Rust - how many times faster SIMD is compared to 4x sequential native Rust calls
- Speedup vs [binding/library] - how many times faster SIMD is compared to 4x sequential calls of that competitor
| Indicator | SIMD 4-Asset (ns) | Speedup vs Rust | Speedup vs C | Speedup vs TA-Lib |
|---|---|---|---|---|
| ad | 16,266 | 1.18x | 1.27x | 1.26x |
| adaptivemsw | 1,785,341 | 1.18x | --- | --- |
| adosc | 18,352 | 1.23x | 2.04x | 1.93x |
| adx | 21,309 | 2.01x | 3.12x | 7.23x |
| adxr | 24,689 | 2.42x | 2.92x | 6.43x |
| ao | 14,487 | 1.50x | 1.35x | --- |
| apo | 10,305 | 1.89x | 3.51x | 4.18x |
| aroon | 76,294 | 0.98x | 4.29x | 2.26x |
| aroonosc | 77,794 | 1.00x | 4.21x | 2.07x |
| atr | 13,289 | 1.45x | 3.32x | 8.20x |
| avgprice | 5,677 | 1.01x | 1.44x | 1.61x |
| bbands | 26,007 | 1.01x | 1.39x | 3.25x |
| bop | 9,708 | 1.01x | 1.18x | 2.11x |
| ccfisher | 275,801 | 3.31x | --- | --- |
| cci | 72,834 | 4.34x | 4.10x | 6.16x |
| chaikinmf | 20,817 | 1.38x | --- | --- |
| chandelierexit | 112,590 | 0.66x | --- | --- |
| cmo | 11,736 | 2.14x | 8.32x | --- |
| cvi | 13,168 | 1.58x | 4.44x | --- |
| cybercycle | 56,695 | 1.18x | --- | --- |
| dema | 9,415 | 2.69x | 2.88x | 9.62x |
| di | 23,032 | 2.97x | 1.83x | 9.95x |
| dm | 18,078 | 2.20x | 1.55x | --- |
| donchianchannel | 116,011 | 0.45x | 2.00x | --- |
| dpo | 14,045 | 0.77x | 0.80x | --- |
| dx | 19,111 | 1.97x | 1.48x | --- |
| ef | 10,709 | 1.46x | --- | --- |
| elderray | 18,261 | 1.33x | 3.38x | --- |
| ema | 8,824 | 2.17x | 5.01x | 4.98x |
| emv | 9,728 | 1.01x | 2.11x | --- |
| fisher | 176,887 | 1.11x | 3.05x | --- |
| fosc | 19,617 | 1.66x | 2.00x | --- |
| highpass | 10,395 | 1.85x | --- | --- |
| hilberttransform | 24,733 | 2.31x | --- | --- |
| hma | 17,334 | 2.16x | 2.26x | --- |
| homodynediscriminator | 298,453 | 2.91x | --- | 2.75x |
| ichimoku | 402,544 | 0.69x | --- | --- |
| instantaneoustrendline | 358,442 | 2.48x | --- | 2.74x |
| kama | 12,728 | 2.34x | 2.75x | 3.49x |
| keltnerchannel | 26,530 | 1.03x | --- | --- |
| kvo | 26,431 | 1.36x | 1.41x | --- |
| linreg | 10,928 | 2.42x | 3.42x | --- |
| macd | 23,917 | 1.06x | 2.34x | 6.00x |
| mama | 256,679 | 3.43x | --- | 3.50x |
| marketfi | 12,414 | 0.79x | 0.91x | --- |
| mass | 13,436 | 1.95x | 3.66x | --- |
| max | 21,430 | 0.97x | 5.70x | 2.73x |
| md | 31,794 | 1.80x | 1.87x | --- |
| medprice | 3,915 | 0.89x | 1.54x | 1.58x |
| mfi | 21,861 | 1.46x | 2.26x | 3.31x |
| min | 33,635 | 0.82x | 6.74x | 3.36x |
| mom | 3,415 | 1.05x | 1.72x | 1.58x |
| msw | 370,377 | 1.40x | 15.75x | --- |
| natr | 13,126 | 1.51x | 3.35x | 8.31x |
| nvi | 11,288 | 0.95x | 1.60x | --- |
| obv | 10,457 | 1.34x | 1.33x | 1.38x |
| ppo | 10,403 | 1.95x | 3.72x | 5.65x |
| psar | 73,128 | 0.47x | 0.50x | 0.46x |
| pvi | 10,631 | 0.96x | 4.30x | --- |
| qstick | 10,432 | 0.99x | 1.17x | --- |
| roc | 10,429 | 0.93x | 1.06x | 1.96x |
| rocr | 10,531 | 0.93x | 1.05x | 1.94x |
| roofingfilter | 11,828 | 3.63x | --- | --- |
| rsi | 10,442 | 1.91x | 4.25x | 10.04x |
| sma | 9,516 | 1.08x | 1.15x | 2.11x |
| smaenvelope | 24,671 | 1.15x | --- | --- |
| stddev | 15,157 | 1.00x | 1.96x | --- |
| stoch | 90,638 | 0.67x | --- | --- |
| stochrsi | 135,799 | 0.83x | 1.39x | --- |
| supersmoother | 12,074 | 3.40x | --- | --- |
| supertrend | 26,401 | 2.21x | --- | --- |
| tema | 9,141 | 2.84x | 2.99x | 14.17x |
| tr | 6,387 | 0.94x | 1.35x | 0.61x |
| trendmode | 264,906 | 3.38x | --- | --- |
| trima | 12,460 | 1.80x | 2.29x | 2.28x |
| trix | 10,210 | 2.43x | 4.32x | --- |
| trvi | 16,770 | 1.45x | --- | --- |
| tsf | 12,217 | 2.15x | 2.82x | --- |
| typprice | 4,445 | 0.93x | 1.62x | --- |
| ultosc | 31,940 | 2.10x | 2.29x | --- |
| vhf | 82,635 | 0.65x | 1.90x | --- |
| vidya | 38,168 | 1.27x | 0.25x | --- |
| volatility | 24,214 | 1.50x | 1.11x | --- |
| vortex | 23,096 | 1.36x | --- | --- |
| vosc | 12,947 | 1.22x | 1.57x | --- |
| vwap | 15,343 | 0.90x | --- | --- |
| vwma | 15,796 | 0.88x | 1.29x | --- |
| wad | 13,772 | 1.12x | 1.47x | --- |
| wcprice | 4,387 | 0.97x | 1.63x | --- |
| wilders | 9,060 | 2.10x | 4.84x | --- |
| willr | 83,071 | 0.79x | 1.86x | 2.02x |
| wma | 8,711 | 2.94x | 3.99x | 2.33x |
| zlema | 8,938 | 2.67x | 3.84x | --- |
Reference libraries: ta (bukosabino/ta) and pandas_ta (twopirllc/pandas-ta), each called once per asset and summed to give the equivalent 4-asset sequential cost.
| Indicator | SIMD 4-Asset (ns) | Speedup vs tulip_rs_python | Speedup vs ta | Speedup vs pandas_ta |
|---|---|---|---|---|
| ad | 18,629 | 1.16x | 32.53x | --- |
| adaptivemsw | 1,763,951 | 1.22x | --- | --- |
| adosc | 20,422 | 1.44x | --- | --- |
| adx | 28,972 | 4.35x | 3045.82x | 472.07x |
| adxr | 27,711 | 2.88x | --- | --- |
| ao | 29,303 | 1.27x | 25.99x | 24.98x |
| apo | 13,243 | 1.77x | --- | 36.00x |
| aroon | 106,300 | 1.14x | 383.51x | 505.00x |
| aroonosc | 85,564 | 1.18x | --- | 634.63x |
| atr | 17,235 | 1.66x | 2698.11x | 223.79x |
| avgprice | 8,207 | 1.02x | --- | 25.91x |
| bbands | 37,552 | 1.25x | 25.32x | 60.24x |
| bop | 12,044 | 2.82x | --- | 64.52x |
| ccfisher | 403,568 | 2.34x | --- | --- |
| cci | 81,383 | 4.29x | 1293.88x | 1109.47x |
| chaikinmf | 26,704 | 1.77x | 42.07x | 49.49x |
| chandelierexit | 114,215 | 1.02x | --- | 61.72x |
| cmo | 16,065 | 1.99x | --- | 140.92x |
| cvi | 21,816 | 1.16x | --- | --- |
| cybercycle | 62,945 | 1.12x | --- | --- |
| dema | 22,327 | 1.17x | 24.12x | 51.95x |
| di | 42,638 | 2.63x | --- | 196.86x |
| dm | 19,735 | 3.70x | --- | 424.44x |
| donchianchannel | 107,771 | 0.55x | 10.32x | 15.21x |
| dpo | 18,602 | 0.84x | 28.13x | 28.24x |
| dx | 22,535 | 2.79x | --- | 607.74x |
| ef | 13,119 | 2.25x | --- | 49.85x |
| elderray | 26,718 | 1.26x | --- | 45.67x |
| ema | 15,866 | 1.68x | 14.48x | 30.00x |
| emv | 14,628 | 2.63x | 46.95x | 96.49x |
| fisher | 287,728 | 1.09x | --- | 112.20x |
| fosc | 21,340 | 6.77x | --- | --- |
| highpass | 27,399 | 1.39x | --- | --- |
| hilberttransform | 46,338 | 1.71x | --- | --- |
| hma | 24,792 | 1.93x | 1561.37x | 99.01x |
| homodynediscriminator | 300,347 | 2.99x | --- | --- |
| ichimoku | 423,649 | 0.74x | --- | 12.85x |
| instantaneoustrendline | 362,830 | 2.48x | --- | 3.76x |
| kama | 16,608 | 2.39x | 934.51x | 2593.68x |
| keltnerchannel | 44,999 | 0.99x | 37.49x | 112.43x |
| kvo | 34,442 | 1.68x | --- | 136.50x |
| linreg | 15,171 | 2.40x | --- | 4718.38x |
| macd | 31,843 | 1.23x | 24.54x | 102.21x |
| mama | 262,113 | 3.45x | --- | 4.32x |
| marketfi | 14,723 | 2.19x | --- | --- |
| mass | 25,194 | 1.49x | 33.58x | 79.58x |
| max | 39,518 | 0.65x | --- | --- |
| md | 70,981 | 1.20x | --- | 1241.14x |
| medprice | 5,825 | 1.34x | --- | 27.20x |
| mfi | 26,143 | 1.84x | 4594.13x | 29.77x |
| min | 43,753 | 0.87x | --- | --- |
| mom | 5,785 | 1.20x | 15.08x | 21.59x |
| msw | 281,148 | 1.92x | --- | --- |
| natr | 20,539 | 4.23x | --- | 209.64x |
| nvi | 55,028 | 0.60x | 4759.78x | 52.48x |
| obv | 27,769 | 0.76x | 18.62x | 52.59x |
| ppo | 28,301 | 1.08x | 33.82x | 65.57x |
| psar | 85,935 | 1.12x | 9219.05x | 237.76x |
| pvi | 55,016 | 0.47x | --- | 21.36x |
| qstick | 14,210 | 0.97x | --- | --- |
| roc | 11,632 | 1.46x | 33.96x | 12.09x |
| rocr | 12,244 | 0.99x | --- | 10.75x |
| roofingfilter | 15,517 | 3.29x | --- | --- |
| rsi | 21,207 | 1.31x | 92.15x | 95.25x |
| sma | 14,441 | 1.68x | 22.06x | 94.49x |
| smaenvelope | 30,752 | 1.13x | --- | --- |
| stddev | 17,644 | 1.76x | --- | 30.94x |
| stoch | 97,448 | 1.11x | 12.24x | 41.48x |
| stochrsi | 125,360 | 0.90x | 29.17x | 35.22x |
| supersmoother | 17,469 | 3.15x | --- | 9.92x |
| supertrend | 36,259 | 2.95x | --- | 5010.09x |
| tema | 21,501 | 1.47x | 40.78x | 77.00x |
| tr | 26,112 | 1.30x | --- | 117.60x |
| trendmode | 253,976 | 3.54x | --- | --- |
| trima | 20,787 | 1.28x | --- | 18.21x |
| trix | 25,136 | 1.93x | 48.38x | 121.83x |
| trvi | 20,049 | 1.27x | --- | --- |
| tsf | 17,633 | 3.92x | --- | 4281.36x |
| typprice | 6,733 | 1.03x | --- | 26.83x |
| ultosc | 55,286 | 2.16x | 118.43x | 142.44x |
| vhf | 104,492 | 0.82x | --- | 18.99x |
| vidya | 52,306 | 1.26x | --- | 6343.84x |
| volatility | 31,706 | 2.41x | --- | 17.37x |
| vortex | 59,214 | 1.12x | 62.38x | 86.06x |
| vosc | 15,177 | 2.00x | --- | --- |
| vwap | 20,953 | 1.29x | --- | 250.32x |
| vwma | 18,028 | 1.48x | --- | 39.66x |
| wad | 22,486 | 0.79x | --- | --- |
| wcprice | 7,770 | 1.18x | --- | 32.95x |
| wilders | 13,889 | 1.78x | --- | 19.47x |
| willr | 84,882 | 0.93x | 13.91x | 16.10x |
| wma | 15,164 | 1.76x | 849.87x | 55.49x |
| zlema | 12,869 | 2.17x | --- | 69.65x |
Reference libraries: technicalindicators (anandanand84/technicalindicators) and indicatorts (Onur Cinar/indicatorts), each called once per asset and summed to give the equivalent 4-asset sequential cost.
| Indicator | SIMD 4-Asset (ns) | Speedup vs tulip_rs_node | Speedup vs technicalindicators | Speedup vs indicatorts |
|---|---|---|---|---|
| ad | 77,186 | 0.52x | 10.65x | 2.22x |
| adaptivemsw | 1,981,441 | 1.09x | --- | --- |
| adosc | 35,898 | 0.99x | --- | --- |
| adx | 38,235 | 1.48x | 127.14x | --- |
| adxr | 43,070 | 1.86x | --- | --- |
| ao | 33,481 | 1.04x | 129.26x | 3.57x |
| apo | 26,984 | 1.05x | --- | 6.34x |
| aroon | 139,107 | 0.83x | --- | 20.88x |
| aroonosc | 129,748 | 0.79x | --- | --- |
| atr | 29,491 | 1.22x | 54.01x | 34.64x |
| avgprice | 27,861 | 0.79x | --- | --- |
| bbands | 113,593 | 0.51x | 208.36x | 10.38x |
| bop | 28,146 | 0.87x | --- | 2.49x |
| ccfisher | 417,852 | 2.27x | --- | --- |
| cci | 114,773 | 3.10x | 168.86x | 2.36x |
| chaikinmf | 37,514 | 1.26x | --- | 5.77x |
| chandelierexit | 133,830 | 0.77x | --- | 30.20x |
| cmo | 26,422 | 1.33x | --- | --- |
| cvi | 32,008 | 1.04x | --- | --- |
| cybercycle | 78,352 | 0.97x | --- | --- |
| dema | 27,810 | 1.14x | --- | 6.78x |
| di | 86,398 | 1.25x | --- | --- |
| dm | 43,676 | 1.52x | --- | --- |
| donchianchannel | 132,891 | 0.63x | --- | 24.42x |
| dpo | 23,861 | 0.94x | --- | --- |
| dx | 38,929 | 1.22x | --- | --- |
| ef | 27,216 | 1.02x | --- | --- |
| elderray | 42,465 | 1.61x | --- | --- |
| ema | 27,230 | 1.02x | 21.82x | 2.99x |
| emv | 28,887 | 0.82x | --- | 7.81x |
| fisher | 285,810 | 1.04x | --- | --- |
| fosc | 34,514 | 4.49x | --- | --- |
| highpass | 27,996 | 0.96x | --- | --- |
| hilberttransform | 45,394 | 1.92x | --- | --- |
| hma | 38,227 | 1.15x | --- | --- |
| homodynediscriminator | 316,316 | 2.79x | --- | --- |
| ichimoku | 482,907 | 0.72x | 34.48x | --- |
| instantaneoustrendline | 378,682 | 2.38x | --- | --- |
| kama | 31,292 | 1.21x | --- | --- |
| keltnerchannel | 101,641 | 0.68x | --- | 11.14x |
| kvo | 41,164 | 1.15x | --- | --- |
| linreg | 24,229 | 1.56x | --- | --- |
| macd | 70,494 | 0.98x | 35.24x | 3.46x |
| mama | 275,836 | 3.30x | --- | --- |
| marketfi | 29,367 | 0.92x | --- | --- |
| mass | 30,942 | 1.14x | --- | --- |
| max | 42,696 | 1.06x | --- | 52.59x |
| md | 58,967 | 1.24x | --- | --- |
| medprice | 25,629 | 0.86x | --- | --- |
| mfi | 39,395 | 1.28x | 196.22x | 26.77x |
| min | 59,463 | 0.95x | --- | 33.87x |
| mom | 23,799 | 0.87x | --- | --- |
| msw | 328,544 | 1.68x | --- | --- |
| natr | 31,579 | 1.08x | --- | --- |
| nvi | 29,180 | 0.77x | --- | 3.69x |
| obv | 29,380 | 0.93x | 25.78x | 2.68x |
| ppo | 25,580 | 1.25x | --- | 12.50x |
| psar | 80,002 | 0.64x | 11.27x | 2.30x |
| pvi | 23,663 | 1.00x | --- | --- |
| qstick | 26,986 | 0.91x | --- | 2.50x |
| roc | 26,309 | 0.96x | 89.86x | 2.14x |
| rocr | 27,230 | 0.76x | --- | --- |
| roofingfilter | 28,449 | 1.82x | --- | --- |
| rsi | 23,133 | 1.33x | 159.05x | 18.79x |
| sma | 22,399 | 1.10x | 78.29x | 2.40x |
| smaenvelope | 57,716 | 1.06x | --- | --- |
| stddev | 26,539 | 1.39x | --- | --- |
| stoch | 176,729 | 0.78x | 40.57x | 13.41x |
| stochrsi | 155,750 | 0.60x | 97.58x | --- |
| supersmoother | 26,228 | 1.94x | --- | --- |
| supertrend | 41,416 | 1.53x | --- | --- |
| tema | 31,616 | 1.18x | --- | 9.85x |
| tr | 28,008 | 1.01x | --- | 35.47x |
| trendmode | 266,240 | 3.33x | --- | --- |
| trima | 29,872 | 1.11x | --- | 3.05x |
| trix | 33,994 | 1.12x | 82.92x | 8.92x |
| trvi | 35,686 | 1.00x | --- | --- |
| tsf | 29,512 | 1.24x | --- | --- |
| typprice | 26,605 | 0.89x | --- | 2.66x |
| ultosc | 45,850 | 1.52x | --- | --- |
| vhf | 137,849 | 0.48x | --- | --- |
| vidya | 53,879 | 1.10x | --- | --- |
| volatility | 36,445 | 1.53x | --- | --- |
| vortex | 67,549 | 1.23x | --- | 18.13x |
| vosc | 26,491 | 1.11x | --- | --- |
| vwap | 31,972 | 1.25x | 31.64x | --- |
| vwma | 28,041 | 1.10x | --- | 4.04x |
| wad | 27,256 | 1.02x | --- | --- |
| wcprice | 26,054 | 0.84x | --- | --- |
| wilders | 22,078 | 1.35x | 21.82x | 7.25x |
| willr | 114,832 | 0.67x | 50.56x | 28.72x |
| wma | 23,785 | 1.61x | 614.37x | --- |
| zlema | 21,820 | 1.45x | --- | --- |
Notable results - by_assets
69 of 93 indicators (74%) show a SIMD speedup over 4x sequential Rust. Median speedup for benefiting indicators: ~1.80x.
| Category | Indicator | SIMD Speedup vs 4x Sequential Rust |
|---|---|---|
| Top performers | cci |
4.34x |
| Top performers | roofingfilter |
3.63x |
| Top performers | mama |
3.43x |
| Top performers | supersmoother |
3.40x |
| Top performers | trendmode |
3.38x |
| Top performers | ccfisher |
3.31x |
| Top performers | di |
2.97x |
| Top performers | wma |
2.94x |
| Top performers | homodynediscriminator |
2.91x |
| Top performers | tema |
2.84x |
| Notable improvement | msw |
1.40x (SDFT optimisation) |
| SIMD slower than sequential | donchianchannel |
0.45x |
| SIMD slower than sequential | psar |
0.47x |
| SIMD slower than sequential | vhf |
0.65x |
| SIMD slower than sequential | chandelierexit |
0.66x |
| SIMD slower than sequential | stoch |
0.67x |
Indicators where SIMD is slower typically involve highly sequential computation or irregular memory access patterns where SIMD setup overhead dominates.