Python Strategy Report: Keltner ADX Volatility Breakout Strategy
Strategy: Keltner ADX Volatility Breakout Strategy
Backtest Window: 2023-08-29 to 2026-08-27
Assets: QQQ, AAPL, MSFT, NVDA | Initial Equity: $100,000
PYTHON Replication Script
import yfinance as yf
import pandas as pd
import vectorbt as vbt
# Set parameters
symbols = ['QQQ', 'AAPL', 'MSFT', 'NVDA']
start_date = '2023-08-29'
end_date = '2026-08-27'
# Download historical data
prices = yf.download(symbols, start=start_date, end=end_date)['Adj Close']
# Calculate indicators
ema20 = prices.ewm(span=20).mean()
upper_band = prices.rolling(window=20).mean() + (prices.rolling(window=20).std() * 1.5)
lower_band = prices.rolling(window=20).mean() - (prices.rolling(window=20).std() * 1.5)
adx = vbt.ADX.run(prices, window=14).adx
# Define entry and exit signals
long_entry = (prices > upper_band) & (adx > 25)
long_exit = prices < ema20
# Create portfolio
portfolio = vbt.Portfolio.from_signals(prices, long_entry, long_exit, init_cash=100000)
# Print portfolio stats
print(portfolio.stats())
← Back to Full Article