Quantitative
Python
Strategies
Backtesting frameworks, walk-forward analysis, and quantitative research methods. Reproducible Python code for systematic trading.
Modules
What's Coming
Planned
Walk-Forward Analysis
Rolling window optimization with out-of-sample testing. Avoid overfitting with proper validation methods.
Planned
Event-Driven Backtesting
Tick-by-tick simulation with realistic order fills, slippage modeling, and transaction cost analysis.
Planned
Portfolio Optimization
Risk parity, mean-variance, and hierarchical risk parity methods. Multi-asset allocation frameworks.
Preview
Code Examples
Walk-Forward Analysiswalkforward.py
import pandas as pd
import vectorbt as vbt
def walk_forward_analysis(
prices: pd.Series,
in_sample_days: int = 252,
out_sample_days: int = 63,
param_grid: dict = None
):
"""
Rolling walk-forward optimization.
Train on in_sample, validate on out_sample.
"""
results = []
for start in range(0, len(prices) - in_sample_days - out_sample_days, out_sample_days):
# Split windows
train = prices.iloc[start:start + in_sample_days]
test = prices.iloc[start + in_sample_days:start + in_sample_days + out_sample_days]
# Optimize on training data
best_params = optimize_strategy(train, param_grid)
# Validate on test data
oos_return = backtest_strategy(test, best_params)
results.append({
"period": start,
"params": best_params,
"oos_return": oos_return
})
return pd.DataFrame(results)Event-Driven Backtestevent_backtest.py
from dataclasses import dataclass
from typing import Optional
import numpy as np
@dataclass
class Order:
symbol: str
side: str # 'buy' or 'sell'
quantity: float
order_type: str = 'market'
limit_price: Optional[float] = None
class EventDrivenBacktest:
def __init__(self, initial_capital: float = 100_000):
self.capital = initial_capital
self.positions = {}
self.trades = []
def on_bar(self, timestamp, ohlcv: dict):
"""Process each bar - override in strategy."""
pass
def submit_order(self, order: Order, current_price: float):
"""Execute order with slippage model."""
slippage = self._calculate_slippage(order, current_price)
fill_price = current_price * (1 + slippage)
cost = order.quantity * fill_price
self.capital -= cost
self.positions[order.symbol] = self.positions.get(order.symbol, 0) + order.quantity
self.trades.append({
"symbol": order.symbol,
"price": fill_price,
"quantity": order.quantity,
"slippage": slippage
})Get Notified When We Launch
Be the first to access quantitative Python frameworks, backtesting tools, and optimization methods.
No spam. Unsubscribe anytime.
Looking for TradingView tools? Browse the PineScript Library →