Getting Started

Installation

Install from PyPI:

pip install pyquaver

Or with uv:

uv add pyquaver

Optional extras

# Interactive notebooks with yfinance data and matplotlib
pip install pyquaver[notebooks]

# Development tools (pytest, ruff, mypy)
pip install pyquaver[dev]

# Sphinx documentation build
pip install pyquaver[docs]

Install from source

git clone https://github.com/maczg/quaver.git
cd quaver
pip install -e ".[dev,docs]"

Quick Example

Run a single-asset mean-reversion backtest:

import pandas as pd
from quaver.backtest import run_backtest

# Load your OHLCV data (columns: ts, open, high, low, close, volume)
candles = pd.read_csv("data.csv")

result = run_backtest(
    engine_name="mean_reversion",
    parameters={
        "fast_period": 20,
        "slow_period": 50,
        "threshold": 0.02,
    },
    candles=candles,
    instrument_id="AAPL",
    initial_capital=10_000.0,
)

print(result.summary())

Run a multi-asset pairs backtest:

from quaver.backtest import run_multi_asset_backtest

results = run_multi_asset_backtest(
    engine_name="pairs_mean_reversion",
    parameters={
        "instrument_a": "AAPL",
        "instrument_b": "MSFT",
        "spread_window": 60,
        "entry_z": 2.0,
        "exit_z": 0.5,
    },
    candles_map={
        "AAPL": candles_aapl,
        "MSFT": candles_msft,
    },
    initial_capital=10_000.0,
)

for iid, r in results.items():
    print(f"{iid}: {r.summary()}")

Available Strategies

  • mean_reversion — Dual moving-average mean reversion

  • regime_mean_reversion — Regime-based probabilistic mean reversion

  • vsa_stopping_volume — VSA stopping-volume reversal pattern

  • pairs_mean_reversion — Statistical arbitrage pairs trading