Qullamaggie Swing Trading Setups
Notes from researching Qullamaggie's trading style and setups.
Introduction:
In the world of trading, few names resonate as strongly as Kristjan Kullamägi, also known as Qullamaggies. Renowned as one of Sweden's top traders, Kullamägi has achieved remarkable success by adhering to three simple yet timeless trading setups. What sets his approach apart is its universality; these setups have proven effective not only in contemporary markets but also in historical ones, spanning decades and even centuries. Join us as we explore Kullamägi's methodologies, dissect his setups, and unveil a Python-based scanner designed to identify these setups in real-time. Discover the secrets behind Qullamaggies' enduring success in the unpredictable world of trading.
Breakout Setups:
Flag breakouts: Effective strategy across timeframes; focus on defining your timeframe and trading accordingly.
High ADR% and big ranges: Look for stocks with high volatility and clean charts for explosive moves.
Timing of breakouts: Buy breakouts regardless of time of day, but ensure market conditions and volume support the setup.
Avoid buying when stock is up more than ATR: Wait for pullbacks or consolidation before entering.
High Tight Flags (HTFs): Look for consolidation near moving averages with higher lows or rounded bottoms for optimal setups.
Second flag breakout: Subsequent flag breakouts after the initial one may present further trading opportunities.
Beaten-down stocks: Can potentially experience significant moves, especially when evidence suggests they're not going bankrupt.
Patterns on all timeframes: Flag patterns are powerful across daily, intraday, and weekly charts.
Exit points: Use shorter-term SMAs for faster-moving stocks; 10 or 20-day SMA can be suitable for exits.
Strength of first leg: Stocks that exhibit strong initial moves often continue to perform well in subsequent legs.
Persistence of breakout/support levels: The more times a breakout/support level is tested, the higher the probability of an eventual breakout or breakdown.
Longer-term trading: Apply the same patterns, but consider fundamental analysis for larger-cap stocks; look for earnings power or future drivers.
Stalking stocks: Focus on trend and chart patterns rather than solely relying on fundamentals, especially for quick trades.
Episodic Pivots:
Intraday trading: Typically focuses on 1 or 5-minute charts at market open; may also trade in the post-market if liquidity permits.
Preference for fast-growing stocks: Prioritizes stocks with strong revenue growth, even if they're not profitable.
Earnings-driven moves: Study major market movers, emphasizing earnings growth as a key driver for sustained upward momentum.
Key elements of Episodic Pivots (EPs):
Long-term uptrend followed by sideways consolidation.
Breakout on significant volume with earnings beat and strong growth.
Provides good risk/reward trades for longer-term positions.
Time commitment: Only requires 1-2 hours per day, primarily before market open and shortly after, focusing on pre-market and after-hours volume.
Trading strategy for earnings season:
Scan for stocks gapping up on volume during after-hours and pre-market.
Look for growth, analyst beat, and favorable chart patterns.
Allocate 10-20% of capital into well-researched earnings trades.
Criteria for explosive earnings plays:
Strong earnings surprises.
Emerging from significant chart bases with high volume.
Importance of growth estimates: Market values forward-looking growth; missing on both EPS and revenue can have negative consequences.
Impact of choppy earnings: Inconsistent earnings results can lead to sideways movement in stock prices over extended periods.
Other Things to consider:
Watchlists:
Uses a combination of fundamentals and momentum (“strong”, “stronger”, “strongest”). Then he has “strongerest” scan that scans these three watchlists where the criteria is, above yesterdays highs up 1% on the day.
Macroeconomics:
Macro is irrelevant, if the macro is good and the charts are sh*t, it doesn’t matter you’re not gonna make any money, and if the macro is sh*t but the charts are good who cares if the macro is sh*t you’re gonna make money. Unless you have >$100M you probably shouldn’t care about macro at all.
Need to remember that when he is referring to “macro”, he is not referring to the overall market. You still need to have good market conditions to trade the types of setups he is trading.
Shitty Stocks:
I love shitty stocks, shit stocks are the ones that make the biggest moves, both up and down. Stocks can make huge moves without any earnings, the best moves in the stock market are stocks that have either no earnings or very small earnings, that’s how the stock market works.
Sector Rotation:
Cyclical stocks, that’s how they do, they have good years, really good years, and really bad years, compared to a growth stock that just grows a bit every year.
Company Announcing Bankruptcy:
Some stocks that are beaten down and about to go bankrupt, then they announce they’re hiring a restructuring firm, like MNK bounced 170% in a few days and that was the low.
Same thing happened to CNK a few years back, was beaten down to years, had a big gap down, and then that was pretty much the low then it bounced over 300% in the next few months. That could be a tool to have in one’s toolbox, kinda interesting phenomenon.
Another example more recently was Tupperware Brands Corporation TUP or WeWork Inc. (now delisted), where, after announcing bankruptcy, there stock skyrocketed.
Scanner and Technical Analysis:
ADR (Average Daily Range) above 5%
Price X% greater than Y days ago (1 month, 3 month, 6 month scanners)
Price within 15% of 6 day high
Price within 15% of 6 day low
$Volume (close * volume) greater than 3,000,000
Listed Stocks Only (No OTC, etc.)
1 Month: 25% Greater than 22 Days ago
3 Month: 50% Greater than 67 Days ago
6 Month: 150% Greater than 126 Days ago
Feel free to adjust these settings to get more or fewer results.
Python codes for ADR:
# Function to calculate Average Daily Range (ADR)
def calculate_ADR(data):
data['DailyHigh'] = data['High']
data['DailyLow'] = data['Low']
ADR_highlow = (data['DailyHigh'] / data['DailyLow']).rolling(window=14).mean()
ADR_perc = 100 * (ADR_highlow - 1)
return ADR_perc
Python function for scanner conditions:
# Combined function to apply scanner conditions
def apply_scanner_conditions(stock_data):
# Calculate 52-week high and low
lo = stock_data['Low'].min()
hi = stock_data['High'].max()
# Calculate thresholds for conditions 6 and 7
x = 1.3 * lo # 30% above its 52-week low
y = 0.75 * hi # 25% of its 52-week high
# Calculate RSI
stock_data['RSI'] = ta.momentum.rsi(stock_data['Close'])
# Precompute rolling means for different window sizes
rolling_means = {
'200': stock_data['Close'].rolling(window=200).mean(),
'150': stock_data['Close'].rolling(window=150).mean(),
'50': stock_data['Close'].rolling(window=50).mean(),
}
conditions = (
(stock_data['Close'].iloc[-1] > rolling_means['200'].iloc[-1]) & ## close > 200 SMA
(rolling_means['150'].iloc[-1] > rolling_means['200'].iloc[-1]) & ## 150 SMA > 200
(rolling_means['50'].iloc[-1] > rolling_means['150'].iloc[-1]) & ## 50 SMA > 150
(stock_data['Close'].iloc[-1] > x) & ## close > 30% above 52 Week low
(stock_data['Close'].iloc[-1] > y) & ## close > 25% above 52 week high
#(stock_data['RSI'].iloc[-1] >= 50) & ## Close > RSI 60
(stock_data['Close'].iloc[-1] > 1.25 * stock_data['Close'].shift(22).iloc[-1]) & ## close > 25% Greater than 22 Days ago
(stock_data['Close'].iloc[-1] > 1.5 * stock_data['Close'].shift(67).iloc[-1]) & ## close > 50% Greater than 67 Days ago
(stock_data['Close'].iloc[-1] > 2.5 * stock_data['Close'].shift(126).iloc[-1]) ## close > 150% Greater than 126 Days ago
# (stock_data['Volume'].iloc[-1] * stock_data['Close'].iloc[-1] > 3000000) ## Volume (close * volume) greater than 3,000,000
)
return conditions
Use both the the functions to filter stocks above ADR > 5 and then rest of the conditions.
Github repository for Qullamaggie code implemented in streamlit web page.
Repository - Link
The blog does not cover the flag patterns and other technical analysis methods used by Qullamaggies. However, in the next session of technical analysis blog, we will delve into Bull Flag patterns and HFT flags. Stay tuned for more insights! Thank you for reading.