Strategy testing protocol — backtest and forward test

This fill-in protocol takes you from a hypothesis and frozen rules to results and a decision about further testing. Complete sections 1–5 before the test and sections 6–8 afterwards. Keep an export of each version together with the data and results so that the study can be reproduced.

Strategy testing protocol — backtest and forward test workflow

The form does not run a backtest or connect to a broker. It documents tests performed in your chosen environment. The Polish and English versions use the same JSON schema version 1 and the same 22 fields. Field contents are transferred without translation. This EN version accepts files up to 2,000,000 bytes, matching the updated PL importer. Keep larger backups intact and open them in an updated version — do not delete study records to fit the 600,000-byte limit of an older EN version.

First, save and export sections 1–5. After the study, add the results in sections 6–8, keeping the previous copy. All fields are descriptive: the form does not assess the validity of the hypothesis or check the metrics you enter. Each field holds up to 12,000 characters as counted by the browser (some symbols take two units). JSON is for reimporting; TXT and printouts are for reading. The import button cannot load data from TXT or PDF files.

Saving is performed using the button and remains in this browser, separately for each language version. It is neither automatic nor synchronised between devices; people using the same browser profile can read it. Clearing site data removes it. JSON export lets you keep a backup or transfer the document. The form does not send entered data to a server.

1. Hypothesis and scope

State the mechanism that is supposed to produce an edge and the conditions in which you expect it to disappear. Define the market, timeframe and session before inspecting the results. Use one study ID across the plan, data files and journal.

For example, FX-TEST-001; initials; start date.
What should work, why, and which observable result contradicts the hypothesis?
List symbols, instrument specifications, signal and execution timeframes, and hours.
2. Frozen rules and version

The rules must allow every decision to be reproduced. Simply saying “enter on a breakout” is not enough: record the price source, decision time and execution method. Keep a copy of the rules or code from before the test. A change made after seeing the result creates a new version; it does not improve the historical assessment of the previous one.

Version, date with UTC or an offset, filename / commit / checksum; testing software, its version and randomisation settings, if applicable.
Condition, when the data becomes available, order type, SL, TP, time-based exit, gaps and simultaneous SL/TP touches.
Position size, combined exposures, limits, maximum costs, releases, missing data and prohibited entries.
3. Data, time and costs

Record the source and coverage of the data and whether it represents bid, ask or mid prices. Match the resolution to the execution rules. Do not treat a future indicator value or a later revision of a release as information available at the time of the signal. A bar covering both SL and TP requires an explicit rule for resolving the outcome or more detailed data.

Provider, download date, coverage, resolution, bid/ask/mid, gaps and validation method; an identifier or checksum for the retained data copy and a description of data cleaning.
UTC timestamps; source server time zone; session, for example Europe/London with GMT/BST; DST rule.
Spread, commissions, swap, slippage, currency conversion and sources for assumptions; record what is already reflected in the execution price.
In-sample vs out-of-sample data partitioning and forward testing architecture
In-sample vs out-of-sample data partitioning and forward testing architecture
4. Sample split and forward-test plan

Separate the sample used to develop rules (in-sample, IS) from the sample used to evaluate them (out-of-sample, OOS). Record the dates and split method. Repeatedly inspecting OOS and adjusting the rules to it erodes its independence. Run the forward test on data arriving after the rules are frozen, documenting all signals and omissions; a demo environment does not fully reproduce execution on a live account.

IS dates; list of trials, filters and parameters, including rejected ones; selection method.
OOS dates; chronology of the split; rules for positions crossing the boundary and indicator warm-up. Do not count the same trade on both sides; warm-up data may come from the past, but must not introduce future information into the rules.
Start, demo/paper environment, rule version, review date, horizon and observation count with a rationale; whether to stop at a date or a trade count, and what to do if the sample is smaller. Also record sessions with no signals.
5. Criteria recorded before testing

Define the metrics and decision rule before seeing the result. No single trade count or profit factor threshold confirms an edge for every strategy. Sample length, dependence between observations, rare events and the number of variants tested affect interpretation. Keep the criteria for evaluating the strategy separate from checks that the test itself was performed correctly. Decide in advance how to account for uncertainty and dependence between results, and when to end the study. Do not stop the test at the first favourable result or extend it until the desired threshold is reached; such decisions require a planned method of sequential evaluation or an explicit acknowledgement that further analysis is exploratory.

