Backtest Report Template

A section-by-section template for documenting a backtest so that another person, or your future self, can judge and reproduce it.

Backtest Report Template: A professional backtest report is structured so a reader can reproduce the study and judge how much to trust it. The standard sections are: objective and hypothesis; data and universe (source, period, survivorship treatment, adjustments); trading rules stated unambiguously; the cost and execution model; in-sample and out-of-sample results shown separately; a full metrics table; a drawdown and underwater analysis; robustness tests (parameter sensitivity, walk-forward, Monte Carlo, stress and scenario); and an explicit limitations section. The report should state that every metric is a standard definition and that results exclude real costs unless the cost model section says otherwise.

Use this template as the skeleton for any backtest write-up. The guiding principle is that a report exists to let a sceptical reader reproduce and challenge the result, not to sell it. Separate what was done from what it means, and always show in-sample and out-of-sample results apart so the reader can see the difference. See the research workflow for how these sections map onto the development process.

1. Objective and hypothesis

State in plain language what the strategy is meant to exploit and why it should work. A backtest with a prior economic or behavioural rationale is far less likely to be a data-mined artefact. Record the hypothesis before results, so the reader can see it was not reverse-engineered from the data.

2. Data and universe

Document the data source, the exact date range, the instruments and how the universe was defined at each point in time. Critically, state the survivorship treatment (does the universe include delisted names?), the price adjustment method for splits, bonuses and dividends, and how gaps and holidays were handled. Data provenance is where most silent errors hide.

3. Trading rules

Specify entry, exit, position sizing, filters and risk controls precisely enough that the same rules on the same data reproduce the same trades. Ambiguity here makes the whole report unverifiable. List every parameter and its value, and note how many parameters the strategy has, since that governs its degrees of freedom.

4. Cost and execution model

Describe exactly how fills and costs were modelled: fill timing (next bar open versus signal close), assumed slippage, and the full Indian cost stack (brokerage, STT, exchange charges, GST, SEBI fees, stamp duty). If costs were not modelled, say so prominently, because every return metric is then optimistic. State whether liquidity constraints and market impact were considered.

5. In-sample results

Present the performance on the development data, clearly labelled as in-sample and therefore an upper bound. This is the fitted result; its role is to be compared against the out-of-sample figures, not to stand alone.

6. Out-of-sample results

Present performance on the reserved data the model never saw, and on walk-forward out-of-sample segments if used. A large gap between in-sample and out-of-sample performance is the clearest warning of overfitting. Note how many times, if any, the hold-out was consulted, since each look erodes its value.

7. Metrics table

Report a full table covering return (CAGR, annualised return), risk-adjusted return (Sharpe, Sortino, Calmar), and risk and consistency (maximum and average drawdown, profit factor, win rate, payoff ratio, expectancy, Ulcer index), together with the number of trades. Quote at least one metric from each family. The Metrics Cheat Sheet and Formulas Reference define each one.

FamilyReport theseNote
ReturnCAGR, annualised return, total returnMeaningless without the drawdown alongside.
Risk-adjustedSharpe, Sortino, Calmar, information ratioState the annualisation and the benchmark used.
Risk / consistencyMax and average drawdown, profit factor, win rate, payoff ratio, expectancy, Ulcer indexAlways report the trade count next to these.

8. Drawdown analysis

Show the underwater curve and quantify the depth and duration of the worst drawdowns, not just the single maximum. Drawdown is the number that determines whether the strategy is survivable in practice, so it deserves its own section rather than one line in the metrics table.

9. Robustness tests

Document parameter sensitivity (is there a plateau or a spike?), walk-forward analysis, Monte Carlo resampling of the trade sequence, and any stress or scenario tests such as a replayed crisis or doubled costs. This section is where a genuine edge is distinguished from a fragile fit; report the tests that were run and, honestly, any the strategy failed.

10. Limitations

State the assumptions, the statistical uncertainty and the ways the result could be wrong: sample size, regime dependence, cost sensitivity, capacity and liquidity limits, and the fact that past performance does not predict the future. A report without a candid limitations section is marketing, not research.

A note on honesty

Every metric in the report is a standard definition, and every result excludes real trading costs unless the cost model section explicitly includes them. Saying so plainly, and separating in-sample from out-of-sample throughout, is what makes a report citable rather than persuasive.

Frequently asked questions

Why separate in-sample and out-of-sample results in the report?
Because in-sample metrics are computed on the data the strategy was fitted to and are therefore upper bounds, while out-of-sample metrics estimate live behaviour. Showing them apart lets the reader see the gap between them, which is the single clearest indicator of overfitting. Blending them into one figure hides that signal.
What belongs in the data and universe section?
The source, the exact period, the instruments and how the universe was defined at each date, plus the survivorship treatment, the price-adjustment method for corporate actions, and how gaps and holidays were handled. This section lets a reader judge whether the data itself, rather than the strategy, produced the result.
How detailed should the trading rules section be?
Detailed enough that someone else running the same rules on the same data reproduces the same trades. Every entry, exit, sizing rule, filter and parameter value should be stated. Vagueness here makes the entire report unverifiable, and it also hides how many degrees of freedom the strategy has.
Why does the report need a limitations section?
Because a backtest reduces uncertainty rather than removing it, and a reader needs to know where the result could break: sample size, regime dependence, cost sensitivity, capacity limits and the general fact that past performance does not predict the future. A report that omits limitations is presenting a conclusion it has not earned.
Should I report metrics if I did not model costs?
You can, but you must state prominently that costs were not modelled, because every return and risk-adjusted metric is then optimistic. The honest approach is to include a cost model; failing that, label the results as gross of costs so no reader mistakes them for achievable net figures.
What robustness tests should a professional report include?
At minimum parameter-sensitivity analysis, walk-forward results, and Monte Carlo resampling of the trade sequence, ideally with a stress test such as doubled costs or a replayed crisis period. Reporting which tests were run, and candidly any the strategy failed, is what separates a research report from a sales pitch.

Last reviewed 11 July 2026. Educational content only — not investment advice.

Educational content only — not investment advice. See our Risk Disclosure and Methodology.