Bring your signals. See how they'd really fill.

Candles hide. Trades don't.

Replay your orders against every trade on Binance perpetuals: 1,000 variants over 90 days in 17 seconds and 80 MB on a laptop. pandas needed 7.5 GB for the same run.

How we measured
Trades are synthetic, generated in Binance's archive format. Method

Deptho Pro, from $290/year pip install deptho

Works with orders from any backtester, pandas or your own code.

The deeper the cap, the fewer engines survive.

Same 90 days of trades, same 10,000 market orders. Each engine gets a hard memory limit and no swap. · Methodology

Replay 90 days of tick data in 512 MB of memory. pandas, Polars and DuckDB ran out of memory at that cap. Deptho Pro replayed 10,000 orders across 90M trades in 1.4 seconds, warm or cold.

Engine2 GB cap1 GB cap512 MB cap
pandas + ParquetOut of memoryOut of memoryOut of memory
Polars + ParquetOut of memoryOut of memoryOut of memory
DuckDBOut of memoryOut of memoryOut of memory
Deptho Pro0.11 s / 1.05 s1.33 s / 1.24 s1.38 s / 1.31 s
  • pandas + Parquet

    512 MB cap
    Out of memory
    1 GB cap
    Out of memory
    2 GB cap
    Out of memory
  • Polars + Parquet

    512 MB cap
    Out of memory
    1 GB cap
    Out of memory
    2 GB cap
    Out of memory
  • DuckDB

    512 MB cap
    Out of memory
    1 GB cap
    Out of memory
    2 GB cap
    Out of memory
  • Deptho Pro

    512 MB cap
    1.38 s / 1.31 s
    1 GB cap
    1.33 s / 1.24 s
    2 GB cap
    0.11 s / 1.05 s

With no cap, Deptho Pro replays the same 90 days in 0.11 seconds warm. See the full results, including where Polars wins.

Replay of 10,000 market orders across 90 days / 90,000,000 Binance-format trades under a hard memory cap (cgroup, swap off), each engine on its own idiomatic storage. Cells show warm / cold time. Trades are synthetic, generated in Binance's archive format. Intel(R) Xeon(R) Processor @ 2.10GHz, 4 CPUs, 16 GB RAM, Ubuntu 24.04.5 LTS.

On real data: 30 days of BTCUSDT perp trades (36M) on a 16 GB MacBook Air: Deptho Pro replayed 10,000 orders in 0.016 s (warm) using 76 MB, where pandas used 3.0 GB.

How Deptho Pro works

  • Sync. dpp.sync pulls the daily trade files you don't have yet from Binance's public archive, converts each once, and appends it to one memory-mapped dataset. Adding a day took 0.18 s. An interrupted sync repairs itself on the next run.
  • Replay. Pass a DataFrame of market orders. Each one fills at the VWAP of the trade prints that followed it on the same side, lookahead-safe by default. Book depth and queue position aren't modelled yet; depth-aware fills are next.
  • Local. The license is checked offline, so Pro runs on air-gapped machines. Nothing about your data or strategy leaves your machine.
import deptho_pro as dpp

# Download new days and append them to one memory-mapped dataset
tape = dpp.sync("BTCUSDT", "2026-07-01", "2026-09-30")

# orders: DataFrame of side, qty, indexed by time
fills = tape.replay(orders, fill_model="trade_prints")
bars = tape.bars("1s")

Free and open source

See below the surface of every backtest.

Funding is easy to leave out of a perp backtest, or to charge to the wrong position. The open-source deptho library charges it to the position you actually held at each funding time, alongside fees, so you see net against gross. You get drawdowns, rolling Sharpe and Sortino, and rolling alpha in one report. Lookahead-safe by default: a position decided at a bar's close earns from the next bar.

pip install deptho
python -m deptho.demo

The demo downloads 90 days of BTCUSDT perpetual data from Binance's public archive to your machine, runs a sample trend strategy, and opens the report. Add --synthetic to run it offline.

Deptho tearsheet header: KPI tiles (net return, Sharpe, Sortino, max drawdown, funding, execution cost) and net vs gross equity against the benchmark

Sample EMA trend strategy on real BTCUSDT perp data, Jul–Sep 2026. It loses money; fees cost it 10% of equity. Seeing why is the point.

import deptho as dp

pnl = dp.pnl_from_positions(prices, positions, funding=funding_rates, fee_bps=5)
report = dp.tearsheet(pnl=pnl, benchmark=prices.pct_change(), fills=fills)
report.show()                  # inline in Jupyter / VS Code, or opens a browser tab
report.save("report.html")     # one self-contained file, works offline

Pricing

Draft pricing, not final.

Pro Team

$199/ seat / month

Minimum 3 seats ($597/month).

Crypto funds and desks. Seats are counted per person.

Subscribe

Academic

Free

Pro Individual for non-commercial research and teaching.

Apply with your institution email

Open Source

Free

The deptho library: perp tearsheets with funding and fee attribution, plus the demo. Apache-2.0.

pip install deptho

Early buyers keep their price, including when order book replay (BookBuilder) ships.