Markets ~11 min read

Seeking Alpha

Two months building a system to short crypto pumps — and slowly learning that the real work wasn't the strategy. It was refusing to believe my own good news.

You already know the chart. Some three-letter coin with a dog on it, didn't exist on Tuesday, up 300% by Thursday lunchtime on volume that came from nowhere, and by Sunday it's a flatline and a Discord full of strangers calling each other family. Crypto does this dozens of times a day, down in the low-cap perps nobody serious bothers watching. That's the whole business plan, more or less.

The words "alpha" and "edge" make me cringe. We're all just seeking money; the Greek letters are there to make it sound like more than that. So read the title accordingly.

For the past two months I've been building a system to short those pumps. The thesis is about as subtle as it sounds: most of these low-cap shitcoins fade after they spike, so we sell them. I didn't come up with it — I lifted it off Scott Phillips on his most recent podcast. He made the point that the big liquid coins trend and the small ones do the opposite: they snap back after a shock. This was my first proper go at finding an inefficiency myself instead of reading about other people finding them, so I grabbed the thread and pulled and didn't really stop for two months.

First, a confession: I'm not a good enough programmer to have built this alone. Nowhere close. I did it with AI, mostly Claude and Codex, and they're good at completely different jobs. Codex is the creative one — it'll riff, propose its own angle on a signal, wander off and find something for itself, a bit too keen and a bit too confident, like a clever junior who hasn't been burned yet. Claude is the pessimist. Point it at the code and it'll find the bug, then explain why the idea was doomed anyway, then find a bug in that explanation. Annoying at first. By the end I'd worked out that's the only useful attitude to have near a backtest — because a backtest lies to you by default, and most of the time my excitement about a result was just me not having found the bug yet.

The actual strategy

We run a full point-in-time universe. That one isn't negotiable, and it took me stupidly long to get why. Point-in-time means the coins that later delisted or got renamed or just quietly died are still in the data, at the size and rank they really had on the day. Skip it, grab only the coins that exist today and run history backwards on them, and you're testing the survivors — which, in a market that is mostly coins that don't survive, hands you a fake answer for free. So it's every coin that ever traded, alive while it was alive, scams and all.

Then the filters. Throw out the top 30 most liquid names — the inefficiency isn't up there, the big caps trend and that's the whole premise. Then a volume floor so we're not eating ruinous slippage on the way in; anything north of about 3M did for me. Then the signal itself: a coin suddenly pulling in way more flow than it ever used to, turnover blowing out to around 6× its average over the previous week, climbing a long way up the liquidity ranks in a few days, popping hard on its own rather than just floating up because Bitcoin floated up, and closing strong instead of wicking up and dying. The idea is that somebody bought late and got greedy, and that runs out.

The hard-coded numbers bothered me for weeks. The 6×, the rank jump, all of it hand-picked. It felt like curve-fitting — drawing the bullseye after the arrow already landed. Then I realised everybody has them: Jane Street has hard-coded numbers tucked away somewhere too, there's no magic parameter-free strategy sitting out there waiting. And every time I tried to make a number adaptive it just got worse, because a variable threshold needs a volatility estimate, which needs a lookback window, which needs its own tuning. I'd rather have one number I can actually see than three hidden ones quietly overfitting where I can't.

Short fade · 3× leverage · in-sample · Bybit · 2023-06 → 2026-06

Short-fade strategy equity versus BTC at 3× leverage, in-sample on Bybit Jun 2023–Jun 2026: strategy 5.22× against BTC 2.53×, with the monthly returns table beneath.

The short fade on its own. That's 3× leverage on the signal, not a track record — read the assumptions at the bottom before you read the line. White is the strategy, orange is BTC, both normalised to 1 at the start; the table underneath is every month it actually traded.

Monthly returns · short fade · 3× (%)
J F M A M J J A S O N D Yr 2023 +2.9 · · · -4.6 -1.7 +2.8 -1 2024 +9.2 +14.0 -0.5 +8.4 +0.1 -6.5 -3.3 +9.6 -3.9 +38.5 +10.0 -5.0 +85 2025 +2.8 +13.7 +1.6 -9.3 +31.8 +12.1 +17.0 +3.8 -5.9 +17.7 · -6.4 +100 2026 +6.5 · +16.3 +18.4 -3.3 +42

