# Do stop losses help? Stop vs no stop across our backtests - specification (cross-test study, RIP Backtest protocol v1.0)

Specification written and **frozen 2026-10-22 (approved by the owner the same day, draft 1 unchanged)**. No number of this study has been computed: no pair has been compared. Once frozen, any change of a rule or of a pair is documented on the page; bugs may be fixed.

## What kind of study this is
- **Descriptive, not a new backtest.** Nothing is run again. Many published tests ran **the same entries with and without a stop loss** (and some with and without a profit target). This study compares those versions pair by pair, from their published trade logs.
- **No gates, no holdout.** The holdouts are all used. The page makes no claim that any version works.
- **Chosen by the owner** on 2026-10-22, the fourth cross-test project (after costs, the cross-market scoreboard and trend vs mean reversion).

## What is already known (disclosed, so the study is not blind)
- The **risk-reward guide** compared targets of 1R, 2R and 3R on 25 versions of 9 tests (target size, with a stop in every version); it found that a bigger target always lowered the win rate and helped only on trend-following entries. That question (the size of a target) is not repeated here.
- Several articles state how the stop changed the worst loss in their own S/F pairs, and `check_site.js` checks those sentences (check 9). I know every test's verdict and, from the gold guide, that the one gold version that passed every gate in its run had no stop. I have **not** compared any pair across tests.
- **Prediction, written now:** a stop will reduce the worst single loss in most pairs, but will lower the result after costs in more pairs than it raises it, more often on mean-reversion rules than on trend rules; adding a target to a stopped version will lower the result on trend rules.

## The pairs (fixed now)
A **pair** is two published versions of one test with the **same entry rule**, where the second adds a stop (or a target) and nothing else changes except what is listed. Three kinds of stop pairs and one kind of target pair:

