Your fills decide the result. Researcher reads them off the tape.
A bar tells you where price went. It does not tell you who was buying, what the quote was when your order arrived, or whether the stop or the target printed first inside it. Researcher adds the layer that answers those three questions from the trades themselves, and the GPU to search it at the scale it deserves. Everything in Pro is included.
What the license unlocks
Six things ship, and they are about execution: what the market was doing at the moment your order would have been there, read from the trades and the book rather than assumed from the bar.
The tape, ingested
ticksingest_trades pulls a venue's public trade archive into the store, one Arrow file per UTC day, for the days you name and nothing else. Bybit spot and Binance spot ship with it; your own tape comes in through the same import path as bars.
Order flow by aggressor side
order flowBars rebuilt from the tape carry what an exchange's bars do not: buy volume and sell volume kept apart, VWAP, the number of trades, down to one second. A strategy can read who was hitting and who was lifting, instead of inferring it from a close.
Real BBO at every bar
quotesattach_quotes reduces a venue's public order-book archive to the best bid and ask per bar, so a fill is priced at the quote that stood there and not at a flat slippage guess. Order-book archives are heavy, roughly 200 MB a day per symbol; the reduction runs once and is stored.
Fills resolved on the tape
executionfill_resolution="ticks" runs a bar backtest whose stops and targets are resolved on the trades inside the bar. When one bar contains both levels, the engine reads which one printed first instead of assuming the favourable order, which is the assumption that quietly flatters most bracket strategies.
How execution is modelled →GPU acceleration
cudadevice="auto" moves a large grid onto your NVIDIA card and deliberately leaves small ones on the CPU, where the CPU is genuinely faster. In f64 the results are bit-identical to the CPU path, asserted metric by metric rather than within a tolerance. Decisive on the tape, where one combination costs far more than on minute bars.
Where the GPU wins and loses →L2/L3 book, queue position, latency
order bookingest_book stores Bybit's public order-book archive by price level, up to 500 on the days it is published at that depth, one Arrow file per UTC day. A strategy reads it like a bar column, the size, cumulative depth and imbalance at any level, through bt.book. A resting order waits behind the size the book showed at its price when it was posted, and where a market is stored order by order with ingest_mbo, it is served at its exact place in the queue. Orders and cancels can carry a latency, and the trade clock runs the simulation one print at a time.
Where Pro stops
Pro is the right license for most research, and this table is written so that you can tell whether yours is among the rest.
If your strategy trades on closes, holds for hours and sizes in a way where a tick of slippage is noise, Pro answers every question you have and Researcher answers questions you are not asking. Buy Pro.
Researcher is for the strategies where the fill is the strategy: brackets tight enough that the order of two prints inside one bar decides the trade, signals built on who was aggressing, quotes that move faster than the bar that summarises them.
- +Unlimited parameter sweeps and Monte Carlo
- +One-second bars and one-second timeseries output
- +Safety checks, built-in walk-forward, cross-exchange backtesting
- +Databento and Massive connectors
- +Everything Community ships: the engine, 104 indicators, multi-asset, MCP server, tearsheets
| Capability | Pro | Researcher |
|---|---|---|
| Engine resolution | 1s bars | Tick, BBO |
| Parameter sweeps and Monte Carlo | Unlimited | Unlimited |
| Safety checks, walk-forward, cross-exchange | ||
| Databento and Massive connectors | ||
| Tape ingestion (Bybit, Binance public archives) | ||
| Order flow by aggressor side | ||
| Real BBO at every bar | ||
| Tick-resolved fills inside bar backtests | ||
| GPU acceleration | ||
| L2/L3 book, queue position, latency |
Three ways to pay for the same license
Identical features either way. The only difference is whether you would rather rent the tape by the month, by the year, or own it.
The license follows the subscription. Cancel and it runs to the end of the period you already paid for, then the library drops back to Community on its next check. Your installs stay where they are, and nothing you have already computed is touched.
The same license, ten months paid for twelve. One invoice a year, which is what an expense line prefers.
A permanent activation code, tied to a single user, with 24 months of engine updates included. After that the software keeps working exactly as it is, and later updates are offered at half the lifetime price. Break-even against the monthly plan: fifteen months.
Activation is one command, once
Checkout hands you an activation code on the confirmation page. You run it once, and the license is fetched and stored locally from there on. The same code carries Pro and Researcher together: there is no second key to manage.
Nothing about the install changes. pip install manifoldbt is the same package on every tier, and the same code runs on all of them. The license only decides how far it is allowed to go.
The tape comes in the same way bars do: you name a venue, a symbol and a range, and the store keeps one file per day. A bar backtest then opts into tick-resolved fills with one keyword.
# Once, after checkout. The code is on your confirmation page.
manifoldbt activate "your-activation-code"import manifoldbt as bt
# The public trade archive of a venue, one Arrow file per UTC day.
# Nothing is fetched that you did not ask for.
store = bt.ingest_trades("bybit", "BTCUSDT", symbol_id=1,
start="2026-08-25", end="2026-08-31")
# A bar backtest whose fills are read on the tape: which of the stop
# or the target went first is looked up, not assumed.
result = bt.run(strategy, config, store, fill_resolution="ticks")FAQ
Stop assuming the fill
A strategy that survives its own fills, read off the trades that were actually there, is a different object from one that won on a bar's close. Researcher is what it costs to tell those two apart.