Skip to content
All work
Data & Finance2025

Quantitative Strategy Backtester

A bar-by-bar backtesting engine over 100+ tickers that reports Sharpe, max drawdown, and the rest — without the CSV-and-for-loop tax.

PythonPandasNumPyParquetStreamlityfinance

The problem

Backtests are easy to write and easy to get quietly wrong — usually by leaking future information or by being too slow to test more than one idea a day.

How it works

The engine walks price history bar by bar so a strategy only ever sees data it would actually have had, then computes the performance metrics that matter end-to-end: Sharpe ratio, max drawdown, returns.

The data layer is where the speed comes from. Historical data is stored as Parquet and processed with vectorised Pandas/NumPy operations instead of Python loops over CSVs, which is the difference between iterating on a strategy and waiting on one.

A Streamlit front-end makes the results explorable rather than a wall of console output.

Outcomes

  • Handles historical data for 100+ tickers in a single run.
  • Substantially lower I/O overhead than a naive CSV/loop pipeline on large datasets.
  • Point-in-time correct by construction — no lookahead leakage.