Methodology

What earns a verdict in a forex backtest.

Nine standards every strategy is held to — yours, and every template on the platform — and, below them, the actual numbers: what gets held back, what a run has to clear, what it pays in costs, and what every verdict word means. They're the reason the proof engine tells you no more often than it tells you yes.

01

In-sample results are a rehearsal

Any rule can be made to look good on the data used to shape it. So the number that counts here is measured on the most recent 30% of the window, which the strategy was never shown. If it only works where it was fitted, it doesn't work.

EMA Crossover made +0.037R in-sample and lost 0.100R out-of-sample. That's the whole problem, in one row.

02

Decisions, not equity curves

An equity curve is one path — get lucky in the right month and it flatters everything. We grade the individual decisions instead, thousands of them, each against what actually happened next. A curve can lie about a strategy. A few thousand graded calls can't.

03

A strategy must never see the future

Most backtest bugs are one form of this — a value that wasn't knowable yet quietly leaking into a decision. Our engine is built so it can't happen, and every run re-proves that rather than trusting the design.

04

Costs are real, so we charge them

Spread, commission and slippage are applied. A strategy that only survives without costs isn't a strategy, it's a spreadsheet.

05

Enough evidence, or no verdict

A handful of good trades is a story. Nothing is called proven below 20 trades in the held-out stretch, and plenty of ideas simply stay unproven. The rest of that bar — the profit factor, the significance figure — is published below rather than described.

06

Measured beats estimated — and we label which is which

Some things we can measure directly: what a change did to real trades. Some we can only estimate, like the losses avoided by never trading a rejected idea. Both are useful. Only one is evidence, and we never quietly add an estimate into a measured headline.

07

When the stop and the target sit in the same bar, we go and look

Every backtester meets this: one bar touches both your stop and your target, and the order decides whether the trade was a win or a loss. Most tools pick a rule and move on. We drop to minute data and measure which came first. Where the minutes exist, the trade is settled by evidence. Where they don't, it books the loss — never the win, never a coin flip.

Ten years of EUR/USD on the hourly chart: 26 bars held both. Every one of them resolved against the actual minute-by-minute path, and the result names the timeframe that settled it.

08

The number is never harsher than the evidence, either

Conservative is not the same as correct. A backtest that assumes the worst on a bar we could have measured is understating a real edge — a quieter mistake than overstating one, and just as wrong. So the engine reaches for the finest data that actually covers each bar before it falls back to assuming.

We found this in our own engine: a partial minute archive made ten-year backtests resolve FEWER bars than none at all, because the code committed to minutes it didn't have instead of using the five-minute data it did. 2 bars measured became 26.

09

“Almost proven” is a number, not a feeling

A forward test needs a finish line, and it depends on the size of the edge — a thin one takes far longer to separate from luck than a strong one. We compute how many trades this specific strategy needs at 95% confidence and count toward it, never fewer than 20 and never more than 500: past that the honest answer is that forward testing cannot settle it, not a countdown nobody finishes. If the edge isn't positive there is no countdown at all — telling you a losing strategy is merely unproven would be the most expensive thing we could say.

What the verdict is measured on
138,852,865
one-minute bars

The resolution the intrabar question is settled at.

30
instruments

FX majors and crosses, indices, metals, oil, crypto.

10 years
of history

Back to July 2016 — through 2020, through 2022.

Depth is the point, not the number. A decade spans regimes a two-year window cannot — a strategy that only ever saw 2023 has never been told no by a real market. And minute resolution is what makes standard 07 possible at all: without it, every bar that holds both your stop and your target is a guess dressed as a result.

Every bar is checked against history we already hold before it is allowed in, and a feed that disagrees is refused rather than blended. That check has earned its place: it caught one instrument arriving with every bar timestamped an hour late — data that looked perfectly reasonable in aggregate and would have quietly walked the wrong minutes for every trade tested on it.

The held-out test, in numbers

Standard 01 is the one everything else rests on, so here is the whole of it. These are the figures a single backtest is graded against — not a description of them.

Held back
the most recent 30% of the window, by time
Never a random sample of bars: a strategy is being asked whether it works later, not elsewhere.
Minimum window
400 bars
Below that, nothing is held back and the result says so rather than inventing a verdict.
Warm-up
300 bars
The bars before the split feed the indicators so the first held-out signal isn't computed on a half-formed average. They are never traded and never scored.
Trades required
20 in the held-out stretch
Five good trades pass any bar worth having. This is the floor below which we do not grade at all.
Profit factor
1.1 or better
Gross profit ÷ gross loss in the account currency, which compounds — position size is taken off live equity, so a later trade moves more money than an earlier one of the same size in R. The per-trade R figure beside it on a result is the same ratio weighted equally; both are published on every run. A run with no losing trade at all passes this one, because there is nothing to divide by.
Significance
t-statistic of 1.0 on per-trade R
Roughly an 84% one-sided read that the average trade is above zero. Clearing it is not proof; failing it is disqualifying.
Also run
5 equal windows across the whole timeline
From 1,500 bars up. An edge concentrated in one good year shows up here as one profitable window out of 5.
When we search
50/25/25
If the optimizer tries variants, it measures on the first slice, picks on the second, and tests the winner ONCE on the third. Selecting and judging on the same bars is how an optimizer manufactures a curve that dies live.

