A laboratory for trading hypotheses

Your backtest showed a profit. We'll tell you what it's worth.

Any strategy can be fitted to the past — by accident, without noticing. normaltrading counts how many variants you tried, and puts next to every number the bar that a random search would have cleared with the same amount of trying. Above the bar — a conversation. Below it — coincidence.

No programming · no return promises · a negative answer comes more often than a positive one

Morning range breakoutES · S&P 500 futures · 5 minutes
Trials18
Effective11
Budget7 / 10
After costs+11.8 %
Drawdown−14.7 %
On risk0.94
Threshold1.47
Strategy · +56.2 %Buy and hold · +34.9 %
2021202220232024
snapshot 2026-08-31rules 7f3a91c4trained until 2023-06-30holdout sealed
!It works, but it doesn't clear the bar

It beats buy and hold and survives real costs. But you tested 18 variants — with that much searching the result has to be higher before luck can be ruled out.

Return per unit of risk0.94threshold 1.47 at 11 trials✕not passed
Costs4.9 pp29 % of gross profit!a noticeable share
Critical commission$5.80yours is $2.25✓2.6× headroom
Blind forward—registered 14.12.2024–not tested
1 in 20
platforms on the market adjust for the number of attempts. That is the open niche
8–15 pp
per year — the gap between a backtest and a live account in an independent 30-day test
18 → 11
runs become effective trials: similar variants are counted as one
~25 %
chance that a hypothesis which passed every check actually works. It was ~2 %. And it is still “probably not”
Core features

Six things you will not find together anywhere else

Each one solves one concrete problem: why a pretty curve on history does not turn into money.

N

Trial counter

Every run increments the counter automatically, and there is no reset button. Similar variants — a 0.4 % stop and a 0.41 % stop — count as almost one: what matters is not how many times you pressed the button, but how many independent ideas you tested.

≥

A threshold next to every number

0.94 by itself means nothing. “0.94 against a required 1.47” means everything. The bar is computed from your number of attempts, so it is unique to you — and it rises while you keep searching. A metric without a threshold is not shown at all.

3

Three reports instead of one

Research — is there an effect. A run — does it survive costs. The verdict — is the result distinguishable from luck. Each next report is stricter than the last, and while you freely explore, the counter stays silent.

†

Experiment graveyard

An open catalog of checks that failed — with a date, a cause of death, and the number that killed them. Nobody publishes negative results, which is why the internet looks like everything works.

?

Decoding on the spot

Every row has a “?” button: what the metric means, what it is compared with, and when it lies. A toggle in the header expands every explanation at once — a beginner reads the report like a textbook, an experienced user never turns it on.

⌘

Without a single line of code

The event, the entry, the stop, the target, and the market-regime filter are set with a mouse and with words. Python and C# are needed nowhere — not for research, not for a run, not for exporting results.

How it works

Five steps. The count does not start at the first

The order here is not decoration, it is the mechanism: until the hypothesis is locked, there is nothing to constrain you with, and no reason to.

01

Look

You describe an event and see what happens after it: the distribution, the difference from an ordinary bar, the confidence interval.

the counter is silent
02

Lock it in

You turn the effect into rules: entry, stop, target, position size. The rules are sealed with a hash — you cannot change them after the fact.

the counter is on
03

Run it

The engine counts trades with real commissions and slippage, then breaks the strategy on purpose: costs doubled, entry one bar later.

+1 trial
04

Get a verdict

Eight checks with thresholds computed for your number of attempts. A rejection comes with an explanation of which exact check failed.

the threshold depends on N
05

Wait for the forward

The strategy goes forward on data that did not exist at registration. That is the only honest reset button: time.

clears the doubts
Experiment graveyard

Nobody publishes negative results. We will

Every completed check goes into an open catalog — no matter how it ended. Every grave has a date, an epitaph with the cause of death, and the number that killed it.

14.03.2026 — 22.03.2026

Golden cross

MA 50 × MA 200 · US equities · daily

Died of no effect. The difference from an ordinary day is +0.004 % — the confidence interval covers zero with a wide margin. Plenty of signals, no substance.

✕no effect4 trials
02.04.2026 — 19.04.2026

Mean reversion

BTC/USDT · 5 minutes · 2019–2026

Died of costs. Before commission +0.031 % per trade, after commission and spread −0.004 %. The effect is real, but it fits entirely inside the cost of getting in and out.

!only before costs9 trials
09.06.2026 — alive

Morning range breakout

ES · 5 minutes · forward is running

Still alive. It did not pass history — 0.94 against a threshold of 1.47 — but the author left it on a blind forward. Twenty months later the fact is tracking close to the expectation.

–forward is running18 trials

The cards are layout examples. The real graveyard will fill with the first checks.

Honestly

What the product does and what it never does

Strict statistics reliably filters out junk. It does not produce profit — and anyone who says otherwise is selling you something else.

What you will get

A number with a bar standing next to it✓alwaysand an explanation of where that bar came from
A rejection when the idea does not work✓~0.4 %that rarely we mistakenly reject a good idea
A repeatable result✓a year latera data snapshot, a rules hash, and history bounds
An understanding of why it failed✓point by pointnot a silent red cross

What there will not be

Return promises✕neverand a ranking of best strategies — that is a false-discovery machine
A guarantee that the hypothesis works✕~25 %twelve times better than without the filter, and still “probably not”
An “optimize” button✕noit silently increases the number of attempts and devalues the result
Testimonials and “they trust us” logos✕not yetuntil there is something to back them with
For the first users

Send an idea you have long wanted to test

While the product is in development, we run ideas by hand and send back a full report — with every threshold and every explanation. Free, no strings. The only ask in return is to tell us what in the report stayed unclear.

You will describe the idea in the reply email — in words, no formulas.

normaltrading.com — testing trading hypotheses on history