Appearance

Personalize your experience

Mode
Accent Color
Direction
The Backtesting Page

The Backtesting Page

Backtesting

Automation → Backtesting runs any saved strategy or strategy file on the backtest engine, then lets you analyse, stress, optimize, validate, compare and export the result without leaving the page.

A run, step by step

  1. 1
    Pick a source
    The left lists the QuaScript , , saved builder strategies, DSL files and coded files (.py, .ts, .js, .cpp, .qs). The on each tells you which engine will run it.
  2. 2
    Choose the market
    The toolbar above the chart holds the , the timeframe and the (1M to 3Y, or custom dates in Advanced). Indian brokers read candles from the Quatick historical service; and Delta read them from the exchanges' public APIs.
  3. 3
    Run
    One backtest credit per run. The chart shows the and, for QuaScript strategies, the 's own analysis; the strategy inputs sit under it.
  4. 4
    Tune
    With re-run on, every later change re-runs the backtest: an input, an engine toggle, an advanced setting, the timeframe, the , or an picked in the watchlist.

Inputs, live re-runs and advanced settings

ControlWhat it changes
inputs (under the chart)QuaScript strategies show their param.* inputs: sliders for numbers, switches for on/off inputs, choices as buttons. Builder and DSL-bot strategies show the numbers in their document (indicator periods, thresholds, stops, targets). A changed input is highlighted and has its own reset.
Engine togglesQuaScript: fill on the signal bar's close instead of the next open, close the open trade at the end, pyramiding. Coded strategies: fill on the signal close.
re-runOn: changes re-run after a short (450 ms by default, set under Advanced → Run), so dragging a slider gives one run, not one per step. Off: change several things, then press Apply or Re-run. A newer run always replaces the result of an older one still in flight.
WatchlistPicking an moves the backtest to it and runs it there, also while a run is in and also when re-run is off.
Advanced (movable )Market and , capital, the and every input with search. It floats over the page without a backdrop: it by its header, resize it from the corner, double-click the header to fold it; the chart behind it stays usable.
vs previous runUnder the chart each statistic shows its change against the run before, and the line below lists what changed between the two runs.
ℹ
Note:QuaScript strategies take capital, commission, slippage, , pyramiding and from their header block ( "Name" { capital = 100000 ... }). Advanced → Broker & costs edits those values and the page writes them into the header of the script it sends; the saved script is not changed. Other engines use the : fill timing, cost model (flat per order, percent, per unit, crypto maker/taker, Indian equity and F&O schedules), slippage model, , and volume . The DSL engine applies only the per-order and percent cost models and bps slippage.

The analysis drawn on the chart comes from running the same script, with the same header and inputs, on the candles of the result. The backtest itself runs in backtest-api; the run uses the QuaScript engine of the chart and costs no credits.

Results views

ViewWhat it showsCredits
Overviewthe backtest graph first (equity against a buy & hold benchmark, with an underwater pane), then trade P&L, outcomes, the P&L bridge of best and worst , the exit mix, and the price chart with –
Analyticsevery engine statistic (CAGR, volatility, , Calmar, ulcer index, tail ratio, skew, kurtosis, exposure, costs) plus a year × month return heatmap, a -profile , and volatility, the trade-return and violin, and P&L by hour, weekday, holding time and side–
P&L Calendardaily and monthly P&L above the calendar of days, weeks and months–
Execution, costs and slippage diagnostics–
MAE vs MFE and return vs holding-time scatters, then every trade with entry, exit, size, P&L and –
Riskgauges for , , and , a risk-profile , the underwater curve and the losing-streak –
trade / shuffle and market- re-runs: probability of loss and ruin as gauges, a path bundle of sampled paths, the percentile risk corridor, terminal wealth, the risk-reward frontier and losing streaks1
Optimizea parameter grid ranked by , , Calmar, return or ; a heatmap for two parameters, return vs of every combination, the top combinations, and a check1
Walk-forward or anchored re-optimization scored out of sample, by window, with in-sample vs out-of-sample return and charts1
Robustnessthe lookahead check, and the overfitting report (, probabilistic and PBO as gauges)1 each
Comparethis ’s runs side by side: rebased equity curves, a metric-profile and a –
Reportrun provenance and exports: HTML tearsheet, CSV, result JSON, the engine request–

Parameters of builder strategies

Optimize, Walk-forward and the overfitting report need parameters. For a builder the page lists the numbers inside it (indicator periods, comparison values, stop and target levels, quantities) and you pick up to three with a range. Behind the scenes each is a into the strategy document, such as entry.signals.0.conditions.params., which the API accepts as a parameter name too.

Coded strategies take the names their code reads from params.

A research routine that holds up

  1. Run the backtest with realistic costs. Read Analytics before the headline return.
  2. Run the lookahead check. A failure invalidates everything after it.
  3. Optimize over a modest grid and look for a , not the single best .
  4. with Walk-forward: most out-of-sample windows profitable, above about 0.5.
  5. Run the overfitting report on the grid you searched: near 95% or higher, PBO well below 50%.
  6. Stress the survivor with and size positions so the stays near zero.
  7. Export the Report and keep it with the version you deploy.
★
Pro tip:Compare is free: re-run the same on other symbols and timeframes, then open Compare to see whether the edge travels or belongs to one market.

See also

Related articles

  • Python: Research Toolkit

    Backtesting / SDKs / Python

    Everything after the first backtest: tearsheet analytics, multi-asset portfolios, position sizing, optimization and walk-forward, overfitting tests, Monte…

  • Monte Carlo and Robustness

    Backtesting / Monte Carlo

    A backtest is one path through history. Monte Carlo asks how different the result could have been with the same edge: a different order of trades, a…

  • Overfitting & Validation

    Backtesting / Validation

    Why searching for a good backtest reliably produces one even when no edge exists, how to recognise a fitted strategy, and the validation designs that…

  • Walk-Forward Analysis

    Backtesting / Walk-Forward

    Walk-forward analysis repeats what deployment does: choose parameters on the past, trade them on a future they have not seen, move forward and choose again.…

  • Step 7 — Strategy Testing

    Automation / Strategy Builder / Wizard Steps

    The testing step offers three modes, each answering different questions about strategy behavior. Use all three in sequence: backtest to validate logic,…

  • Strategy DSL Format

    Automation / Strategy Builder / Reference

    The engine JSON a strategy saves as. The form, node and JSON editors all edit this one document, and the C++ engine runs it unchanged in backtests and live.

  • Backtesting in Python and C++

    Backtesting / SDKs

    The quatick Python package and the header-only C++ library let you import indicators, backtest on your own machine and send the same file to Quatick.…

  • Backtesting Methodology

    Backtesting / Methodology

    What a backtest is actually evidence of, the assumptions built into it, how much data is enough, and the procedure that makes a result worth acting on.

  • C++ SDK Reference

    Backtesting / SDKs / C++

    Header-only C++20 (packages/quatick-backtest-cpp): the position simulator, an event-driven engine with the same order rules as Python, analytics, a parallel…

Browse all knowledge base articles →