Author of *backtrader*
1. backtesting requires looping over bars. If not, you are talking about something else which is research using an approximation) Even looping over bars doesn't guarantee maximum accuracy, which depends on the resolution of the bars, volume filling approach, slippage et al.
2. The term "Vectorized" has become a bingo-bullshit word which people don't know when to apply and to what it really applies.
3. The default backtesting mode of *backtrader* uses a vectorized approach (even if not using the highly praised vectorized pandas) to pre-calculate all indicators.
3.1 But the trading logic is done on a step-by-step basis (the trading logic can actually be changed on each step, which is something which cannot be vectorized)
4. *backtrader* can change the vectorized approach to step-by-step calculation of the indicators to support purely recursive declarative indicators (the indicator can signal the platform that it needs a full step-by-step execution or it can be manually changed).
5. *backtrader* will directly switch to a step-by-step basis when live trading or even in backtesting when a data feed reports itself as not pre-loadable (or *live*)
With regards to speed, see this which backtests 2M bars and compares the standard Python interpreter and pypi
https://www.backtrader.com/blog/201...on-backtesting-performance-and-out-of-memory/