Best +38.5% (Oct ’24) · worst -9.3% (Apr ’25) · 20/31 trading months positive

The entry is where I was wrong the longest. We do not short the top — I can't stress that enough, it's the difference between this working and this taking your account off you. We wait and go in at the daily close plus one hour, on purpose, in a quiet stretch of the day so the volume and the price aren't both shoving against us at once. You let the pump calm down before you lean on it.

The exits are nothing special. A hard stop at 12%. A failed-fade cut, which just means if a trade's been open six hours and never once gone my way and I'm more than 4% down, I kill it there instead of feeding the full stop later. Otherwise a three-day time limit and it's out either way.

The best single thing I found wasn't an entry trick or an exit trick, though — it was age. Only short coins that have been around a while, roughly 300 days or more. Brand-new listings squeeze shorts like their life depends on it; they're the ones that rip another 80% while you're already underwater and margin-call you out of a perfectly good idea. The fade only behaves on names that have already lived through their hype. That one filter did more than every line of execution code I wrote.

I tried to out-engineer it first

Here's the daft chapter, and there are a few of these. I didn't want any of this slow, boring stuff to start with — I wanted a machine. A continuous observation engine, websockets only, a colocated box, the whole thing tuned for speed like I was on a prop desk: blazingly fast Rust and C++ libraries, Polars instead of pandas, every microsecond shaved off like it was sacred. I was going to win by being faster than everyone else in the room.

I built it. It sat there watching the whole market all day, waiting for a fade to start. And it started buying pumps. I'd watch it open a short into something still going straight up, watch the next candle land green, watch my own number go red one tick at a time while the thing it shorted printed a fresh high. I'd built a thing to sell pumps and it spent its whole first day buying them instead. I tried to save it the obvious way — splitting the signal off from the execution and hunting for sniper entries that would wait for the fade to actually start before pulling the trigger. Didn't work. All that did was turn a fast bad trade into a slow one.

And then the one that actually taught me something. I went digging for why the continuous engine had ever looked good — because its backtest had been gorgeous — and I found a look-ahead bug worth about 25 hours. One of the features it ranked coins on was reading a candle that hadn't finished forming yet at the moment the model swore it was deciding. It had a full day of tomorrow already in its pocket. When I forced every feature to use only what was genuinely knowable at the instant of the decision, the lovely curve folded flat into a losing one. The best result I'd produced in two months was me cheating without noticing — and I'd been a bit proud of it, too.

Continuous engine · post-fix · exploratory

Continuous engine equity versus BTC once the look-ahead bug was removed: the strategy bleeds to 0.32× against BTC 2.47×, a 77.9% drawdown, with the monthly returns table beneath.

The same engine once every feature was forced to use only what it could have known at the instant of the trade. The gorgeous curve became this — a steady bleed to a −78% drawdown. I'm keeping it in on purpose. This is what an honest version of a fake edge looks like. The engine is switched off now.

So I switched the engine off and took the lesson, which was bigger than one dead machine. If you only pull the trigger once a day then speed buys you nothing — there's no race on — and it turns out the slowness is the actual point. Waiting that extra hour for the pump to wear itself out is the reason the trade survives at all. Get there fast and you just arrive in the middle of the squeeze. Being fast didn't help with any of it; it just got me to the bad trade faster.

Then I went down the order-flow rabbit hole

Everyone tells you the real edge is in the order flow. The tape, who's hitting the bid, who's leaning on the offer, the imbalance the candles hide. So naturally I built the whole thing to read it: signed order flow, taker imbalance, aggregated up from the raw trade prints, the lot.

It was a project on its own. Pulling the raw trades point-in-time meant something like a hundred thousand little archive files a day, crawling in at a few files a second, overnight, for days — my machine sounding like it was trying to leave the house. And after all of it, after every test I could think to run, standalone, as a filter, as a sizing input, the signal was there but it was tiny. Real, and far too small to trade on by itself, at least for what I was doing.

