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.12.0-cp39-abi3-win_amd64.whl (8.3 MB view details)

Uploaded CPython 3.9+Windows x86-64

manifoldbt-0.12.0-cp39-abi3-musllinux_1_2_x86_64.whl (8.4 MB view details)

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

manifoldbt-0.12.0-cp39-abi3-musllinux_1_2_aarch64.whl (7.8 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

manifoldbt-0.12.0-cp39-abi3-manylinux_2_34_x86_64.whl (8.2 MB view details)

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

manifoldbt-0.12.0-cp39-abi3-manylinux_2_28_aarch64.whl (7.5 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.9+macOS 11.0+ ARM64

manifoldbt-0.12.0-cp39-abi3-macosx_10_12_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: manifoldbt-0.12.0-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 8.3 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.12.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a95d2559d436ef269ec5b429b57e1aaf9616740e21a9aa858468d116794c92d7
MD5 6634a56a5ae0ec8c180536367dab20b4
BLAKE2b-256 f0d0d1e98efc521ebb7c04a82a967f8fb768eb67ee27f3064099919f36871aa9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for manifoldbt-0.12.0-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 eb65871b9c29f577288c1c6256c299d3a48bc75ea2725bdb50798e94027f2c6a
MD5 9e4f8b5b579ea2f90ba3f81f05fd2932
BLAKE2b-256 ff9cf2c01a70cb9c2bb50b33d309cd9a720220cd634733e053e5bbf78fed9f47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for manifoldbt-0.12.0-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0443f886fc60808a934c360caabb3b95504cab24a94082c14d4337ae83412bb5
MD5 755a5293f2d69b81a702f83ba264220a
BLAKE2b-256 a1cc7f7ac005a1e3084f54bffca65d41cf7abc9415fe631e824bdde00b86d496

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for manifoldbt-0.12.0-cp39-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 8b184f34c9f422eba5420ee3bde572d60a2cff0de1167cb08187374b97483284
MD5 023a61d0d090aef4bc42bedfdc71cdfb
BLAKE2b-256 ebfef908c1fbfe267b4f5cc492ca25b302a3e70dbe9d84f13d3df71d993910d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for manifoldbt-0.12.0-cp39-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9d432e21d0c187e9e6ed39bf151b64385fb1e50aae058a127c329b9bd31a17ed
MD5 7ab870bc6bb9791d028a9736e8137f66
BLAKE2b-256 7c031eb4c2fc8642eeec989f3e1c2c2484e86fef09ca8752b0f9ab669aaebc5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for manifoldbt-0.12.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 629a909ad6acaf28c7616ac08dee26da6ceff47f711656a68314835b0ee336a6
MD5 437a4b0e3bdfb7afe0ff305cf0c57de5
BLAKE2b-256 900d169ac63b675fe195045738416a1a7ebf561dbe0a05c36219a9041c8bb85f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for manifoldbt-0.12.0-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 deb954f6809791dd3ac24c48c6810586262a242c123529ea245444536bddb5b2
MD5 24b8e2483e2f11d3ce035c8989322ef8
BLAKE2b-256 d5c6a4e53c5a34cc32c3107b070ba965e2870670dc94e0ed41960201ed6f3724

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