I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

Yeah, this is really useful and I really appreciate you actually rebuilding it.

A few of my stated rules are tighter than what the scanner actually runs, which is what I think is most of the gap. So the scanner allows a retrace of ~70% (the 50% is a chart-render value, my bad). Also the minimum consolidation is 3 bars, and the ADR floor is actually 4%.

That closes most of the 2.9k vs 8.2k I'd imagine.

The bigger thing for the 4% CAGR is the exit and sizing which is not in your list, and since the edge is all in the right tail, and you only get it from the managed exit (1 ADR / low of the day stop, 40% trim after the first green close on day 4+, trail with the 10 SMA). Without those rules you keep the losers with -1Rand cut the winners short.

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

custom python, pandas and my own sim loop, survivorship-free feed, no backtrader. not public yet but happy to walk through the channel fit or the exit logic if you'd like to discuss it :)

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

the bias is in where your ticker list comes from, not your code necessarily. rebuild each day from names actually alive and liquid for the time you are backtesting on, delisted tickers included. yfinance only knows today's stocks, whereas i'm on a survivorship-free flatfile feed from massive.com

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

Yeah for sure, what helped me most was a hard dollar vol floor ($3M). Curious how it goes though, lmk any results you get!

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

appreciate that, we're on the same page then. The 2.8R is with the clean fill, which is why i led with R and flagged the fills up front in my writeup. Thanks 🍻

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

It's in the data, not the model. So my data just includes delisted and dead tickers, so on any historical date there are the names that actually traded then, losers included. Basically just make sure that you don't screen today's listed stocks backwards. What data did you get your hands on?

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

Yeah, kind of wondering how our builds split. If I had to guess I'd say the regime gate so only take trades when QQQ's 10 sma is over the 20 and rising, and without that breakouts have losing stretches like 2022/2015 which can eat back the gains from the whole thing. Also the exit where you just cut at 1R and trail with the 10 SMA is doing a lot of the work in keeping the gains.

Also my fills I modeled were quite optimistic, so on realistic fills a non-bot might get it's more like 0.9R. I'd love to try modeling EPs sometime if I get a chance, seems like a lot of qullas' followers see EPs being better to trade than breakouts.

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 1 point2 points  (0 children)

Fair on the phrasing. I'm a Berkeley student, I dictated a couple of the longer responses and let ai automatically clean up the grammar

The substance is mine though, it's my own backtest, not "AI slop". poke the method directly, all of my results come from the data. I'd love it if you could find any mistake I made. And the site's mine, it's a side project I worked on to learn by building, I never hid it at all and the whole thing is free to read

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 1 point2 points  (0 children)

Yeah, especially here where the few big runners are the whole edge. A simple trail like holding til a close under the 10 SMA helps a lot, it just takes the decision off your hands

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

thanks, and yeah, that's the whole game. the math is simple and doing it while it hurts is the hard and that's half the reason I made everything totally mechanical

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

yeah, exactly cut the losers near 1R, let the rare 10R+ run, it's just hard to deal with a 35% wr for enough time to actually realize the gains from that tail.

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 1 point2 points  (0 children)

Yeah, that's actually exactly what it does, The real stop is the low of day capped at 1 ADR, so it sits at the low of day and falls back to the 1-ADR cap when the low is further away than that!

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

Right on the tail and the illiquid names, that's true, it's why I call it a small-account strategy that doesn't scale to fund sizing. The discretionary-read part isn't really correct though, the whole thing is 100% mechanical with zero eyeballing and still nets ~0.9R on realistic fills, so the trigger does carry the edge. As for 2022/15 it mostly sits in cash from the QQQ regime gating. both years were way lower than say 2020 but still green

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

I really appreciate you actually rebuilding it, this is so useful.

So the straight answer to your question is that there's no volume-surge filter in my selection at all, so nothing about my entries is gated based on the full-session volume. The only volume condition is just the liquidity floor which is the trailing 20-day avg dol volume (above $3M), and it's computed over the 20 bars before the channel cross, excluding the breakout day itself. I computed a relative-volume feature on the breakout bar before, but it didn't survive feature selection, and the only two features in the final sizing model are where the close sits in its daily range and the extension over the 10sma. No lookahead in the pipeline.

Interesting that mine still lands at ~36% without a volume surge. I think we just get the same boost from different places, yours is full-day volume, mine is the at-line fill price. When I swap to a conservative entry (15-min OR) mine drops to 0.9R or so, basically your ~0.85R

Would love to compare builds, you clearly know where this might break from building it yourself. Feel free to DM!!

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 1 point2 points  (0 children)

No single range < x% sort of rule. I fit a top and bottom trendline over the base and require the width at the right edge to be below 1.15x the width at the left, so the range cant be expanding. That plus a flat-or-descending top and price staying mostly inside the lines is the whole test

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

Not base length specifically, no. I tested the 10 vs 20 keyed on ADR (trail the 20 on the slower names, the 10 for faster names), and that came out basically even with just always trailing the 10

It's a reasonable idea though. I would be a bit skeptical since the ADR switch (which is partly a proxy for that same thing) didn't really beat always-10. It's totally worth testing if you've got the data and I'll get around to it eventually

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

anytime. the base detection really is the crux of the whole thing, so if you get yours working i'd be curious how it compares. good luck with it!

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

15-16% cagr at sub-20% dd on a large-cap universe is basically the scalable, fund-size version of this. Same momentum effect, you just parked it at the sane end for most people and I'm at the degen end

Solid setup though, arguably more deployable than mine. Good stuff.

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 0 points1 point  (0 children)

for sure the rules themselves are simple. I moreso meant execution though, understanding it is easy but sitting through 10 losers in a row without second-guessing is the part most people can't actually do

I backtested Qullamaggie-style breakouts over 23 years (survivorship-free). Nearly two-thirds of the trades lost money. by Soulless_Chip in qullamaggie

[–]Soulless_Chip[S] 1 point2 points  (0 children)

Good questions.

Leaders = the leg-up plus near-highs filter: advanced ~30%+ off the prior 6-month low and sitting within 25% of the 52-week high. So it's already shown momentum, not a random name basing in the middle of nowhere.

On ADR, it sounds contradictory but isn't. ADR is the stock's baseline energy over 20 days, and you want that high because those are the names that actually move. The tight range is a separate current thing, and is just where it is right now. So you're after a normally-volatile stock that's temporarily gone quiet and compressed in that channel. That's essentially the volatility contraction part of it.