**A. Stop only added** (the cleanest test of a stop):
| Test | Without | With |
|---|---|---|
| golden-cross-1-hour (ES, gold), golden-cross-eurusd-1h | GH-L-N, GH-LS-N | GH-L-S, GH-LS-S (stop 1 R; the opposite cross still exits) |
| coppock-curve-es-1h | CC-L-N, CC-LS-N | CC-L-S, CC-LS-S |
| ema-9-20-crossover-gold (M15, H1) | *-L-N, *-LS-N | *-L-S, *-LS-S |
| es-gap-fill-strategy | GF-NS | GF-1X (stop 1 gap; same target, the previous close) |
| bitcoin-cme-gap-fill | CG-NS | CG-S1, CG-S2 (stop 1 and 2 gaps; same target, Friday's close) |

**B. Stop and target added, the signal exit kept:**
| Test | Without | With |
|---|---|---|
| golden-cross-1-hour, golden-cross-eurusd-1h, coppock-curve-es-1h, ema-9-20-crossover-gold | *-N | *-T1, *-T2, *-T3, *-T123 |
| ema-9-21-crossover-1h (ES, NQ, GC) | EM-L-N, EM-LS-N | EM-L-T2, EM-LS-T2 |
| ema-ribbon-5-8-13-nq (M5, M15) | *-L-N, *-LS-N | *-L-T2, *-LS-T2 |
| supertrend (ES) and its ST60 versions in fx-six-strategies-four-pairs (four pairs) | ST60-L, ST60-LS, ST15-LS, ST5-LS | the same with -T (round 2: stop 1.5 ATR, target 3 ATR, the flip still exits) |

**C. A fixed stop, target and time limit replacing the signal exit** (the "full" versions of the first ES study, also run on four FX pairs):
| Test | Without (S, signal exit) | With (F) |
|---|---|---|
| bollinger-band-reversal, donchian-channel-breakout, rsi-divergence, macd-crossover (ES), and the same four in fx-six-strategies-four-pairs (EURUSD, GBPUSD, USDJPY, AUDUSD) | *-L-S, *-LS-S | *-L-F, *-LS-F (stop 2 ATR, a target, a 24- or 48-bar limit, no signal exit; MACD F also enters only on a cross when flat, while S always follows the state) |

**T. Target added to a version that already has the same stop:**
| Test | Without target | With target |
|---|---|---|
| golden-cross-1-hour, golden-cross-eurusd-1h, coppock-curve-es-1h, ema-9-20-crossover-gold | *-S | *-T1, *-T2, *-T3, *-T123 |
| gold-opening-range-breakout | AS-A, AS-B, LD-A, LD-B, NY-A, NY-B | the same with -T (round 2: target 1 R) |
| initial-balance-breakout-es-futures, -strategy-nq | IB-CLOSE | IB-X1 (same stop, 1x extension target) |
| london-breakout-strategy-gbpusd | LB-CLOSE | LB-1R, LB-2R |

**Out, with the reason:** RSI(2) A/B vs A2/B2 (both have a stop: a wide emergency stop replaced by a tighter stop and a target); RSI 30/70 classic vs protected (the protected versions add a trend filter as well as the stop); Stochastic + RSI + MACD A vs B and initial balance IB-MID (two different stop placements, both stopped); target sizes 1R/2R/3R (inside bar, H1 Open Trap, engulfing: the risk-reward guide's question); every test whose versions all have a stop or none has one.

The inventory lists every pair and checks that both versions exist in the published files.

## What is compared
Within a pair both versions trade the same contract size, so their per-trade results are compared **in money, pips or percent from the trade logs** (dollars per contract or per ounce, pips, percent), not in R: in some tests R is defined differently from version to version (the CME gap fill's R is the gap in CG-S1 and twice the gap in CG-S2). The column used for each test is listed in the inventory. Per pair:
- **Result after costs:** which version has the higher total (and the t-statistic of each version's per-trade results).
- **Worst single trade:** the most negative closed trade of each version; the ratio with / without.
- **Drawdown:** the largest fall of the cumulative closed-trade result of each version; the ratio with / without.
- **Win rate** and **number of trades** of each.
- **Verdict:** the sign of each version's result after costs, and the gates each passed (published).

**Weighting:** the unit is a **rule set** (one test, one market, one strategy within the test: e.g. Bollinger on EURUSD, the golden cross on gold). Every rate is the mean over rule sets of their share of pairs, so the FX study's 32 C pairs do not outweigh a single gap fill pair; the plain pair count is shown beside it.

## Questions (fixed now)
1. **Result:** the share of pairs in which the version with the stop had the higher result after costs, for A, B and C separately and together.
2. **Worst trade:** the share in which the stop made the worst single loss smaller; the median ratio.
3. **Drawdown:** the share in which the stop made the largest drawdown smaller; the median ratio.
4. **Win rate and trades:** the share in which the stop lowered the win rate; the median change in the number of trades.
5. **Verdict:** pairs where the sign after costs flipped (each direction), and where the gates passed went up, down or stayed.
6. **Targets (T):** questions 1 to 3 for the target pairs.
7. **Trend vs mean reversion:** questions 1 and 2 by the rule kind of the trend-vs-mean-reversion study (`fm_labels.json`, frozen).

A share is compared with 50% (a stop that did not matter would win half the time) by flipping the sign of every rule set's result at random 10,000 times; descriptive only, since the pairs of a rule set share their entries.

## Checks (must pass before the page prints a number)
1. **Inventory first:** every pair, its kind, its rule set, the log column; both versions found; printed and checked by me against this table before any comparison.
2. **Logs:** for every included version, the number of trades and the total of the log column equal the published summary in that unit where the summary reports it, and the trade count always (the cost study already matched every log's net and count to the summaries).
3. **Pairs share entries:** for kinds A, B and T, the first entry of each version is the same date and time, and the share of the stopped version's entries that are also entries of the other version is reported (a stop can only remove re-entries, not create new signals; where a version re-enters differently by design, it is stated).
4. **An independent second script** recomputes questions 1 to 7 from the pair file without sharing code, and must give identical numbers.

## What the page may and may not say
- Every number is "in our tests": these are the stops and targets the strategies' authors or our specs defined (mostly 1 R, 1.5 to 2 ATR, or the range), on the strategies we chose.
- A stop that lowered the result here is not a reason to trade without one: the page says what the stop bought (smaller worst loss, smaller drawdown) and what it cost, and that position sizing and survival are outside this comparison.
- Positive is not "works": the gates are shown with every result.
- Every pair links to its test.

## Output
- `sl_pairs.json` (the pair list, written first), `sl_out/sl_rows.json`, `sl_out/sl_summary.json`, `sl_selftest_result.txt`.
- A guide page (slug and SEO title chosen when it is written), rebuilt from these files with asserts on every number in the text, linked from the findings page and from each test in a pair.
