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 →