vectorbt
High-performance vectorized backtesting with parameter optimization, portfolio simulation, and rich performance metrics
By agiprolabs · 375 installs
npx skills add agiprolabs/claude-trading-skills --skill vectorbt
Source repository · Upstream listing
Vectorized Backtesting with vectorbt
Overview
vectorbt is a Python library for vectorized backtesting — running strategy simulations using NumPy/pandas array operations instead of bar by bar loops. This makes it 100–1000x faster than event driven frameworks (backtrader, zipline), enabling parameter optimization across thousands of combinations in seconds.
Key strengths:
Blazing speed via NumPy vectorization
Built in parameter grid search and optimization
50+ built in performance metrics (Sharpe, Sortino, Calmar, max drawdown, profit factor)
Rich plotting (equity curves, drawdowns, trade markers, heatmaps)
Native pandas integration — your data stays in DataFrames throughout
Installation
vectorbt pulls in pandas, NumPy, and Plotly automatically. For technical indicators, also install pandas ta:
Core Concepts
1. Signals — Boolean Entry/Exit Arrays
Strategies in vectorbt are expressed as boolean pandas Series (or arrays) indicating where to enter and exit positions:
vectorbt resolves conflicting signals automatically (you can't enter while already in a position).
2. Portfolio — The Backtesting Engine
vbt.Portfolio.from signals() is the primary backtesting function. It takes price data and entry/exit signals, simulates trades, and computes performance:
3. Metrics — Built in Performance Analysis
4. Parameter Optimization — Grid Search in Seconds
Pass arrays instead of scalars to test many parameter combos simultaneously:
Basic Workflow
Step 1: Load OHLCV Data
For Solana tokens, fetch data via the birdeye api skill and load into a DataFrame.
Step 2: Compute Indicators
Step 3: Generate Entry/Exit Signals
Step 4: Run Backtest
Step 5: Analyze Results
Key Portfolio Parameters
Parameter Description Example
close Price series (pd.Series or DataFrame) df["close"]
entries Boolean entry signals fast slow
exits Boolean exit signals fast < slow
init cash Starting capital 10 000
fees Fee per trade (fraction) 0.003 (0.3%)
slippage Slippage per trade (fraction) 0.005 (0.5%)
size Position size 0.95
size type How to interpret size "percent" , "amount" , "value"
freq Data frequency "1h" , "4h" , "1d"
direction Trade direction "both" , "longonly" , "shortonly"
accumulate Allow adding to positions False
sl stop Stop loss level (fraction) 0.05 (5%)
tp stop Take profit level (fraction) 0.10 (10%)
Performance Metrics
Returns
total return() — cumulative return over the period
annualized return() — annualized compound return
daily returns() — Series of daily returns
Risk
max drawdown() — maximum peak to trough decline
annualized volatility() — annualized standard deviation of returns
value at risk() — VaR at specified confidence level
Risk Adjusted
sharpe ratio() — excess return per unit volatility
sortino ratio() — excess return per unit downside deviation
calmar ratio() — annualized return / max drawdown
omega ratio() — probability weighted gain/loss ratio
Trade Statistics
trades.win rate() — fraction of profitable trades
trades.profit factor() — gross profit / gross loss
trades.expectancy() — average P&L per trade
trades.avg winning trade() — mean profit on winners
trades.avg losing trade() — mean loss on losers
trades.count() — total number of completed trades
Parameter Optimization
Grid Search
Walk Forward Validation
Always validate optimized parameters on out of sample data:
See references/optimization guide.md for detailed walk forward methodology and overfitting prevention.
Crypto Specific Considerations
24/7 Markets
Crypto markets never close. Use hourly or minute based frequencies, not business day frequencies:
Realistic Fees
DEX swaps on Solana typically cost 0.25–1% including AMM fees. CEX spot fees are 0.05–0.1%.
Slippage
Low liquidity tokens can have 1–5% slippage. Always model this:
Short History
Many tokens have less than 1 year of data. Be cautious about annualizing metrics from short samples.
Common Strategy Patterns
EMA Crossover
RSI Mean Reversion
Bollinger Band Breakout
Stop Loss and Take Profit
Related Skills
pandas ta — Technical indicator computation (feeds vectorbt signals)
birdeye api — Fetch Solana token OHLCV data for backtesting
trading visualization — Advanced chart generation for backtest results
portfolio analytics — Deeper portfolio level risk/return analysis
position sizing — Optimal position sizing methodology
risk management — Portfolio level risk guardrails
regime detection — Market regime awareness for adaptive strategies
Files
References
references/api guide.md — Complete vectorbt API reference for Portfolio, indicators, plotting, and data loading
references/optimization guide.md — Grid search, walk forward validation, overfitting prevention, and optimization best practices
Scripts
scripts/backtest example.py — Three strategy backtest comparison using synthetic data (EMA crossover, RSI mean reversion, Bollinger breakout)
scripts/parameter sweep.py — EMA crossover parameter grid search with walk forward validation