Skip to content
QUANTGPT

Walk-forward testing: what it is and how QuantGPT runs it

Updated November 2, 2026

The short answer

Walk-forward testing builds a strategy's rules on an earlier stretch of history, then replays them untouched on a later stretch they never saw. QuantGPT splits each stock backtest chronologically at a cut year (2015 unless you pick another) and reports the years from the cut on their own, beside the whole run.

How tools compare

Each row other than QuantGPT's from its maker's own pages, read on 2026-11-02. Not stated: the page we read does not say. QuantGPT publishes this page, so weigh that.
ToolWalk-forward supportSplit methodWhere to read more
QuantGPTBuilt in. Every stock backtest reports the years before and from the cut year separately, and challenge_finding checks the later years for decayOne chronological cut on January 1 of the split year, 2015 unless you pick another. The same rules run through both windows; nothing is re-fitted at the cut. Random splits are not offeredThe findings system and the sections below
QuantConnectYes, written into your algorithm. Its docs describe walk-forward optimization as periodically adjusting a strategy's logic or parameters to optimize an objective over a trailing windowRolling: you set the re-optimization schedule with DateRules and TimeRules passed to its Train method. The docs' example re-optimizes at the start of each month on the trailing 365 daysQuantConnect: Walk Forward Optimization
TradingViewNot stated. Its Pine Script strategies page and its Deep Backtesting page describe no walk-forward or out-of-sample testNot stated. You choose the date range a strategy is tested onPine Script strategies, How Deep Backtesting works
BacktrexYes, per its walk-forward guide (a blog post of October 29, 2026); its documentation index lists no walk-forward pageIn-sample and out-of-sample windows cut by a ratio you define, parameters optimized on each in-sample window and applied to the next out-of-sample window. The guide explains rolling and anchored windows; which Backtrex runs is not statedBacktrex: Walk Forward Analysis guide, Backtrex docs

How QuantGPT runs it

The three findings

Every stock backtest ends in one of three findings. Each describes what the data did over the window; none is a prediction or a recommendation.

More on reading them: the findings system.

The decay check in challenge_finding

challenge_finding runs eleven checks that try to break a finding. Seven read the run: sample size, walk-forward decay, the probabilistic Sharpe ratio, random books, costs, decades and a thousand resampled histories. Four re-run it with one thing changed: the total-return index, twice the book, five fewer years and operating companies only. It ends HOLDS (no fails, at most one flag), FRAGILE (two or more flags) or DOES NOT HOLD (any fail), with the strongest objection first.

The walk-forward check compares the years from the cut with the benchmark over the same years, and with the strategy's own Sharpe before the cut:

Questions

What is walk-forward testing?

Walk-forward testing checks a trading strategy on data it was not built on. The rules are set on an earlier stretch of history, then run unchanged on a later stretch, and the later stretch is scored on its own. A rolling version repeats this in steps, re-fitting on each new earlier window. QuantGPT uses one chronological cut, 2015 unless you pick another year.

How is it different from a single backtest?

A single backtest reports one set of numbers for the whole window, so the years the rules were shaped on and the years they were not are mixed together. A walk-forward test scores the later years separately. On QuantGPT both come back in one result: the whole window, the years before the cut and the years from it, for the strategy and its benchmark.

What does the held-out window show?

How the same rules did on years they were not shaped on, against the benchmark over those same years. On QuantGPT, a strategy that beat the benchmark on growth and Sharpe over the whole window but fell behind on both after the cut reads TRADE-OFF, not DATA VALIDATED, and challenge_finding flags an out-of-sample Sharpe below half the in-sample one. It is history, not a forecast.