Skip to main content

No project description provided

Project description

ManifoldBT logo

ManifoldBT
Rust-powered backtesting engine for quantitative research

Discord

Website · Documentation · Examples


ManifoldBT compiles Python strategy definitions into an optimized Rust expression graph. Write strategies in a fluent Python DSL — execute them on a vectorized Rust engine.

Why ManifoldBT

  • Fast — 500K bars in ~26ms. 161x faster than vectorbt, 1000x+ faster than backtrader.
  • Expressive — fluent DSL with 30+ indicators, conditional logic, cross-asset references
  • Rigorous — Monte Carlo, walk-forward, parameter sweeps, lookahead detection, exposure diagnostics
  • Portablepip install, no Rust toolchain needed. Works on Python 3.9+.

Installation

pip install manifoldbt

With all extras (plotting, pandas, polars):

pip install manifoldbt[all]

Quick Start

import manifoldbt as mbt
from manifoldbt.indicators import close, ema
from manifoldbt.helpers import time_range, Interval, Slippage

fast = ema(close, 12)
slow = ema(close, 26)

strategy = (
    mbt.Strategy.create("ema_crossover")
    .signal("fast", fast)
    .signal("slow", slow)
    .signal("signal", mbt.when(fast > slow, mbt.lit(1.0), mbt.lit(-1.0)))
    .size(mbt.col("signal") * mbt.lit(0.25))
)

start, end = time_range("2022-01-01", "2025-01-01")

config = mbt.BacktestConfig(
    universe=[1],
    time_range_start=start,
    time_range_end=end,
    bar_interval=Interval.hours(12),
    initial_capital=10_000,
    execution=mbt.ExecutionConfig(allow_short=True, max_position_pct=0.5),
    fees=mbt.FeeConfig.binance_perps(),
    slippage=Slippage.fixed_bps(2),
    warmup_bars=30,
)

store = mbt.ingest(provider="binance", symbol="BTCUSDT", symbol_id=1,
                   start="2022-01-01T00:00:00Z", end="2025-01-01T00:00:00Z", interval="1h")
result = mbt.run(strategy, config, store)
print(result.summary())

Loading data

Bring your own data, or pull it from a built-in connector — both return a DataStore ready for mbt.run(...).

CSV — free on all tiers, auto-detects standard / MetaTrader 4 / MetaTrader 5:

store = mbt.import_csv("EURUSD_1m.csv", symbol="EURUSD", symbol_id=1,
                       interval="1m", asset_class="forex")

Exchange connectors — Binance, Bybit, Hyperliquid, dYdX, Bitstamp (free); Databento, Massive (Pro):

store = mbt.ingest(provider="binance", symbol="BTCUSDT", symbol_id=1,
                   start="2024-01-01T00:00:00Z", end="2025-01-01T00:00:00Z")

Or from the CLI:

manifoldbt import-csv data.csv --symbol EURUSD --symbol-id 1 --interval 1m
manifoldbt ingest --provider binance --symbol BTCUSDT --symbol-id 1 --start ... --end ...

Examples

# Example What it shows
00 Template Minimal starting point
01 Trend Following EMA crossover, volume filter, stop-loss
02 Mean Reversion EMA crossover with parameter sweep
03 Multi-Asset Momentum Cross-asset signals
04 Linear Regression Regression-based signal
05 Statistical Arbitrage Pairs trading, spread z-score
06 Full Visualization Tearsheet and charts
07 Walk-Forward Out-of-sample validation
08 2D Sweep Parameter grid heatmap
09 3D Surface Parameter surface plot
10 Monte Carlo Permutation-based robustness
11 Portfolio Multi-strategy portfolio
12 Diagnostics Lookahead & exposure safety checks
13 Stochastic Simulation SDE path simulation (GBM, Heston, …)
14 Multi-Timeframe Combining signals across timeframes
15 Cross-Exchange Signal on one venue, execute on another
16 Exogenous Data External series (e.g. hashrate) as a signal
17 Per-Venue Fees Per-venue funding & borrow costs
18 CSV Import Load OHLCV from CSV (standard / MT4 / MT5)

Performance

EMA(12/26) + RSI(14) on 500K synthetic 1-min bars (median of 5 runs):

Engine Time vs ManifoldBT
ManifoldBT (Rust) 26 ms 1x
vectorbt (NumPy) 4,094 ms 161x slower
backtrader (Python) ~1000x slower

Reproduce: python benchmarks/bench_vs_competitors.py --rows 500000 --runs 5

Documentation

