Website · Docs · Quick start · Benchmarks · Examples · Pricing · Discord
Python backtesting with a Rust engine. You describe a strategy once in a Python DSL; signals, fills, fees, funding and equity then all run in Rust, fast enough to sweep whole grids and strict enough that every fill rule is written down and tested.
| You want to | Go to | Start with |
|---|---|---|
| Run a backtest | manifoldbt | pip install manifoldbt |
| Have an agent write the strategy | MCP docs | Connect https://mcp.manifoldbt.com/docs/mcp, no key and nothing to install |
| Run the research method with an agent | quant-research-skill | claude plugin marketplace add Jimmy7892/quant-research-skill |
| Read working strategies first | examples | python examples/13_stochastic_simulation.py |
| Walk through it in the browser | notebook | Strategy, sweep, walk-forward, Monte Carlo |
| Check our numbers | benchmarks | Fork the repo and press Run workflow |
Community is free, with no account, no key and no compiler. Wheels for Linux, Windows and macOS on Apple Silicon.
| Your data | What decides a fill | See it run |
|---|---|---|
| Bars | OHLC, with the unfavourable path assumed: the stop beats the target, a gap fills at the open | 26_fill_costs.py |
| Options | Contracts that expire and settle at intrinsic value | 23_deribit_options.py |
| Trades inside each bar | The prints themselves, in the order they happened | 27_bars_vs_tape.py |
| Trade clock | A queue and a latency, one simulation row per print | 28_trade_clock_market_maker.py |
| L2 order book | Your estimated place in each price level's queue | 31_dsl_market_maker.py |
| Market by order | Your exact place in the queue, order by order | 32_mbo_queue_maker.py |
Connectors for Binance, Bybit, Hyperliquid, dYdX, Bitstamp, Deribit, Yahoo Finance, London Strategic Edge, Databento and Massive, or bring your own CSV. Trades and order books are part of Researcher.
A backtest is a claim. Each of these runs on your machine, against the wheel you installed.
- Fill rules. Written out and pinned by tests, the pessimistic one wherever a choice existed.
- Parity. Entry price, exit price and exit reason asserted against vectorbt, on the wheel published to PyPI.
- Look-ahead. Corrupt every bar after a cut point and require the equity before it to come back bit-identical.
- Replay. Every result carries a manifest;
mbt.replay(manifest, strategy, store)regenerates the run. - This page. The surface above is a real sweep, and it runs on a fresh install.
A reproduction showing a fill the engine gets wrong is the most useful report this project can receive. Agents can read llms.txt. Research software, not financial advice.