or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

data-management.mdgeneric-analysis.mdindex.mdindicators-signals.mdlabel-generation.mdportfolio-analysis.mdrecords-management.mdutilities-config.md
tile.json

tessl/pypi-vectorbt

Python library for backtesting and analyzing trading strategies at scale

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/vectorbt@0.28.x

To install, run

npx @tessl/cli install tessl/pypi-vectorbt@0.28.0

index.mddocs/

VectorBT

A comprehensive Python library for backtesting and analyzing trading strategies at scale. VectorBT provides high-performance vectorized operations for processing financial data, enables complex portfolio analysis with detailed performance metrics, and offers built-in integrations with popular data sources and advanced visualization capabilities.

Package Information

  • Package Name: vectorbt
  • Language: Python
  • Installation: pip install vectorbt

Core Imports

import vectorbt as vbt

Common for accessing specific functionality:

from vectorbt import Portfolio, MA, RSI, MACD, BBANDS
from vectorbt.data import YFData, BinanceData, CCXTData
from vectorbt.records import Orders, Trades, Positions
from vectorbt.signals import RAND, STX  
from vectorbt.labels import FMEAN, TRENDLB

Basic Usage

import vectorbt as vbt
import pandas as pd

# Fetch historical data
data = vbt.YFData.download("AAPL", start="2020-01-01", end="2023-01-01")
price = data.get("Close")

# Create a simple moving average crossover strategy
fast_window = 10
slow_window = 50
fast_ma = vbt.MA.run(price, fast_window)
slow_ma = vbt.MA.run(price, slow_window)

# Generate entry and exit signals
entries = fast_ma.ma_crossed_above(slow_ma.ma)
exits = fast_ma.ma_crossed_below(slow_ma.ma)

# Run backtest
portfolio = vbt.Portfolio.from_signals(
    close=price,
    entries=entries,
    exits=exits,
    init_cash=10000
)

# Analyze performance
print(f"Total Return: {portfolio.total_return():.2%}")
print(f"Sharpe Ratio: {portfolio.sharpe_ratio():.2f}")
print(f"Max Drawdown: {portfolio.max_drawdown():.2%}")

# Visualize results
portfolio.plot().show()

Architecture

VectorBT follows a modular design built on high-performance vectorized operations:

  • Base Layer: ArrayWrapper and core utilities for efficient pandas/NumPy integration
  • Data Layer: Unified data acquisition from multiple sources (Yahoo Finance, Binance, CCXT)
  • Analysis Layer: Technical indicators, signal generation, and statistical analysis
  • Portfolio Layer: Comprehensive backtesting engine with detailed record keeping
  • Visualization Layer: Integrated plotting capabilities with Plotly

The library is designed for maximum reusability across quantitative finance applications, enabling efficient testing of thousands of strategy variations simultaneously using vectorized computations.

Capabilities

Portfolio Simulation & Analysis

Core backtesting engine for strategy evaluation with comprehensive performance metrics, trade analysis, and risk management. Includes order execution simulation, position tracking, and detailed performance attribution.

class Portfolio:
    @classmethod
    def from_signals(cls, close, entries, exits, **kwargs): ...
    @classmethod  
    def from_orders(cls, close, orders, **kwargs): ...
    def total_return(self): ...
    def sharpe_ratio(self): ...
    def max_drawdown(self): ...

Portfolio Analysis

Data Sources & Management

Unified data acquisition and management system supporting multiple financial data providers with automatic synchronization, caching, and preprocessing capabilities.

class YFData:
    @classmethod
    def download(cls, symbols, **kwargs): ...
    def update(self): ...

class BinanceData:
    @classmethod
    def download(cls, symbols, **kwargs): ...

Data Management

Technical Indicators

Comprehensive library of technical indicators with factory pattern for creating custom indicators. Includes traditional indicators (MA, RSI, MACD) and advanced statistical measures.

class MA:
    @classmethod
    def run(cls, close, window, **kwargs): ...

class RSI:
    @classmethod
    def run(cls, close, window=14, **kwargs): ...

class MACD:
    @classmethod
    def run(cls, close, **kwargs): ...

Technical Indicators

Signal Generation & Processing

Advanced signal generation system for creating entry/exit rules with support for stop losses, take profits, and complex conditional logic. Includes random signal generators for strategy testing.

class RAND:
    @classmethod
    def run(cls, shape, prob=0.1, **kwargs): ...

class STX:
    @classmethod  
    def run(cls, entries, stops, **kwargs): ...

Indicators & Signals

Label Generation for Machine Learning

Look-ahead analysis tools for generating labels from future price movements, enabling machine learning model training on financial time series data.

class FMEAN:
    @classmethod
    def run(cls, close, window, **kwargs): ...

class TRENDLB:
    @classmethod
    def run(cls, close, **kwargs): ...

Label Generation

Records Management

Core record classes for managing and analyzing trading data including orders, trades, positions, and drawdowns with efficient sparse data structures.

class Records: ...
class MappedArray: ...
class Orders: ...
class Trades: ...
class Positions: ...
class Drawdowns: ...

Records Management

Generic Time Series Tools

Advanced tools for time series analysis including range analysis, drawdown detection, and data splitting strategies for backtesting and cross-validation.

class Ranges: ...
class RangeSplitter: ...
class RollingSplitter: ...  
class ExpandingSplitter: ...

Generic Analysis

Utility Functions & Configuration

Core utilities for configuration management, caching, plotting, and template systems. Includes asynchronous job scheduling and data transformation utilities.

vbt.settings: Config
def make_figure(**kwargs): ...
def cached_property(func): ...
class Config: ...

Utilities & Configuration

Types

# Core types available in vectorbt._typing
import numpy as np
import pandas as pd
from typing import Union
from enum import IntEnum

Scalar = Union[int, float, complex, np.number]
Array = np.ndarray  
SeriesFrame = Union[pd.Series, pd.DataFrame]
ArrayLike = Union[Array, SeriesFrame]

# Portfolio enums (from vectorbt.portfolio.enums)
class Direction(IntEnum):
    LongOnly = 0
    ShortOnly = 1  
    Both = 2

class OrderSide(IntEnum):
    Buy = 0
    Sell = 1

class OrderStatus(IntEnum):
    Filled = 0
    Ignored = 1
    Rejected = 2

class SizeType(IntEnum):
    Amount = 0
    Value = 1
    Percent = 2
    TargetPercent = 3

# Signal enums (from vectorbt.signals.enums)
class StopType(IntEnum):
    StopLoss = 0
    TrailStop = 1
    TakeProfit = 2

class FactoryMode(IntEnum):
    Entries = 0
    Exits = 1
    Both = 2
    Chain = 3

# Label enums (from vectorbt.labels.enums)
class TrendMode(IntEnum):
    Binary = 0
    BinaryCont = 1
    BinaryContSat = 2
    PctChange = 3
    PctChangeNorm = 4

Pandas Accessors

VectorBT extends pandas with the .vbt accessor providing direct access to all functionality:

  • .vbt.signals.* - Signal analysis methods
  • .vbt.returns.* - Return analysis methods
  • .vbt.ohlc.* - OHLC data specific methods
  • .vbt.px.* - Price data methods
# Example accessor usage
price.vbt.returns.sharpe_ratio()
signals.vbt.signals.first()