Systemizing Kullamägi’s Parabolic Short Setup
First post of a 3-post series on systemizing his approach
Kristjan Kullamägi’s post is something I wanted to systemize for years. But for a few different reasons, I kept hitting walls.
First, my backtesting engine wasn’t up to speed. I needed a database of 3/6/9-month winners per day so I could isolate only stocks on that list in the backtest. I achieved this by running a script on historical data for all US stocks from Polygon.
Then came the challenge of earnings reports—I needed to organize them so I could access only the information known at the time of the simulated trade. I solved this by sourcing data from FMP and storing it in my database.
Finally, I needed a way to test ideas quickly and efficiently. I found that with Spikeet.
In the next few posts, I’ll break down my attempt to systemize Kullamägi’s setups, which include:
Parabolic Shorts
Episodic Pivots
Breakouts
This time: Parabolic Short.
When Stocks Stretch Too Far: A Short Setup
Ever seen a stock shoot up so fast it seems unstoppable? It’s like a rubber band stretched to its limit—ready to snap back hard.
But here’s the thing: knowing when and how to catch that snapback is what separates a good trade from a disastrous one.
This setup can be highly profitable but dangerous if done wrong. Here is how Kullamägi puts it:
How to Spot a Stretched Stock
Look for stocks that have:
If Large-caps up 50-100%+ in a few days or weeks.
If Small-caps up 300-1000%+ over the same timeframe.
They’ve been rising 3-5+ days in a row.
Where to Enter the Trade
Short when the stock breaks its opening range low (1- or 5-minute candles).
Or wait for the first red 5-minute candle if the stock keeps flying at the open.
Another entry can be when the stock cracks, bounces back to VWAP, and fails (watch for a red candle there).
Managing Risk
Place your stop at the high of the day or VWAP reclaim after failure.
Profit Target
Aim for the 10- or 20-day moving averages.
His tip for entry: Patience is your edge. Let the early shorts get burned. They fuel your success when the rubber band finally snaps.
All of that sounds great but my goal is to create black & white rules to take advantage of the set up.
So I decided to separate the data into 2 categories
Large caps that moved more than 50% in 3 days and small caps that moved more than 300% in 3 days.
To create a quick sketch of the set up, I requested some data with Spikeet’s AI tool. My original request didn’t go well, so I asked ChatGPT to simplify it – this was the template I ended up using:
“I need a list of stocks that meet these criteria:
Market Cap: Over $XXX *
Price Movement: Up Y% or more over the past Z days
Daily Performance: Each of the last Z days must be green (positive daily close in a row).
Columns required for each stock:
Today's open, high, low, and close
Unadjusted open, high, low, and close
Market cap
Unadjusted pre-market volume
Unadjusted average volume for the past 3 days
Yesterday's close”
* you can do the same thing with “Under $XXX” market cap to test the smaller caps.
The platform spit out the data, and I got to work.
After a few iterations with Spikeet, I got an Excel file I could use to test a very simple idea:
For every stock that fits the criteria:
Short the open, cover by EOD.
My goal was to test:
A. Whether the basic strategy had an edge
B. What stop losses to use
This is where I was surprised.
I’m used to mean reversion strategies with very wide stops. So when he suggested using tight stops, I was almost certain he was wrong. But after running the numbers myself, here’s what I found:
The tight stop approach was better.
Next, I tested the profit target using my backtesting engine (this could also be done in Excel with Spikeet, but by this point, I’d seen enough to move on to testing it in my system).
I wanted to compare his recommendation of using a 10/20 SMA profit target against what usually works well for mean reversion strategies—time-based or behavioral-based profit targets. You can read more about those here.
In this case, both the time-based and SMA-based profit targets delivered almost identical results.
So again, I’m usually not a fan of using profit targets in mean reversion strategies, but to my surprise, here it made no real difference.
Next Steps for You
Hopefully, the above gave you some ideas to explore when testing parabolic shorts. Potential next steps could include:
Testing intraday data: Instead of just using OHLC data, test different entries and stop losses based on intraday movements to better mimic his post recommendations.
Expanding the streak: Try testing 4 or 5 consecutive green days instead of 3.
Normalization: Incorporate normalization techniques for more robust results (discussed here).
Variations for smoother PNL: Create and combine a few variations to achieve a smoother PNL curve.
My Final Setup
After mixing a few variations, I arrived at a system I’m happy to start live testing with:
CAGR: 27.7%
Max DD %: -20.9%
Number of trades since the end of 2007: 1869
Recent trade example: ABAT 12-27-2024
Momentum Breakout
Next week, I’ll dive into his momentum strategy — by far the toughest one for me to code.
P.S. Thinking about using Spikeet? I might have some insider perks – let me know in a reply email. I’m also available for any question regarding the set up if it doesn’t include me revealing the exact rules I used 😉
What’s this Spikeet thing you speak of?
in the ABAT trade you show, where is the stop? you mentioned tight stops but that's a decent sized upper wick