So I deleted the entire pipeline. It was real, just too small to matter, and I wasn't going to keep re-downloading a hundred thousand files a night to keep proving that to myself.

The bit that's actually worth knowing

After all that, the single most useful thing I learned is almost stupidly simple: the edge is mostly in which coins you pick. The exact minute you get in barely moves the needle. I tested it properly in the end — my clever fade-confirming sniper entry against a dumb short-it-an-hour-after-the-close-and-go-to-bed, side by side — and at hourly resolution only something like 3 to 9 percent of the trades even came out different. The clever version added basically nothing. I'd spent weeks on the part that feels like skill, and it was the wrong part.

The other half: a book that wins when the short doesn't

A short book only makes money when stuff blows up. Trouble is, stuff doesn't blow up on schedule, and when you're flat for months you start to lose faith in it — usually right before it'd have paid off. So I built a second book that does the opposite.

It's the same idea as the short, just flipped. The short fades a pump that's running out of steam; the long rides a pump that's still going — but only the strong ones, only when Bitcoin and ETH are both in a clean uptrend, and it shrinks its own size automatically when things get too wild. On its own it's not much. It barely trades, maybe 60 to 70 days in a whole year, and if you push its history back before 2023 the standalone record falls apart, which tells you how much to trust it as a money-maker on its own. Which is: not much.

Long FOMO-chase overlay · 3× leverage · in-sample

Long FOMO-chase overlay equity versus BTC at 3× leverage, in-sample: strategy 1.82× against BTC 3.07×, with the monthly returns table beneath.

The long on its own barely trades and lags BTC. That's fine — look at what it does to the combined line further down, not at this one. I don't run it to make money.

Monthly returns · long overlay · 3× (%)
J F M A M J J A S O N D Yr 2023 -0.4 -6.7 · · +23.8 -1.7 +2.2 +16 2024 -1.5 +9.9 +2.3 · +1.4 -0.9 +1.6 · +1.8 -1.5 +19.8 -1.7 +34 2025 -1.2 · · +3.5 +11.5 · -2.5 -1.1 -0.9 +1.5 · · +10 2026 +4.0 · -0.8 +1.4 +1.8 +7

Best +23.8% (Oct ’23) · worst -6.7% (Jul ’23) · 14/26 trading months positive

I don't run it to make money, though. I run it because it's almost perfectly uncorrelated with the short — slightly negative, even — so it's usually green on exactly the days the short is getting hurt. On its own it's a shrug. Bolted onto the short it just makes the whole thing less jumpy, which is mostly what stops you bailing at the worst possible moment.

What it actually taught me

People want the strategy. Honestly, the strategy is the least interesting thing I walked away with. Here's the rest.

It started life as a completely different strategy and got gutted and rebuilt more than once. A lot of it had nothing to do with markets at all — just infrastructure. There was one night I pushed the same one-line fix four times because the box kept coming back up on the old version and I couldn't work out why. 2am, half-convinced the server was messing with me, and it turned out I'd pinned the wrong host key weeks earlier. A fair chunk of this job is just a person arguing with a computer in the dark about a config file.

The research side taught me harder lessons. At one point a run I'd set up came back and basically said shelve it, this is dead, and I nearly did. Then there was a long stretch where the strategy looked genuinely worthless in the backtest, returns gone, and I'd written it off. Turned out it wasn't the strategy — it was me. I'd quietly stacked three mistakes on top of each other: the worst possible fill on every trade, far too few positions so each loser hit like a truck, and the signal and the execution mashed together so I couldn't tell which one was failing. I fixed the measurement, left the strategy alone, and it stood back up. That one stuck with me, because if a bad test can bury a strategy that actually works, then a flattering one can just as easily make a useless one look great — and most days you can't tell which you've got.

So what I actually built over two months is a habit of not believing my own good news. It's not really a strategy, and it's definitely not alpha. Every time a number looked too good it turned out to be a bug. The gorgeous continuous curve was the look-ahead. The strong early numbers were survivors. Now, when a result looks great, my first move is to go hunting for what's broken — and more often than not, I find it. I keep an actual list of the mistakes I refuse to make twice. 25 of them now:

