A free report by Aym Abdalla
The graveyard — every strategy we tested, and why it died.
Not investment advice. This is a research log: what we tested, what we found, and what we did with it. Past results do not predict future results. Nothing here is a recommendation to buy, sell, or trade anything.
The evidence behind "we tested 55 trading strategies and they all lose after costs." The kill list, the cost floor, the traps we found, and the rules we now force every new idea through. No filters, no screenshots of winners. The corpses, filed.
The one number that explains everything
Round-trip cost on a $100 position = $0.30 (0.10% taker fee each way + 0.05% slippage each way).
Every strategy we tested landed between −$0.25 and −$0.35 PnL per trade. That is not a spread of outcomes — it means gross edge is indistinguishable from zero across the entire library. These strategies are not bad at predicting direction. They are not predicting anything. Net result equals negative transaction cost, exactly what a coin flip pays.
Any new hypothesis must clear the cost hurdle in gross terms before it is worth anything. It does not move with account size (verified: identical results at $100 and $100,000, because percentage fees scale with position).
The scope
- 55 strategies entered the graveyard (the 35-strategy v0 library, Lab v1 custom hypotheses, benchmarks, and post-purge additions).
- 535,425 graveyard entries — the complete verdict log, not a sample.
- 1,900,086 pooled backtest trades across 52 strategies with enough volume to judge.
- 2,567,999 live shadow signals across 26 shadow runs — paper only, never a real dollar, held to resolution and logged.
- 155 distinct findings — not raw pass counts. One strategy that works on one ticker across 9 exit configs produces 9 rows and one finding.
The verdict, stated honestly
The correct statistical verdict is no large edge, not "no edge." To distinguish +$0.09/trade from zero needs roughly 4,000–8,700 trades; several rare patterns had far fewer and could not be judged per-ticker. We state the uncertainty, not a false certainty.
But the pooled library — where the sample sizes are huge — is decisive: implied gross edge across 1.9M pooled trades is +$0.0011 per trade. Eleven hundredths of a cent. At any positive cost they lose, and at zero cost they make nothing.
The cost floor, in one table
| Cost model | Net PnL/trade |
|---|---|
| modeled 0.10% taker + 0.05% slip = $0.30 | −0.299 |
| claimed 0.02% taker + 0.05% slip = $0.14 | −0.139 |
| maker 0% + no slippage = $0.00 | +0.001 |
Even at the most generous real-world cost assumptions, nothing in the library clears the bar. Cost reduction is not a footnote — it is the structural variable of the entire search space.
The kill list
Selected rows, pooled across 180 tickers × 4 timeframes.
| Strategy | Pooled trades | Win rate | PnL/trade |
|---|---|---|---|
| grid_1.0atr | 259,362 | 19.7% | −0.297 |
| fair_value_gap | 165,110 | 13.9% | −0.297 |
| stoch_rsi_oversold | 121,575 | 17.4% | −0.290 |
| grid_2.0atr | 113,490 | 24.8% | −0.271 |
| ema_pullback | 74,528 | 13.9% | −0.297 |
| breakout_20 | 65,622 | 23.6% | −0.314 |
| momentum_continuation | 65,589 | 23.6% | −0.314 |
| volume_surge | 41,709 | 20.2% | −0.335 |
| macd_crossover | 38,461 | 23.7% | −0.322 |
| bullish_marubozu | 34,356 | 17.2% | −0.345 |
| hammer | 6,839 | 18.3% | −0.300 |
| C5 (custom) | 4,204 | 36.4% | −0.709 |
| dragonfly_doji | 1,980 | 11.4% | −0.443 |
| morning_star | 1,699 | 21.7% | −0.398 |
| upside_tasuki_gap | 855 | 11.9% | −0.301 |
| mat_hold | 396 | 34.1% | −0.016 |
| bullish_abandoned_baby | 333 | 11.4% | −0.452 |
No row is positive. The best entries sit just under zero, and the worst (C5, −0.709/trade) is genuinely negative gross edge — worse than paying the cost.
The failure modes we found
These cost us more than the strategy results. Several silently invalidated earlier conclusions.
- Rare patterns cannot be judged per-ticker. 13 of 35 strategies never reached 20 trades in 212,058 runs. They were recorded as FAIL when the truth was "this test could not answer the question." Pooling across tickers fixed the judgment.
- Strategies that could not fire. Two gap patterns had comparison operators swapped (mathematically unsatisfiable — verified against 200,000 random candle sets, never fired once). One had an empty loop range. A strategy that cannot fire looks identical to a strategy that fails.
- Duplicates inflate apparent breadth. breakout_20 and momentum_continuation were 99.4% identical. One idea counted twice.
- Aggregates hide concentration. "12 strategies PASSED" was really 2 distinct findings. A single 9-trade cell produced +2.53/trade. One asset (SOL) made the best cell look real.
- Selecting winners buys exactly nothing. Filter to winning cells on half the instruments, judge on the other half, 20 random splits: survival was a coin flip (53–59%). Cells that won averaged −$0.302/trade on unseen instruments against a −$0.30 floor.
- Harness bugs that made confident, wrong numbers. A regime filter reading future data; unadjusted stock splits creating fake −90% crashes; caches keyed on
id()returning stale arrays; Binance switching kline timestamps to microseconds mid-dataset. Every one produced confident, wrong numbers before it was caught.
What is ruled out
Do not propose again without new evidence.
- Generic candlestick patterns on liquid instruments with mechanical exits. Zero gross edge, ~218k tests.
- Bearish patterns as exit signals. −0.299/trade, no better than mechanical.
- Strategy inversion ("the failed signal predicts the opposite"). Tested on 48 candidates, zero beat buy-and-hold.
- Routing strategies by asset class. All uniformly at zero.
- Filtering the library to winners (see above).
- Bigger position size to outrun fees. Percentage fees scale with size.
The rules every new idea has to clear
- State a falsifiable thesis. "RSI is oversold" is not a thesis. "Forced sellers must liquidate regardless of price, and that pressure ends when the margin call clears" is.
- State a kill condition — what result would prove it wrong.
- Estimate gross edge per trade in basis points. Under ~30bps round trip, it cannot survive costs, and it is dead before it is written.
- Estimate frequency. Under ~4,000 expected trades, a small edge cannot be distinguished from zero.
- Verify it fires on real data before interpreting results.
- No filtering to winners. Conditions must be predicted, not discovered.
- Every entry needs a stop strictly below entry.
Why this exists
A bot that says "I don't know" is the only bot worth trusting with money. We built the thing everyone else screenshots — and it told us no. That is not a closing argument, it is a starting point. The graveyard is the most valuable artifact we own, because a null result only compounds if you keep the corpse.
Shadow-only, paper-only, never a real dollar. No live trading. The full method: a 21-check validation harness with an oracle control, a lookahead detector, fee-application checks, and cross-engine agreement; 4,692 passing tests in the engine suite.
Subscribe to The Nest for the next reportGenerated 2026-08-31 · Shadow-only, paper-only. Numbers verified against the project's own data.