What the break-even guard did
Every strategy in the configuration matrix was run twice with exactly one thing different. In the first run each strategy used its own exits, stops included — the way it ships. In the second, a break-even guard refused any exit below average entry plus fees. Same 30 days of BTCUSDT, same fee and slippage model, same capital, same bars, same code otherwise. 96 strategies were measured both ways, so the difference between the two columns is the guard and nothing else.
Those four numbers are one finding
The guard took the number of profitable strategies from 28 to 86 of 96. It improved the shipped return of 79 strategies, left 15 untouched and made 2 worse. On the face of it that is the single most effective change anyone has made to this pack.
It is also not an improvement in edge, and the third and fourth numbers say why. At the median, a guarded strategy makes 10% of the round trips it made before — 68 of 96 at least halved their trade count — and sits in the market 97% of the time instead of 29%. 81 of them have exits the guard refused outright.
A strategy that cannot sell at a loss does not make better decisions. It holds. What the guard actually does to most of this pack is convert a strategy that churned — paying a fee on every leg of a trade it was wrong about — into one that buys and waits. Over this particular month BTCUSDT rose 21.88%, so holding was profitable, and the return column duly improves.
Which is why the second number is the one to read: 0 strategies beat buy-and-hold without the guard, and 0 beat it with the guard. Not one, either way. The guard moves strategies from losing badly to lagging the benchmark — a real improvement for anyone running one, and still not a reason to run one instead of holding the asset.
And it is not free. Of the 96 strategies, 27 that passed every correctness invariant unguarded no longer do with the guard fitted (17 → FAIL, 10 → WARN). Refusing exits changes what the run does enough to break checks the strategy used to pass — postures stop separating, capital stops behaving monotonically. A guard is a change to the strategy, not a wrapper around it.
Why every guarded strategy has a perfect win rate
Under the guard, the number of trades closed at a loss is zero in all 101 runs. That is not a result, it is the definition: a guard that refuses to sell below cost cannot book a losing trade. So win rate goes to 100% and profit factor — gross win divided by gross loss — divides by zero and stops having a value.
Every trade statistic on this site counts closed round trips, so under the guard they describe only the winners and say nothing about the money. The losses are still there; they are in the position that never closed, which is why the guarded runs carry large negative unrealised figures and sit in the market almost all month. Any screen that ranks these strategies on win rate or profit factor will rank them all equal and all perfect, and be telling you nothing.
The medians, both ways
| As it ships | Break-even guard | |
|---|---|---|
| Median return | -17.98% | 3.39% |
| Median edge vs buy-and-holdthe benchmark is identical in both runs | -39.86% | -18.49% |
| Median round trips | 815 | 45 |
| Median time in market | 29.11% | 96.64% |
| Profitable | 28 of 96 | 86 of 96 |
| Beat buy-and-hold | 0 of 96 | 0 of 96 |
What happened to the correctness verdicts
The matrix asserts five invariants per strategy plus per-cell order-path checks. These are correctness results, not profitability ones — a strategy can pass every check and lose most of the capital, and several do.
| As it ships | With the guard | Strategies |
|---|---|---|
| PASS | PASS | 34 |
| WARN | WARN | 31 |
| PASS | FAIL | 17 |
| PASS | WARN | 10 |
| FAIL | FAIL | 3 |
| WARN | FAIL | 1 |
Every strategy, ranked by what the guard changed
Shipped configuration — medium posture at 1m, no overrides. Round trips and time in market read unguarded → guarded, and they are the columns that explain the return.
| Strategy | Return | Guarded | Difference | Edge vs hold | Round trips | In market | Exits refused |
|---|---|---|---|---|---|---|---|
| Heikin_Ashi_Trend | -84.61% | 6.47% | +91.08% | -15.41% | 5,000 → 46 | 50% → 100% | 82,095 |
| Donchian_Midline_Trend | -73.07% | 9.39% | +82.46% | -12.49% | 3,316 → 38 | 50% → 100% | 80,908 |
| ParabolicSAR_MM | -73.42% | 6.52% | +79.94% | -15.36% | 1,695 → 128 | 39% → 99% | 39,043 |
| Confluence_Vote | -77.22% | 2.35% | +79.57% | -19.53% | 5,400 → 79 | 23% → 100% | 80,270 |
| OBV_Momentum_MM | -73.43% | 1.24% | +74.67% | -20.64% | 1,602 → 77 | 21% → 94% | 37,391 |
| Ehlers_SuperSmoother | -64.14% | 10.50% | +74.64% | -11.38% | 2,720 → 37 | 39% → 99% | 83,034 |
| HeikinAshi_EMA | -62.12% | 6.55% | +68.67% | -15.33% | 2,678 → 46 | 25% → 99% | 82,271 |
| EMABounce_MM | -68.79% | -0.33% | +68.46% | -22.21% | 1,733 → 145 | 49% → 94% | 36,178 |
| Accelerator_Oscillator | -62.33% | 2.81% | +65.13% | -19.08% | 2,578 → 65 | 36% → 98% | 82,279 |
| Ehlers_iTrend | -54.84% | 6.20% | +61.04% | -15.69% | 1,958 → 37 | 43% → 99% | 77,867 |
| CCI_MeanRev_MM | -57.47% | 3.28% | +60.75% | -18.60% | 1,153 → 135 | 37% → 92% | 36,020 |
| KAMA_Trend | -50.46% | 8.73% | +59.19% | -13.16% | 1,654 → 24 | 43% → 99% | 79,344 |
| OU_MeanReversion | -58.40% | 0.12% | +58.52% | -21.76% | 3,358 → 109 | 35% → 96% | 77,665 |
| Bollinger_MR_Regime | -54.99% | 1.48% | +56.47% | -20.40% | 1,884 → 45 | 41% → 91% | 76,641 |
| MACD_Cross | -52.01% | 4.00% | +56.00% | -17.88% | 1,750 → 41 | 44% → 98% | 80,055 |
| Hurst_Regime_Switch | -45.32% | 10.03% | +55.35% | -11.85% | 1,531 → 28 | 42% → 99% | 76,379 |
| Donchian_Chandelier | -47.03% | 7.52% | +54.55% | -14.36% | 1,605 → 28 | 47% → 99% | 81,742 |
| Faber_TAA | -44.67% | 9.78% | +54.44% | -12.11% | 1,505 → 25 | 51% → 99% | 75,522 |
| ElderRay_Bull | -42.05% | 10.80% | +52.85% | -11.08% | 1,451 → 28 | 26% → 99% | 80,655 |
| CMF_Accumulation | -47.22% | 4.35% | +51.58% | -17.53% | 1,832 → 53 | 24% → 99% | 81,399 |
| Donchian_Breakout | -43.23% | 8.31% | +51.54% | -13.58% | 1,327 → 29 | 29% → 98% | 81,725 |
| DualMomentum_Absolute | -37.39% | 10.98% | +48.37% | -10.90% | 1,343 → 31 | 41% → 98% | 73,574 |
| KST_Signal | -42.82% | 3.08% | +45.91% | -18.80% | 1,207 → 41 | 44% → 98% | 79,938 |
| Bollinger_Band_Ride | -39.45% | 5.16% | +44.61% | -16.72% | 1,255 → 30 | 29% → 99% | 82,714 |
| GQ_Indicator_Engine | -40.81% | 3.20% | +44.01% | -18.68% | 591 → 34 | 39% → 87% | 34,734 |
| Choppiness_Regime | -33.07% | 10.91% | +43.98% | -10.97% | 951 → 23 | 27% → 94% | 77,111 |
| ATRChannel_MM | -42.64% | 1.20% | +43.84% | -20.68% | 1,025 → 130 | 31% → 89% | 34,431 |
| Gann_HiLo | -34.13% | 9.69% | +43.81% | -12.19% | 952 → 24 | 49% → 99% | 77,468 |
| Ichimoku_MM | -43.57% | -0.13% | +43.45% | -22.01% | 1,115 → 128 | 47% → 91% | 34,675 |
| Guppy_GMMA | -30.70% | 10.95% | +41.65% | -10.93% | 867 → 29 | 27% → 99% | 80,556 |
| Keltner_MM | -40.61% | 0.80% | +41.41% | -21.08% | 970 → 125 | 29% → 86% | 33,334 |
| BBSqueeze_MM | -40.03% | 1.28% | +41.31% | -20.60% | 994 → 125 | 28% → 89% | 34,511 |
| Donchian_Reversion_MM | -39.54% | 1.23% | +40.77% | -20.65% | 973 → 131 | 29% → 88% | 33,978 |
| Fisher_Transform | -31.02% | 9.38% | +40.40% | -12.50% | 891 → 27 | 47% → 98% | 76,794 |
| PSAR_EMA_Trend | -32.67% | 7.35% | +40.02% | -14.53% | 967 → 45 | 23% → 98% | 81,395 |
| Ichimoku_Kumo_Breakout | -30.49% | 8.51% | +39.01% | -13.37% | 905 → 26 | 31% → 98% | 78,530 |
| Aroon_Cross | -27.50% | 10.84% | +38.33% | -11.05% | 839 → 21 | 34% → 97% | 78,755 |
| ADXTrend_MM | -30.95% | 5.79% | +36.74% | -16.09% | 814 → 80 | 27% → 99% | 40,591 |
| Bandwidth_Expansion | -30.94% | 5.36% | +36.30% | -16.52% | 893 → 27 | 21% → 98% | 78,030 |
| Force_Index_Elder | -27.13% | 8.73% | +35.85% | -13.15% | 815 → 39 | 11% → 96% | 79,229 |
| EMACross | -20.56% | 14.15% | +34.71% | -7.74% | 596 → 27 | 24% → 98% | 78,404 |
| Balance_Of_Power | -23.62% | 9.55% | +33.18% | -12.33% | 714 → 32 | 10% → 98% | 81,024 |
| Ehlers_Roofing_Momentum | -22.73% | 9.91% | +32.64% | -11.97% | 753 → 26 | 35% → 99% | 79,226 |
| Chaikin_Vol_Expansion | -17.15% | 12.39% | +29.54% | -9.49% | 508 → 21 | 29% → 97% | 75,213 |
| Coppock_Curve | -16.83% | 10.39% | +27.22% | -11.49% | 387 → 23 | 40% → 98% | 76,939 |
| BB_Reversion | -26.17% | 0.85% | +27.02% | -21.03% | 616 → 54 | 23% → 89% | 69,221 |
| DPO_Reversion | -25.63% | 0.46% | +26.09% | -21.42% | 873 → 85 | 14% → 95% | 78,550 |
| OU_Bracket | -24.84% | 0.06% | +24.90% | -21.82% | 750 → 65 | 12% → 87% | 71,256 |
| MACD_Momentum_MM | -18.81% | 3.50% | +22.31% | -18.38% | 430 → 128 | 10% → 75% | 29,348 |
| Awesome_Oscillator | -14.78% | 7.34% | +22.12% | -14.54% | 486 → 30 | 24% → 99% | 76,881 |
| ADX_DI_Cross | -15.27% | 6.69% | +21.97% | -15.19% | 395 → 24 | 7% → 91% | 75,128 |
| Connors_RSI2 | -21.98% | -0.16% | +21.82% | -22.04% | 1,028 → 100 | 7% → 94% | 74,449 |
| MFI_Reversion | -16.74% | 4.93% | +21.66% | -16.95% | 338 → 39 | 23% → 94% | 73,498 |
| KAMA_Cross | -0.52% | 14.00% | +14.52% | -7.88% | 240 → 20 | 28% → 96% | 73,684 |
| ASkewMM_Heavy | -9.23% | 5.20% | +14.43% | -16.68% | 6,154 → 1,176 | 100% → 100% | 37,515 |
| Keltner_Pullback | -12.03% | 0.66% | +12.69% | -21.22% | 363 → 71 | 7% → 81% | 65,963 |
| PPO_Trend | -9.64% | 2.55% | +12.19% | -19.33% | 307 → 30 | 11% → 94% | 75,243 |
| CMO_Reversion | -10.70% | 0.26% | +10.96% | -21.62% | 285 → 50 | 5% → 84% | 70,927 |
| QGrid_DONCHIAN_ATR_Mart | -8.89% | -0.92% | +7.97% | -22.81% | 1,210 → 550 | 93% → 93% | 5,426 |
| QGrid_DONCHIAN_ATR_ADX_Mart | -8.71% | -0.92% | +7.79% | -22.80% | 1,101 → 571 | 88% → 89% | 10,718 |
| MACD_ADX_Confluence | -7.03% | -0.15% | +6.89% | -22.03% | 173 → 19 | 4% → 90% | 74,450 |
| FILGrid_Fibonacci | 1.58% | 7.45% | +5.87% | -14.43% | 44 → 44 | 100% → 100% | 2,480 |
| Keltner_Squeeze_Breakout | -3.77% | 0.88% | +4.65% | -21.00% | 73 → 16 | 2% → 85% | 70,888 |
| ConnorsRSI_Composite | -1.77% | 1.01% | +2.78% | -20.87% | 93 → 55 | 1% → 35% | 27,925 |
| ASkewMM_Medium | 10.65% | 13.31% | +2.65% | -8.58% | 96 → 45 | 100% → 100% | 11,176 |
| QGrid_DONCHIAN_ATR_CHOP | -2.39% | 0.04% | +2.43% | -21.84% | 1,195 → 487 | 93% → 93% | 12,351 |
| QGrid_DONCHIAN_ATR_ADX | -2.54% | -0.16% | +2.38% | -22.04% | 1,148 → 477 | 88% → 90% | 18,145 |
| NR7_Breakout | 16.38% | 18.47% | +2.09% | -3.41% | 26 → 0 | 99% → 100% | 9,929 |
| QGrid_DONCHIAN_ATR | -2.18% | -0.37% | +1.81% | -22.25% | 985 → 415 | 92% → 93% | 8,606 |
| ASkewMM_VWAP | 3.11% | 4.78% | +1.66% | -17.11% | 30 → 29 | 100% → 100% | 1,381 |
| ASkewMM_Light | 11.09% | 12.27% | +1.18% | -9.61% | 1,709 → 802 | 100% → 100% | 14,079 |
| FILGrid_Geometric | 0.14% | 0.99% | +0.84% | -20.90% | 453 → 257 | 100% → 100% | 1,032 |
| FILGrid_Arithmetic | 0.14% | 0.92% | +0.78% | -20.96% | 455 → 255 | 100% → 100% | 1,030 |
| Elder_Triple_Screen | 0.90% | 1.58% | +0.68% | -20.30% | 6 → 5 | 1% → 7% | 3,435 |
| FILGrid_ATRBands | 0.15% | 0.82% | +0.67% | -21.06% | 394 → 225 | 100% → 100% | 1,061 |
| FILGrid_ATRBands_Arith | 0.16% | 0.81% | +0.65% | -21.08% | 396 → 225 | 100% → 100% | 1,058 |
| FILGrid_Logarithmic | 0.53% | 0.86% | +0.33% | -21.02% | 1,255 → 646 | 20% → 20% | 3,360 |
| QGrid_DONCHIAN_ATR_Anti | -0.41% | -0.28% | +0.13% | -22.16% | 70 → 55 | 85% → 84% | 5,000 |
| FILGrid_Sigmoid | 1.03% | 1.09% | +0.06% | -20.79% | 299 → 220 | 19% → 19% | 489 |
| FILGrid_Cubic | 12.34% | 12.34% | 0.00% | -9.54% | 70 → 70 | 24% → 24% | 0 |
| FILGrid_Donchian | 19.50% | 19.50% | 0.00% | -2.39% | 140 → 140 | 100% → 100% | 0 |
| FILGrid_PercentBand | 3.97% | 3.97% | 0.00% | -17.91% | 3 → 3 | 22% → 22% | 0 |
| FILGrid_Power | 8.32% | 8.32% | 0.00% | -13.56% | 74 → 74 | 25% → 25% | 0 |
| FILGrid_Quadratic | 3.59% | 3.59% | 0.00% | -18.29% | 47 → 47 | 100% → 100% | 0 |
| Gap_Fade | 0.00% | 0.00% | 0.00% | -21.88% | 0 → 0 | 0% → 0% | 0 |
| Grid_Strategy | 0.15% | 0.15% | 0.00% | -21.73% | 2 → 2 | 10% → 10% | 0 |
| QGrid_DONCHIAN_ATR_ADX_Anti | 9.78% | 9.78% | 0.00% | -12.10% | 82 → 82 | 99% → 99% | 0 |
| QGrid_DONCHIAN_PCT | 0.10% | 0.10% | 0.00% | -21.79% | 4 → 4 | 5% → 5% | 0 |
| QGrid_DONCHIAN_PCT_ADX | 0.04% | 0.04% | 0.00% | -21.85% | 2 → 2 | 10% → 10% | 0 |
| QGrid_DONCHIAN_PCT_ADX_Anti | 0.04% | 0.04% | 0.00% | -21.85% | 2 → 2 | 10% → 10% | 0 |
| QGrid_DONCHIAN_PCT_ADX_Mart | 0.04% | 0.04% | 0.00% | -21.85% | 2 → 2 | 10% → 10% | 0 |
| QGrid_DONCHIAN_PCT_Anti | 0.14% | 0.14% | 0.00% | -21.74% | 6 → 6 | 19% → 19% | 0 |
| QGrid_DONCHIAN_PCT_CHOP | 0.11% | 0.11% | 0.00% | -21.77% | 5 → 5 | 15% → 15% | 0 |
| QGrid_DONCHIAN_PCT_CHOP_Anti | 0.11% | 0.11% | 0.00% | -21.77% | 5 → 5 | 15% → 15% | 0 |
| FILGrid_Bollinger | 0.74% | 0.60% | -0.14% | -21.28% | 436 → 183 | 100% → 100% | 4,872 |
| FILGrid_Bollinger_Log | 2.52% | 1.43% | -1.10% | -20.46% | 285 → 227 | 100% → 100% | 2,736 |
How far this generalises
One month, one pair, spot and long-only, one price per bar, no order book. The window rose 21.88%, and that is doing a great deal of the work here: a guard that converts trading into holding looks good precisely because holding was good. In a falling window the same guard would hold losses open instead, and the 18-point median gap to buy-and-hold would become a loss rather than a lag.
That is testable and it has not been tested. Until it is, the honest statement is the narrow one: on this window, fitting a break-even guard stopped most of these strategies bleeding fees, made none of them beat the benchmark, and broke 27 of the correctness results that held without it.
Nothing here was measured on a live exchange, and none of these are recommendations. The per-strategy grids, metrics and settings are on the performance matrix; the strategies that have had a full line-by-line audit are under audited builds.