A few off the list of 25

  • Point-in-time data, always. The dead coins stay in, at the size they really were.
  • Every feature can only use what was knowable at the moment you act on it. No exceptions, no tomorrow's candle.
  • Fills priced at the worst the bar actually traded — capped so I'm not inventing a fantasy wick, never the friendly midpoint.
  • Costs charged both ways, then tripled, to see if the thing still breathes.
  • Funding paid to the exit that really happened, not the one I planned for.

None of it is exciting and all of it exists because I believed something pretty once and paid for it.

Where it actually stands

The charts here are in-sample backtests, and I want to be exact about what that is, because the exactness is the only part I fully trust. They're backtests. Not out-of-sample, not real money, and definitely not a promise of anything. The system runs on a demo account, paper only — there's a real-money path in the code but it's switched off and it's staying off. No real money has been near this. The only honest judge is the forward test, and that's barely started.

And here's the part I least want to write. When I pull the returns apart, most of it isn't me being clever — it's me getting paid for shorting volatile, illiquid garbage, which is a thing the market pays anyone to do, no genius required. There's a real signal sitting on top of that — small, regime-dependent, mine — but a lot of what felt like skill was just the market handing money to whoever was willing to stand in that spot, and for that stretch it was me. I'd rather say that plainly than dress it up.

The combined book

This is the one that actually matters: the short and the long together.

Combined book · short fade + long overlay · 3× · Bybit · 3 years

Combined book (short fade + long overlay) equity versus BTC at 3× leverage, in-sample over three years: strategy 9.50× against BTC 2.98×, with the monthly returns table beneath.

Short fade + long overlay, both at 3× leverage, in-sample over three years. At this leverage the short does most of the work — it's the higher-frequency book and compounds harder — and the long's job is to keep the ride less jumpy rather than add return.

Monthly returns · combined book · 3× (%)
J F M A M J J A S O N D Yr 2023 +2.5 -6.7 · · +18.2 -3.4 +5.2 +15 2024 +7.6 +25.1 +1.7 +8.4 +1.4 -7.4 -1.7 +9.6 -2.2 +36.5 +32.2 -6.6 +147 2025 +1.6 +13.7 +1.6 -6.1 +47.0 +12.1 +14.1 +2.6 -6.8 +19.5 · -6.4 +122 2026 +10.8 · +15.4 +20.1 -1.6 +51

Best +47.0% (May ’25) · worst -7.4% (Jun ’24) · 22/32 trading months positive

The configuration

  • Universe: full point-in-time, every coin that ever traded including the dead ones, top 30 by liquidity excluded.
  • The short: a volume / liquidity migration event — turnover ≈ 6× its weekly average, a big jump up the liquidity ranks, a real move of its own, a strong close — only on coins 300+ days old, only when Bitcoin's 30-day trend is up. Enter at the daily close + 1h. Exits: 12% stop, a failed-fade cut at six hours, three-day max hold. Up to ~12 names at once.
  • The long: the mirror image — a FOMO-chase that rides strong pumps in a BTC-and-ETH uptrend, ATR-based stop and target, three-day hold, run as an overlay on top of the short rather than its own book.
  • Everything is cross-checked independently on Binance, not just Bybit.

The assumptions, which matter more than the line does

  • The curves are drawn at 3× leverage so the lines are legible side by side. That's pure leverage on the same signal — it scales returns and drawdowns together. The deployed short runs roughly 1× its own gross; the deployed long is sized separately.
  • Entries fill at the close-plus-one-hour bar, never on the signal bar itself.
  • Stops fill at the worst price the bar actually traded, capped at 10% past the trigger. Never the friendly midpoint.
  • Costs: ~15 bps round trip as a taker — then re-run at triple that to make sure it still holds up.
  • Funding charged to the actual exit, not the planned one.
  • No feature is allowed to use anything it couldn't have known at the moment of the decision.
  • In-sample only. Demo and paper only. No real money. The forward test hasn't really started yet.

It goes into forward testing now — real time, no peeking, no reading a candle before it's closed this round. We find out together whether it's a strategy or just two months of me believing things. And if it turns out to be nothing, well — at least I've gotten better at catching myself before the market does.

— R

Back to Ideas