81 short trades, 0 edge: why I killed shorting on Hyperliquid after a $42 bleed

python dev.to

A post-mortem, not a flex. I ran a symmetric long/short strategy on Hyperliquid perps for 47 days and the numbers forced me to kill shorting entirely.

The setup

Four coins: LINK, ETH, BTC, SOL. 3x leverage. Entries gated by a 5-signal score:

  • RSI (30 / 70 thresholds)
  • Bollinger Band position (0.2 / 0.8)
  • MACD crossover
  • 4h timeframe confirmation (hard block if 4h disagrees)
  • BTC correlation filter (skip if BTC is flat + low vol)

Score of 6+ = enter. Exit on trail (1.5% ATR-adjusted) or SL (1.8% static) or opposite-direction signal.

What the P&L said at the 47-day mark

direction trades wins WR net PnL
LONG 64 33 52% +$15.00
SHORT 81 39 48% -$42.00

4% win rate gap, reflected across 145 trades. That's not a bad-sample-size complaint anymore, that's signal.

Why shorts were bleeding even with a decent WR

Two reasons, in order of impact:

1. Asymmetric payout structure. The winning longs were catching multi-hour momentum moves. The winning shorts were catching pullbacks in an uptrend that reversed fast. Average winning long: +1.9%. Average winning short: +1.1%. Same SL distance on both sides, very different expected value.

2. Funding rates. On the coins I was trading, funding was positive more weeks than not. Shorts pay, longs receive. Over 47 days that's a real drag — not huge per trade, but it compounds against a thin edge.

The fix (one config line)

# strategy.py
MIN_SCORE_LONG = 5.0      # unchanged
MIN_SCORE_SHORT = 99.0    # was 5.0 -> effectively disable shorts
Enter fullscreen mode Exit fullscreen mode

Setting MIN_SCORE_SHORT so high that no realistic score combination hits it is cleaner than deleting the short branch. Keeps the direction-split telemetry intact so I can spot if the regime flips and shorts become viable again.

What happened in the 2 weeks since

  • 19 long entries, 12 wins, 7 losses
  • Net: +$18
  • No regrets about missed shorts (I watched the simulated-short branch — it would have taken 4 more losers)

The broader lesson

I had 81 trades of 'evidence' that my strategy worked. It did — on one side of the tape. The aggregate P&L was net-negative and I assumed the tuning was off. The tuning was fine. The direction was broken.

Before you assume your strategy is symmetric:

longs  = [t for t in trades if t.direction == 'long']
shorts = [t for t in trades if t.direction == 'short']
print(f"LONG:  {len(longs):3d} trades, {sum(t.pnl for t in longs):+.2f}")
print(f"SHORT: {len(shorts):3d} trades, {sum(t.pnl for t in shorts):+.2f}")
Enter fullscreen mode Exit fullscreen mode

Four lines. I should have had them in the monitor from day one.

Open question

The regime bias could flip. I'm still tracking the short-side hypothetical P&L every week — if it goes net-positive for 3 consecutive weeks I'll lower the threshold back down. But I'm not going to 'feel it out' anymore. The split-by-direction number is the only thing I trust.

Source: dev.to

arrow_back Back to Tutorials