I Tried 12 Trading Strategies. I Killed 6. Here's How They Died.
After 10 years of manual trading, I decided to automate everything. I thought the hard part would be finding signals. It wasn't. The hard part was killing strategies I'd spent weeks building, and admitting why they failed.
Archived post from April 2026, before the current validation gate existed. The kill count has since grown to around twenty, and none of the six then still standing passed the gate either. The research record is current.
Beast BNB
DEADThis one hurt the most. A 94% win rate in backtesting. Ninety-four percent. I remember staring at the equity curve thinking I'd cracked it. The backtest showed hundreds of trades, almost all green. I started planning what I'd do with the returns.
Then I ran walk-forward validation. Split the data into in-sample and out-of-sample periods. The strategy showed negative expectancy in ALL three out-of-sample windows. Not borderline. Convincingly negative. I dug into the numbers: average win was $0.013. Average loss was $0.371. A 29:1 loss-to-win ratio was hiding behind that beautiful win rate.
It was picking up pennies in front of a steamroller, and the backtest never showed the steamroller arriving. Lesson: win rate is vanity. Expectancy is everything.
Orderbook Imbalance
DEADZero percent win rate. Not low. Zero. Out of 153 trades, not a single winner. Lost $39.48 in the process. At first I assumed the signal just had no edge. Orderbook data is noisy, spoofing is rampant, maybe the thesis was wrong.
Then during a P0 code audit, the kind you do when nothing makes sense, I found it. Line 42. The buy/sell logic was literally inverted. Every time the model said "buy," the system sold. Every sell signal triggered a buy. The strategy might have actually worked. I'll never know, because by the time I found the bug, the market regime had shifted.
Lesson: always verify signal direction. A strategy that's perfectly wrong is still perfectly useless.
Composite Score Sniper
DEADThis strategy ran for 42.5 hours and generated exactly zero trades. Not one. I checked the logs. The signal generator was running fine: computing composite scores every cycle, evaluating conditions, logging everything. It just never fired.
The signal threshold was set to 0.55. Reasonable-sounding number. Except the mathematical maximum of the signal formula was 0.45. The threshold was higher than the theoretical maximum output. It was physically impossible for this strategy to ever generate a trade. Like setting a speed limit of 200mph on a road where the cars top out at 150.
Lesson: validate signal generation before deployment. If your strategy can't trade in theory, it won't trade in practice.
Momentum SAR
DEADMomentum SAR was prolific. 613 trades. The Parabolic SAR indicator flipped constantly, and the strategy dutifully followed every signal. The win rate was 2.4%: out of 613 attempts, 15 won. Total loss: $41.27.
The math was brutal. Even if the signal had a slight edge, the transaction costs at Hyperliquid's fee tier (1.5bps maker, 4.5bps taker) overwhelmed it completely. At small capital, fees aren't a drag on returns. They ARE the dominant force. The SAR signals were generating real information, but the cost of acting on that information exceeded its value.
Lesson: fees are the binding constraint at small capital. Your edge has to clear the fee hurdle before anything else matters.
Beast Optimized
DEADI wish I could say this was a subtle bug. It wasn't. The signal generator contained random.random(). The strategy was literally flipping a coin to decide trade direction. Six trades, 33% win rate, lost $0.29.
How does random.random() end up in production? It was a placeholder during development: "I'll replace this with real logic later." Later never came. The strategy passed code review because the reviewer was focused on the risk management layer, not the signal generator. The signal looked like it was doing something because it had the right function signatures and return types.
Lesson: always audit your signal logic. The most dangerous code is the code that looks correct.
Whale Mirror
DEADThe thesis was simple: find the 7 most profitable whale wallets on Hyperliquid and copy their entries. If they're consistently making money, ride their coattails. 66 trades in, the win rate was 33% and the total loss was $5.24. Not catastrophic, but the trajectory was clear.
The fatal flaw wasn't the entry signal. Some of those whale picks were genuinely good. The problem was exit. The strategy had no stop-loss at all. The only way out of a position was when the whale exited. So positions would drift from -3% to -10% to -30% to -50%, with zero protection, just waiting for a whale who might be playing a completely different game at a completely different scale.
Lesson: every position needs independent exit protection. Borrowing someone else's entry is fine. Borrowing their risk tolerance will kill you.
Every safety feature in my current system exists because something broke without it. Three layers of stop-loss? Whale Mirror. Circuit breakers? Momentum SAR. Rate limiting? Beast re-entered 1,679 times in one minute. The strategies that lasted longest weren't the ones that looked good in backtesting. They were the ones that failed gracefully. Since this was written, the validation gate has killed the rest of them too, and I consider that the system working.