Full API reference, indicator list, configuration guide, and best practices:

www.manifoldbt.com/docs/documentation.html

Community vs Pro

Community Pro
Output resolution Daily 1m, 5m, 15m, 1h
Monte Carlo 1K sims Unlimited
Walk-Forward - Anchored + Rolling
Parameter Stability - Yes
Crypto connectors (Binance, Bybit, Hyperliquid) Yes Yes
Databento & Massive connectors - Yes
Safety checks (lookahead, exposure) - Yes
Tearsheets & export - Yes

License

Apache 2.0 with Commons Clause. The source is available, free to use, modify and self-host. Reselling the software or offering it as a paid hosted service is not permitted. See LICENSE for the full text.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

manifoldbt-0.10.0-cp39-abi3-win_amd64.whl (8.4 MB view details)

Uploaded CPython 3.9+Windows x86-64

manifoldbt-0.10.0-cp39-abi3-musllinux_1_2_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ x86-64

manifoldbt-0.10.0-cp39-abi3-musllinux_1_2_aarch64.whl (7.9 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

manifoldbt-0.10.0-cp39-abi3-manylinux_2_34_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.34+ x86-64

manifoldbt-0.10.0-cp39-abi3-manylinux_2_28_aarch64.whl (7.6 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARM64

manifoldbt-0.10.0-cp39-abi3-macosx_11_0_arm64.whl (7.3 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

manifoldbt-0.10.0-cp39-abi3-macosx_10_12_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file manifoldbt-0.10.0-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: manifoldbt-0.10.0-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 8.4 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for manifoldbt-0.10.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 46af729695255350e929c4af5c21ea2a3b57b4a4f0b550eba027604e9b7b4244
MD5 5315c9fb2a47e06126cdae0f22dc4df5
BLAKE2b-256 416f1db50c3750c3f8a11b68f4e9db31fb8edf3593349191ff499c756c6c8980

See more details on using hashes here.

File details

Details for the file manifoldbt-0.10.0-cp39-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for manifoldbt-0.10.0-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 509fe35515fbee1ef6be6154f86b939a352a8c68870fdcd1b32022124ff44d92
MD5 03acba7d5521e0c95b22aa0e770b0d95
BLAKE2b-256 35dc3cf93b06041034c8f04eb6417f2add22dfa982d2522b49658ada5d58f2c9

See more details on using hashes here.

File details

Details for the file manifoldbt-0.10.0-cp39-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for manifoldbt-0.10.0-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 967a07e4fc7a87c32f8649e92bf82496de3037da2f1604331da1bbf29eae5c90
MD5 0566256bb37d8f5b1143f1c5cd4f194d
BLAKE2b-256 5de0200f25ab0c57a2cef6dc3952f37f63857cb303e0852ed1eaf4e2731781f8

See more details on using hashes here.

File details

Details for the file manifoldbt-0.10.0-cp39-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for manifoldbt-0.10.0-cp39-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 284e79d96b0c2538600ec2407b189ca093e737e0e5565ae9de658fa2e0d5de28
MD5 a9ee9d2f20b0032416431a35171cf59c
BLAKE2b-256 796c89ce863efe511fcf56d64d885d9ccb5177a4f89935ced274908c76b03956

See more details on using hashes here.

File details

Details for the file manifoldbt-0.10.0-cp39-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for manifoldbt-0.10.0-cp39-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3e2175c591764df8f536a708e1d853e05997a7ccf8624d95a7014eccc8054807
MD5 a289613a931eb8707fc1db54eb11477b
BLAKE2b-256 57a1e2e1313b996b45f2f7d079e8e87695ba130f276afceddff3758cefa007c7

See more details on using hashes here.

File details

Details for the file manifoldbt-0.10.0-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for manifoldbt-0.10.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3c6d2a0c9cdde06fe320dba1451338c79c9f4796ea72adb54bab4b38c8392b55
MD5 ba69775143304f6b10fd783c161b7b1b
BLAKE2b-256 cb4f5ee9eac56166c6635c214ab440785e5a08152dc2a70136eaa371a0ed340f

See more details on using hashes here.

File details

Details for the file manifoldbt-0.10.0-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for manifoldbt-0.10.0-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4e3785551f7dd6dcc4a52fe1c568364c544d55ef1f332702a1af5f822e5131f9
MD5 4973e393ab30a2f2f29021b8b92f9e09
BLAKE2b-256 06034b99b2054e8cdb8a57bda60f6ccd89a453c4b238f1e550a4cabcbd652fe1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page