Net expectancy in R; definition of R and the trade unit; PF in R or currency (specify); drawdown with its series, unit and starting point; observation count, costs, dispersion and method for assessing uncertainty.

For consistency with journal F, define a trade’s R-multiple as its net result divided by its positive risk amount planned before entry. The sum of these R-multiples when risk amounts vary is not the result expressed in the plan’s baseline R. The cumulative R curve starts at 0; drawdown is the decline from its previous peak, so an initial loss of −1 R produces a drawdown of 1 R. For equity or balance, specify the starting capital, cash flows and how open positions are treated — do not start a percentage calculation from zero capital. PF with no losses has a zero denominator: mark it as undefined, rather than treating it as confirmation of an edge. Account for partial exits using one documented definition of a trade.

Your criteria: continue testing / collect data / reject the hypothesis. What does an inconclusive result mean?
Cost changes, subperiods, neighbouring parameters; conditions for stopping because of a data or procedural error.
6. Results and deviations

Record results separately for IS, OOS and forward testing. Include counts of signals, trades and exclusions, with reasons. Keep the path of results, not just the total. Net results account for costs exactly once: if spreads and slippage are already reflected in execution prices, do not deduct them again. Mark missing data as missing, not as zero.

Dates, observation count, metrics, dispersion, results file and limitations.
The same metrics and units as for IS; comparison with the criteria recorded in advance.
Results, omitted signals, execution differences, outages and their effect on comparability.
7. Change log

Distinguish a fix for an implementation error from a change to the idea. In both cases, keep the previous result and identify the data already seen. Do not overwrite the old protocol version when changing the rules. An export documents the state at a particular time; the file or local save alone is not independent proof of the freeze date.

One change per entry: what changed, why, and which results were already known.
Which results need to be recalculated? How will you evaluate the change without using the same sample as new OOS?
Objective strategy evaluation decision gate protocol
Objective strategy evaluation decision gate protocol
8. Conclusion and further testing

Compare the result with the criteria in section 5. Record both evidence supporting the hypothesis and facts contradicting it. A conclusion that “more data is needed” requires a concrete plan. This document organises the study; it neither authorises live trading nor guarantees future results.

Continue testing / revise the hypothesis / reject / inconclusive; identify evidence and limitations.
Which data or test, who will do the work, and when will it be reviewed?

Example: the same result, different conclusions

Illustrative example: suppose version 1.0 produced +8 R in OOS. If, after inspecting that sample, you exclude two losing sessions and present +12 R as “independent confirmation”, you are mixing rule development with evaluation. Record the new filter as version 1.1, preserve the +8 R result and identify the data you have already seen. The difference of +4 R here comes from removing sessions with a combined result of −4 R, not from new observations. The +12 R result describes the new variant fitted to a known sample; its independent evaluation requires a further, properly planned test.

Sources and scope of verification

  • Bailey, Borwein, López de Prado, Zhu, The Probability of Backtest Overfitting, February 2015 version: repeatedly selecting variants on the same data can inflate the assessment of a strategy. The paper supports recording trials; it does not establish a universal trade-count threshold for this form.
  • MDN — localStorage: the scope of browser storage and the possibility of access being denied. A JSON backup is independent of the site’s local save.

Sources checked on 21 September 2026. The linked chapters 15.4 and 15.9 expand on metric definitions and the study procedure; the form itself records content, rather than calculating an edge.

Jarosław Wasiński

Editor-in-chief, ForexMechanics.com • Macro & FX analyst

Independent analyst and practitioner with over 20 years of experience in financial markets. Actively involved in Forex since 2007, with a focus on fundamental analysis, OTC market structure, and disciplined capital risk management.

  • Creator and editor-in-chief of MyBank.pl, providing reliable financial education since 2004.
  • Author of hundreds of in-depth market commentaries, structural analyses, and educational materials for traders and investors.
  • Advocate for market transparency, promoting education grounded in hard data and institutional reports (BIS, ESMA, CFTC).

All content is educational and informational only – it does not constitute investment advice or a recommendation. Remember: leveraged trading (Forex/CFD) carries a high risk of rapid capital loss.