Research SDK Products

Quantitative research infrastructure for systematic trading desks.

A C++ execution core and Python strategy API verified against a formal execution spec — local, deterministic, and built to defend a research process under real scrutiny.

Every fill is priced by a published execution spec and checked against a 267-check conformance suite.

From on_bar to a reproducible result.

Python strategy on_bar
Backtest engine synthetic ticks · order matching · fills
DefaultExecutionModel commission · slippage · spread · swap
Portfolio timeline multi-asset, union alignment
BacktestResult
Metrics / console report Monte Carlo bootstrap equity curves export_html_report() save_result()→ .reamer file

Every fill on the way to that result is priced by the same published execution spec the 267-check conformance suite verifies against.

The execution core itself runs single-threaded by design — on_bar calls into multi-threaded or GPU-accelerated model code exactly as it would in any other Python script.

Everything the loop needs. Nothing it doesn't.

Implementation
01

Python Research SDK

Write strategies in ordinary Python. NumPy, Pandas, AI-generated code — everything works naturally, without learning a proprietary language.

02

Connect Any Data Source

Pull bars straight from whatever you already run — a database, an internal service, a feed like kdb+ — and hand them directly to a backtest, no file ever written to disk. A data loader is a plain function that fetches bars and calls one of two functions: write them to a reusable local file, or pass them straight into the backtest run. The Connectors SDK Guide walks through four complete, copy-and-adapt implementations — Databento, Alpaca, Massive.com (Polygon.io), and Parquet — full code inline, not a bundled feature, plus the direct database-to-backtest pattern above. A custom loader for your own source is deliberately simple to write, not something you wait on us to support. Read the Connectors SDK Guide →

Scope
01

Exogenous Data

Attach arbitrary JSON to any timestamp — earnings, macro releases, sentiment, anything your research depends on — resolved to the latest value actually known as of that bar, so a strategy can never see a fact before it happened.

02

Multi-Asset Portfolio

Run one strategy across dozens of instruments with synchronized timelines and a single portfolio equity curve.

Execution Model
01

Monte Carlo

Risk-of-ruin, drawdown percentiles, probability-of-loss — computed from bootstrapped equity curves over actual trade returns.

02

Deterministic Synthetic Ticks

Same seed, same intra-bar tick path, every run — including which side of a same-bar bracket collision fires first.

03

Full Execution Cost Model

Commission, slippage, spread, and swap all modeled explicitly by DefaultExecutionModelConfig, not assumed.

Verified, not asserted.

CapabilityBacktraderQuantConnect LEANreamer_py
Published execution specification Partial — documentation, not a formal spec EXECUTION_SPEC.md
Behavioral conformance suite Internal, not published 267 tests
Deterministic intra-bar tick model Limited Depends on data resolution ✓ seeded, reproducible
Execution semantics explicitly documented Partial Partial
Throughput — minimal callback
50-ticker portfolio, steps/s
122 131 25,899 (212x / 198x)
Throughput — realistic breakout
50-ticker portfolio, steps/s
108 103 3,637 (33.8x / 35.3x)

Same machine, same synthetic data, same 20-bar Donchian breakout logic in all three engines. Multipliers are reamer_py vs. Backtrader / vs. QuantConnect LEAN. Full methodology, single-ticker figures, and the 500K/5M-bar tiers: see the numbers.

A complete strategy, start to result.

import reamer_py
from engine.orders import buy_market, close_position

class MyStrategy:
    lookback = 1
    def on_bar(self, data):
        tv = data["SPX"]
        if not tv.valid:
            return None
        if tv.close[-1] > tv.close[-2] and tv.position.qty == 0:
            return buy_market(1.0, ticker="SPX")
        if tv.close[-1] < tv.close[-2] and tv.position.qty > 0:
            return close_position(ticker="SPX")

reamer_py.load_csv("data.csv", "SPX")
result = reamer_py.run_backtest(data=["SPX"], strategy=MyStrategy())

Real, runnable code — trimmed from the full quickstart, which also covers execution config, save_result(), and the HTML report.

Scope and fit.

Designed for: mid-frequency OHLCV strategies — intraday to multi-day holding periods, across forex/CFD, futures, and equities. See the docs for full scope details.
Not designed for: order-book and options strategies — no L2/L3 depth data or real tick data for high-frequency/order-book strategies, and no implied vol, Greeks, or exercise/assignment modeling for options.

Per-seat, perpetual licenses.

No subscription, no forced renewal, no self-serve checkout. Contact us for pricing, multi-seat/invoicing terms, or a free time-limited test license to evaluate reamer_py first.