# VectorBT

Vectorised backtesting — thousands of parameter combinations in one NumPy pass.

*https://stockmarketstack.com/tools/vectorbt · Backtesting Frameworks & Algo Trading Libraries*

## Also covered on

- [VectorBT on CryptoMarkets.tools](https://cryptomarkets.tools/tools/vectorbt.md) — why a vectorised backtest prices a perpetual as spot, and what that omits

## Facts

### At a glance

| Field | Value |
| --- | --- |
| Vendor | Oleg Polakow |
| Category | Backtesting Frameworks & Algo Trading Libraries |
| Job | backtesting |
| Website | https://vectorbt.dev |
| Pricing model | free |
| Free tier | true |
| Open source | false |
| Licence | Apache-2.0 with Commons Clause |
| Self-hosted | true |
| Tested hands-on | false |
| Last updated | 2026-09-13 |

### Coverage

| Field | Value |
| --- | --- |
| Asset classes | stocks, etf, forex, crypto, indices |
| Markets | global |
| Works outside the US | true |
| Data latency | none |
| Platforms | library |
| AI features | none |

### Interfaces

| Field | Value |
| --- | --- |
| API | false |
| Webhooks | false |
| Scripting | Python |
| Python | true |
| Spreadsheet add-in | false |
| MCP server | false |
| Export | none |

### Capabilities

Yes: backtesting, automation, alerts

No: charting, screening, scanning, live_trading, paper_trading, portfolio_tracking, broker_import, tax_reporting, news, options_analysis

*Verified: pricing 2026-09-13; capabilities 2026-09-13; coverage 2026-09-13.*

## What it is

vectorbt backtests by broadcasting rather than by looping. A strategy is a pair of boolean signal
arrays; a thousand parameter combinations are a thousand columns of the same array, and one
`Portfolio.from_signals` call simulates them together through compiled kernels. Grid searches that
take an event-driven backtester hours finish in seconds. The price is a mental model most people
find alien: you stop thinking in bars and start thinking in matrices, and a strategy with genuine
path dependence is awkward to express.

Liveness, in numbers: the repository is not archived, v1.0.0 landed on 22 April 2026 and added an
optional Rust backend alongside Numba, v1.1.0 followed on 5 July 2026 with Python 3.14, pandas 3
and NumPy 2.4 support, and the last commit to master was 2 August 2026. 121 issues are open,
excluding pull requests.

## Pricing

Nothing here is for sale — `pip install vectorbt`, no account and no key. The licence is what to
read instead of a price list. It is Apache 2.0 with the Commons Clause v1.0, which withholds only
the right to Sell: to provide third parties, for a fee, a product or service whose value derives
substantially from the software. Trading a firm's own capital on it is not selling it. Charging
clients for a service built on it is, and needs a written agreement with the author.

## Data & coverage

vectorbt ships no market data and no feed of its own. The optional `[full]` extra installs
yfinance, python-binance, ccxt and alpaca-py for the built-in connectors; anything else arrives as
a pandas DataFrame with a datetime index, which is all the library requires. Asset classes,
markets and latency are properties of your feed, not of this tool.

## Integrations

TA-Lib, `ta` and pandas-ta-classic for indicators, QuantStats for tearsheets, Plotly and
ipywidgets for heatmaps, Ray for distributed sweeps, and `schedule` plus python-telegram-bot for
unattended updates and notifications. The `[rust]` extra installs the `vectorbt-rust` engine,
which dispatches per call and falls back to Numba where Rust has no kernel.

## Limitations

- No live trading. No broker connection, no order routing, no paper account — execution is
  somebody else's problem.
- A vectorised simulator fills at bar prices. Intrabar sequencing, queue position and partial
  fills are approximations, and stops are checked against OHLC rather than against the tape.
- Not OSI open source, which matters wherever a policy says open source and means it.
- Python 3.11 to 3.14 only, and v1.1.0 expects pandas 3 and NumPy 2.4 or newer. An older stack
  stays on the 0.28 line.

## Alternatives

[Backtesting.py](https://stockmarketstack.com/tools/backtesting-py) is far smaller and event-driven, [Backtrader](https://stockmarketstack.com/tools/backtrader) is the classic looping engine, and
[NautilusTrader](https://stockmarketstack.com/tools/nautilus-trader) is the one to reach for when the same code has to place real orders. [VectorBT PRO](https://stockmarketstack.com/tools/vectorbt-pro)
is the author's paid product — a private repository from $25 a month, and a much narrower licence:
it grants Private Use only, defined as use from which no "monetary compensation, commercial
advantage, or for-profit purpose" is obtained, and limits an organisation to internal evaluation,
prototyping and R&D "provided it does not result in a commercial product, service, or outcome".
The Commons Clause here stops at forbidding sale to third parties, so for a firm trading its own
capital the free package is the more permissive of the two.

Compare it against the rest of the [backtesting frameworks](https://stockmarketstack.com/categories/backtesting-frameworks).

## FAQ

### Is vectorbt still maintained?

Yes. The repository is not archived, v1.0.0 shipped on 22 April 2026 with an optional Rust backend and v1.1.0 on 5 July 2026 added Python 3.14, pandas 3 and NumPy 2.4 support. The last commit to master was 2 August 2026 and 121 issues are open, excluding pull requests.

### Can a for-profit firm use vectorbt?

Yes, to trade its own capital. The Commons Clause withholds only the right to Sell — to provide third parties, for a fee, a product or service whose value derives substantially from the software. Running it in-house is not selling it; charging clients for a service built on it is, and that needs a separate agreement with the author.

### Is vectorbt open source?

Source-available, not open source. The licence is Apache 2.0 with the Commons Clause v1.0 bolted on, and the Commons Clause is not an OSI-approved licence. If a procurement policy says open source and means it, this fails that test.

### Can vectorbt place live trades?

No. There is no broker connection and no order routing. The Portfolio object is a simulator, and you need a separate execution layer to trade anything it suggests.

## Also from Oleg Polakow

- [VectorBT PRO](https://stockmarketstack.com/tools/vectorbt-pro.md)

## Also worth comparing

- [Blueshift](https://stockmarketstack.com/tools/blueshift.md) — Free hosted Python backtesting with bundled minute data and broker execution.
- [AmiBroker](https://stockmarketstack.com/tools/amibroker.md) — Windows portfolio backtester scripted in AFL, sold as a perpetual licence.
- [Backtesting.py](https://stockmarketstack.com/tools/backtesting-py.md) — A single-instrument Python backtester — one OHLC series, one strategy, no live trading.
- [Backtrader](https://stockmarketstack.com/tools/backtrader.md) — An event-driven Python backtester with 122 indicators, frozen since April 2023.
- [bt](https://stockmarketstack.com/tools/bt.md) — Python backtesting for allocation and rebalancing rules, not entries and exits.
- [fastquant](https://stockmarketstack.com/tools/fastquant.md) — A one-call wrapper over Backtrader, dormant since 2023 and broken on PyPI.

## Named as a replacement for

- [Quantopian](https://stockmarketstack.com/alternatives/quantopian.md)
