Tick-by-tick futures backtesting · live since 2026

A full year of tick-by-tick
order flow — in seconds.

Replay an entire year of footprint-grade order flow before your coffee cools. Sweep hundreds of parameter sets in a single job, validate the winner, then export it straight to NinjaTrader or TradingView and trade it live.

01 · Speed

A full year of ticks, replayed in seconds.

This is the whole point. A tick-by-tick, footprint-grade replay of an entire year of futures data returns before you've switched tabs — so you iterate at the speed of thought, not the speed of a progress bar.

Parametric sweeps

Declare ranges on your strategy's variable_params; the engine cartesian-products them and runs each combo deterministically. Results land in a single SQLite store ready for cross-run analysis.

Parallel execution

A multi-process worker pool runs the bar loop across cores, and per-trade chart rendering fans out the same way. Orderflow backtests with thousands of trades and PNGs finish in seconds, not minutes.

Persistent bar cache

Per-day bars are stored with mtime + MD5 invalidation. A warm run skips CSV → parquet → bar reconstruction entirely and goes straight to the strategy loop.

1 full year, tick-by-tick
12s wall-clock on a stock VPS
10,000+ annotated trade PNGs, in parallel

02 · Optimization

Sweep the whole grid
in a single job.

Optimization shouldn't mean babysitting a hundred runs. Declare a range on any knob and the engine cartesian-products them, runs every combo deterministically, and lands the results in one place — ranked, charted, and ready to compare.

  • Declare, don't script. Put min / max / step on a parameter and the sweep builds itself — no loop to write, no jobs to queue by hand.
  • One job, every combination. Hundreds of parameter sets fan out across worker cores and finish together, not one after another.
  • Compare at a glance. Equity curves, P&L and drawdown line up across the whole grid so the best set is obvious, not buried.
  • Reproducible by design. Every run records the exact parameters it used — re-run any cell and get the same trades back.
strategies/my_strategy.py
class MyStrategy(BaseStrategy):
    name = "vwap_pullback"

    variable_params = {
        "vwap_window":   {"default": 60, "min": 15, "max": 240, "step": 15},
        "stop_loss_pts": {"default": 20, "min": 5,  "max": 80,  "step": 5},
    }
    # → 16 × 16 = 256 combos, one job, ranked on submit.

The same declaration auto-renders as sliders in the dashboard — the schema is the UI. No separate config form to maintain, ever.

03 · Visual feedback, automatic

A chart for every trade.
Without lifting a finger.

Tick the box, run your backtest, walk away. Each trade comes back as its own annotated PNG with entry, stop, target and exit rendered on the candles — winners, losers, stop-outs, time-outs. All of them.

  • Auto-generated PNGs the moment the run finishes — no separate command, no extra step.
  • Parallel rendering across worker processes so 10,000 trades aren't 10,000 wait-states.
  • MFE / MAE stamped on every chart — see how much edge you left on the table per trade.
  • One-click gallery in the dashboard, filterable by exit reason, P&L, or strategy parameter.

Recent standouts

When the rules line up.

Big winners look obvious in retrospect. Each one of these came out of a single overnight sweep — annotated, archived, downloadable.

LONG · NQ +12.4R
NQ · 2026-03-14 · 09:42 NY Held 1h 12m
SHORT · ES +8.2R
ES · 2026-02-28 · 14:18 NY Held 2h 05m
ORDERFLOW · NQ +9.7R
BID ABSORPTION · Δ +3,124

04 · Native orderflow

Footprints are first-class.

Bid × ask volumes, delta, point-of-control, absorption — code orderflow strategies as naturally as price-action ones. Every trade gets a footprint rendering in the same dashboard, alongside the candle view.

BID ABSORPTION 18,425.50
1226.00 45
1825.75 78
3425.50 142
8825.25 326
12425.00 411
24824.75 62
31224.50 21
Δ +846 · Trades 1,808
EXHAUSTION 18,428.25
18829.00 14
29628.75 31
17428.50 62
9828.25 84
4228.00 88
2127.75 76
1227.50 64
Δ −534 · Trades 946
STACKED IMBALANCE 18,422.00
2223.00 98
1822.75 142
2422.50 188
3122.25 246
2822.00 198
4421.75 92
6821.50 44
Δ +712 · Trades 1,256

Code it like price.

Your strategy receives the orderflow object alongside the bar. Imbalance scans, delta confirmations, point-of-control breaks — one method call away.

  • Tick-level reconstruction of bid/ask volumes per price level — no third-party feed required.
  • Same backtest loop as price-action strategies — no separate engine, no separate billing.
  • Footprint PNG per trade auto-rendered next to the candle chart in the dashboard.
strategies/absorption.py
def on_bar(self, bar) -> Signal | None:
    fp = bar.footprint                          # bid/ask vol per level
    if fp.delta > self.delta_threshold and \
       fp.poc_at_low and fp.bid_absorbed:
        return Signal(direction="LONG", action="ENTRY",
                      stop_loss=fp.value_area_low,
                      reason="bid_absorption")

05 · Go live

Validate it here.
Trade it there.

A backtest you can't act on is just trivia. Once a strategy proves itself, export it as ready-to-run code for the platform you actually trade on — no manual re-coding, no translation drift.

NinjaTrader

NT8 · machine-bound license

Download a compiled NT8 strategy that mirrors your validated rules and runs under a per-machine license key. The same logic you backtested, executing on your live NinjaTrader.

  • One-click download from your dashboard.
  • Licensed to your machine, fail-closed.
  • Versioned — re-download when you re-tune.

TradingView

Pine Script · paste & run

Export a Pine Script version of your strategy, drop it onto any TradingView chart, and run it with the exact entries, stops and targets you validated in the engine.

  • Clean, readable Pine you can keep tweaking.
  • Same entry / stop / target logic as the backtest.
  • Works on any TradingView plan.

Not a coder?

Bring the idea — we'll build the strategy.

Describe your rules in plain language and our quant team writes, runs and reports on the strategy for you. No Python, no installs.

Talk to a quant

In the wild

@france.agnello forges his edge with EdgeQuantX — every day.

A real trader putting the engine through its paces: sweeping parameters, validating ideas tick-by-tick, and taking the winners live. Follow along on Instagram to see EdgeQuantX in real hands.

Follow @france.agnello

Early access

Join the waiting list.

EdgeQuantX is opening up in stages. Add your name for priority access and we'll reach out when your spot is ready.

Questions?

Send us a message.

Want to know if EdgeQuantX fits your workflow, or have a strategy in mind? Drop us a line and we'll get back to you.

06 · Pricing

Predictable. Estimate-only.

Cost is fully known before you press submit. The platform never bills you for actual CPU time — only for the run you asked for.

base + days × per-day + images × per-image-day

  • Charged at submit. No invoice surprises after a long-running sweep.
  • Full refund on failure. If the worker crashes or your strategy raises, your tokens come back.
  • Never charged for cpu_seconds. Optimisations on our side are not your problem.

Get in early.

Backtest a full year in seconds, optimize in one job, and take the winner live. Join the waiting list for priority access.

Join the waitlist