sifting/io
Backtesting & strategy system

Backtesting and strategy testing systems

Backtest systematic strategies on tick and OHLCV history, then feed the same canonical signal to live consumers with one credential.

Tickand OHLCV history
1:1backtest-to-live parity
Multi-venuefair price
How it fits together

One feed in, your product out

Markets you need
CryptoForexStocks
SiftingIOOne JSON schema. One key. REST and WebSocket.
What you buildYour backtest and live engine

Backtesting systems have one job that everything else depends on: the data the strategy sees in research has to be the data it will see in production. When those diverge, a backtest becomes a story about a market that never existed, and the live results quietly disappoint. Most of that divergence comes from sourcing research and production data differently.

The problem

Strategies that look profitable in backtest diverge live because research and production read different prices, with subtle differences in venue selection, aggregation, and timestamp semantics.

How SiftingIO handles it

SiftingIO provides one canonical mid, bid, and ask across multiple venues with consistent timestamps. The same WebSocket stream powers research backtests, replayed from history, and live consumption, so the function under test is identical end to end.

The same series in research and production

Here the historical tick and OHLCV endpoints replay the exact canonical mid, bid, and ask that the live WebSocket publishes. The function under test reads an identical price series whether it runs over history or over the live stream, so a result in backtest carries a real expectation into production rather than an artifact of two feeds that almost agree.

Aggregated prices that do not flicker

A backtest run against a single venue inherits that venue's outages and quirks, and the strategy quietly learns to trade noise that will not be there tomorrow. SiftingIO aggregates each market across multiple sources into one fair price, so when an individual source goes quiet the series stays stable. The signal you fit is the market, not one venue's gaps.

Attribution when a strategy misbehaves

When a live strategy drifts from its backtest, the first honest question is what data it actually saw. Audit logs record every read with a timestamp, so you can reconstruct the exact inputs a strategy consumed and attribute a divergence to the data or rule it out, instead of blaming the model by default.

Start building

From zero to live data in three steps

  1. 1

    Create a free API key

    Sign up and generate a key. The free tier covers every market, with no sales call to get started.

  2. 2

    Subscribe to your markets

    Add the markets your product needs. Bundle discounts apply automatically once two or more Pro markets are active.

  3. 3

    Call REST or stream over WebSocket

    Pull snapshots and history over REST, or subscribe to live ticks over WebSocket. Same schema and key, in Go, Python, or TypeScript.

FAQ

Backtesting & strategy system: common questions

Can I backtest on the same data my live strategy consumes?

Yes. Historical OHLCV and tick endpoints replay the exact canonical mid, bid, and ask that the live WebSocket stream publishes, so a strategy under research and the same strategy in production read an identical price series. That removes the usual backtest-to-live drift.

What history depth is available for backtesting?

Crypto and forex ship tick-level and OHLCV history over REST, with bar intervals from one minute upward. You pull history with the same credential and schema you use for live data.

How do you keep prices consistent across venues?

SiftingIO aggregates each market across multiple sources and publishes one fair price with consistent timestamps. If a single source drops out, the aggregate stays stable, so a backtested signal does not jump when one input goes quiet.

Can I attribute a signal to a specific data read?

Audit logs on Pro and above record every credential read with a timestamp, so research and compliance can attribute a given signal to a specific feed read.

Which plan fits a backtesting system?

Most teams run Crypto Pro plus Forex Pro for cross-asset signals, which auto-bundles into a discount once two or more Pro markets are active. You can add US stocks later under the same credential.

Same data, same SLA, same schema

Build this on SiftingIO.

Start on the free tier, mix asset classes when you need to, and reach out if you want a closer look at how a similar team set up their stack.