All four conditions have to hold together. Three of four is not a pass, and a result that clears them is reported as having cleared them — not as a prediction.

What a backtest charges you

Standard 04 says costs are charged. This is what they are. Both legs of a trade pay: the spread figure below is the round trip, charged half on the way in and half on the way out, while commission and slippage are per side.

Default spread
0.02% of price, round trip
The platform-wide floor, before any instrument profile. Half of it moves the entry fill against you and half the exit.
Default commission
0.02% per side
One definition for every surface. The same strategy cannot score differently because a different page ran it.
Slippage
0.05 ATR, each side
Scaled to the instrument's own volatility rather than a flat distance, and never switched off.
Every FX pair
1.5 pips, and no commission
Majors and crosses alike, yen pairs included. A standard retail account, read from public broker spread tables — the middle of what is quoted, not the cheapest.
Gold
$0.40 an ounce, and no commission
Charged as a price distance, so a decade-long window pays the same spread in 2016 as in 2026 instead of a percentage that shrinks as the price rises.
US single names
5c a share, round trip
A spread on a share is cents, not a percentage. As a percentage, a mega-cap is overcharged six times over and a microcap undercharged twenty.

A per-instrument profile can only ever make a result worse: every field is the higher of the platform default and the instrument's own figure. The one exception is the sourced retail spreads above, which replace the default outright — the floor had majors paying about five times a real spread, which is enough on its own to turn every short-timeframe result negative, and a cost model that makes every idea lose is not conservative, it is uninformative.

If your own broker is cheaper or dearer, enter its spread and commission per instrument and the run uses yours. Every result states whose costs it paid.

The words, and where you see them

Two different things get graded here, and they use different words. This page used to publish only the second set, which meant the word on your own backtest appeared nowhere in the published method. Both are here now, with what produces each.

On your own backtest

One run, graded against the held-out test above. Nothing here is a recommendation and none of it is a prediction.

EDGE

Made money on the full history AND cleared the held-out test above.

PROFITABLE

Made money on 20+ trades, on a window too short to hold any of it back — nothing failed, and nothing was proven either.

PROFITABLE, NOT PROVEN

Made money, but the held-out test ran and did not back it — or it took fewer than 20 trades, which is too few to tell an edge from a streak.

ALMOST THERE

Lost money overall, but either it is genuinely close to break-even (per-trade AND overall), or one tested condition made money by more than the best-of-8+-trades bucket would by chance — corrected for how many buckets were looked at — and that condition is one you can apply as a filter.

IMPROVING

Still losing, but you have moved it up across your own tests this session.

NEEDS IMPROVEMENT

A flat loss that no tested condition and no iteration rescued.

ALMOST THERE can be earned by one condition that made money, and that is a claim about a slice of a losing run — so it has a bar. The condition needs at least 8 trades, and its per-trade edge has to clear a one-sided 5% test against the run’s own spread of results, corrected for how many buckets were examined — a dozen looks means a bar of about 2.6 standard errors, not 1.6. A condition you could not turn into a filter is not named at all, because the next step it implies would be disabled.

On a validated record

A strategy put through the full battery, or ranked on the public board. Here the numbers are corrected for how many ideas were tried before this one — the haircut a single backtest cannot apply to itself.

Deployable

Deflated Sharpe 0.95 or better, overfit probability under 50%, and the held-out test passed. Rare.

Promising

Deflated Sharpe 0.75 or better, but not yet the bar above. Interesting, not evidence.

Reject

No real out-of-sample edge, or the numbers do not survive the haircut for how many ideas were tried. Most things land here. Shown as “Not supported” on the public board.

Unproven

Fewer than 20 out-of-sample trades: not a worse grade, no grade — a rank implies a comparison we cannot make.

Held to this bar, most strategies land on the bottom grade — and that's the point. A tool that mostly agrees with you isn't testing anything. Note what the top grade on a single run is not: clearing a held-out test on one strategy is not the same as surviving the correction for how many strategies you tried, which is why the two sets of words exist.

Neither “not proven” nor “promising” is a holding pen. Each carries the number of forward trades it still needs before the edge could be called real, counted down as they happen — see standard 09 for how that number is arrived at, and for when there is deliberately no countdown at all.

Every figure on this page was last checked against the engine on 20 September 2026.

The boundary
What we don't publish

What stays unpublished is the enforcement, not the bar: how the engine makes a look-ahead structurally impossible rather than merely unlikely, how an ambiguous bar is resolved against minute data, and how the archive it all runs on is built and checked.

We publish what a module does and what it's for. We don't publish how it works. The method is the product — and anyone holding the method holds the product.

Evaluating this for a desk? Talk to sales and we'll go as deep as an NDA allows.

The bar itself is published above, in full, because none of it is secret — anyone serious already knows these are the right thresholds, and a standard nobody can check is not a standard. Knowing the bar and being able to enforce it are different problems, and the second one is the product.

Put a strategy through it.

Yours, graded against real conditions — including when the answer is no.

No card required · sales is for desks and teams