Protocol v1.0 · 7 Oct 2026

How we test, and how we bury.

Every post on this site follows the same rules, written down before the data is opened. If a result can't be reproduced from this page and the files attached to the post, it doesn't get published.

01

Rules before data

The strategy, variants and pass/fail gates are frozen before any result is looked at.

02

Costs always included

Commission and slippage on every trade. Gross results are shown only to explain a death.

03

A holdout, opened once

Development, validation and holdout periods. The holdout is spent the moment it's opened.

04

Beat the coin flip

Same exits and sizing on random entries. No edge over the dice means no edge.

05

Every variant reported

"We tried N, M survived." No quietly dropped versions, no best-of-N headlines.

06

Show the trades

Trade logs and code are published with each post, so you can check our arithmetic.

01Rules are written before the data is opened

Before running anything we write down the entry and exit rules, every variant we plan to test, the instruments and periods, and the pass/fail gates (section 04). That specification is saved with a date and published with the post.

Old Mudge: "A grave dug after the funeral is just a hole."

02Data and the three periods

Each test splits history into three windows. Which dates apply to each strategy is stated in its post.

PeriodPurposeRule
DevelopmentWhere the idea is first run and gates are checked.May be looked at repeatedly, but variants are fixed beforehand.
ValidationAn unseen second period the idea must also pass.Only strategies that clear development get here.
HoldoutThe final exam. Usually the most recent months.Opened once. After that it's used up: new ideas need forward data, not another run on it.

03Costs are not optional

Every number on this site is net of costs unless it's explicitly labelled gross.

When the gross result is positive but the net result is negative, the cause of death is Costs.

04The pass/fail gates

A strategy has to clear all of these. Clearing most of them is still a burial.

GateRequirement (net of costs)
Profit factorPF ≥ 1.2 in each validation window.
Sample sizeAt least 50 trades in each window (200 for long histories); otherwise the verdict is "inconclusive", not "pass".
Significancet-statistic ≥ 2.0 on the development period.
Beats the diceResult above the 95th percentile of random-entry runs (section 05).
Not fragileStill positive after removing the 10 best trades.
HoldoutOpened once, and the result must stay positive.

Passing every gate does not mean "trade this". It means the idea survived our tests, and it moves to forward testing on a simulator before anyone should risk money.

05The control group: random entries

A strategy can look good simply because the market drifted, or because the exits are doing the work. So each test also runs a control: the same exits, stops, sizing, session and trade count, but with entries chosen at random.

06We report everything we tried

Every post states the count: variants tried, variants that passed, instruments and periods covered. Multiple tries make a lucky result more likely, so the count is part of the verdict.

07Verdicts and causes of death

Every strategy ends up with one verdict and, if buried, one primary cause of death.

VerdictMeaning
BuriedFailed one or more gates.
InconclusiveNot enough data or trades to decide either way.
SurvivorCleared every gate. Still needs forward testing.
Cause of deathWhat it means
No edgeNet and gross results are indistinguishable from random entries.
CostsGross is positive, net is negative.
OverfitPasses development, fails validation or holdout.
FragilePasses barely, and falls apart without a handful of trades.
Late fillThe signal confirms after most of the move, so the realistic entry has no edge.

08What this protocol can't do

We test rules and public claims, never people. No ratings of individuals, only of strategies.

09Reproducibility

Each post links to the frozen specification, the code used and the full trade log. If you run the same rules on the same kind of data and get a different answer, tell us. A corrected result gets published as a correction, not quietly edited.

Where the idea and the code come from. Every post names the source of the claim being tested, so you can check the original. It also states the provenance of the code: our own code, written from public rules; open-source code used under its licence, with credit; or not published, when the original is closed or paid, in which case we rebuild the rules from the author's public description. We never publish anyone else's closed, paid or decompiled code.

10Changelog

2026-10-07 · Clarification, no change to the gates: code provenance statement added to section 09.

v1.0 · 2026-10-07 · First public version. Earlier internal tests predate this page and used slightly different gates; they are labelled "legacy" where they appear.