- The Investors Collaborative Newsletter
- Posts
- Quantitative Theorycrafting and Strategy Deep Dive
Quantitative Theorycrafting and Strategy Deep Dive
Investors Collaborative Community Newsletter
I’ve been busy this week.
Don’t get me wrong, I’m almost always busy. Two jobs, a community to run, a business I’m trying to operate, and you my dear reader. Life is busy, but this is an especially good kind of busy. I’ve been working on a strategy all week again.
Earlier this week, I hopped in a call in #General voice chat with @Dereck1776, who was watching the video below. I made it about 2 minutes in before I found a gem of information that decided the course of action for the next week worth of work, and proceeded to not watch the rest of the video, to be bluntly honest.
Okay, cool video. Its 4 lessons seem far too straight forward however.
Positive Expectancy - make money on your trades. This seems like the hard part.
Position sizing - You need to let your shit play out before needing to pull it due to capital loss/destruction.
The other 2? Completely irrelevant on Composer. But that first rule though, positive expectancy… and that chart… I’ve seen these stats somewhere before…
This gave me a brilliant, brilliant idea
Step 1. Open the Database
Step 2. Follow the chart from the video that describes the interaction between win rate, profit factor, and overall profitability.
Step 3. Create a monstrosity of a strategy with no idea how it will turn out.
So if you didn’t read last weeks newsletter, go do that. We’re going to be following in the same vein and working out of the database this week, and I’m not going to be providing the intro level course this time.
Long time readers will appreciate how extreme of a departure from my normal style something like this is. No clear reason why the strategies work, no real promise they actually do. Now that the list is together, my confidence is simultaneously sky-high in the potential of the project, and at an absolute rock-bottom because of how absurdly high the risk to reward is on this strategy.
Enough foreplay, on to the specifics.
where "Win Days" >= :p0
and "backtest_end_date" >= :p1
and "first_seen" <= :p2
and "Profit Factor" >= :p3
order by rowid limit 5001
p0 = .7
p1 = 2024-01-26
p2 = 2023-11-01
p3 = 1
The above SQL code pasted at the end of the SQL block in the database will display us a list of everything with a 70% or higher win day score, meaning it beats SPY 70% of the time, with minimum OOS times in this, because we have standards. 3 months of testing is my bare minimum, so if you come back to this at some point in the future, just swap the date to something more relevant for the time.
The strategies that come up, and there aren’t many, are insanely long. You’re unable to fit them in a strategy, if you wanted to cram more than one in, for some reason. Once we ignore things that have only ever sat in BIL, we’re left with 4 strategies, two of which fit together.
You can’t even make the 2nd group because the strategies are just too big already. While this is promising because I have a feeling my strategy is going to end up looking like these, I need to press on. This is cool and all, but I have a theory to test here, and this isn’t going to do it for me. Lets try some new criteria.
where "Win Days" >= :p0
and "backtest_end_date" >= :p1
and "first_seen" <= :p2
and "Win Days" <= :p3
and backtest_start_date <= :p4
and [Profit Factor] >= :p5
and [Cumulative Return] <= :p6
order by [profit factor] DESC limit 5001
p0 = .4
p1 = 2024-01-26
p2 = 2023-11-01
p3 = .8
p4 = 2016-11-01
p5 = 2.5
p6 = 2000
Now we’re cooking
We’ve successfully broadened, yet narrowed our search. The backtest needs to go back to 2016, the Cumulative Return can’t be absolutely fucking absurd, and it has to be super profitable. This gives us 21 total results as of the time of writing.
The thesis is impeccable, as some simple math the video at the top does for us. If you win 40% of the trades you take and get an average of $2.50 in return for every dollar you risk, you’ve got yourself a 40% return. After early withdrawal fees and taxes in a Roth IRA, that sounds like more than enough to cover the costs of day trading. Maybe even worth it in a taxable account.
The statistics on this one already seem impossible, but the numbers are there, at least in recent history. Since we’ve built this around a very clear goal of a 2.5 Profit Factor and minimum of 40% Win Rate monitoring the strategy out of sample is going to be cake.
But it doesn’t need to be this small?
No, thats true. I’m being very, very restrictive with the strategies I’ve chosen to put in the above collection. Now what happens if we…. loosen our requirements a little?
where "Win Days" >= :p0
and "Win Days" <= :p1
and "backtest_end_date" >= :p2
and "first_seen" <= :p3
and backtest_start_date <= :p4
and [Profit Factor] >= :p5
and [Cumulative Return] <= :p6
order by [profit factor] DESC limit 5001
p0 = .6
p1 = .65
p2 = 2024-01-26
p3 = 2023-11-01
p4 = 2016-11-01
p5 = 1
p6 = 2000
It’s…. beautiful
It’s less restrictive, but more restrictive in others because I’m not a fucking robot, I can’t comb through the roughly 800 strategies that come up when I just look at WR > 60%. Maybe some day, or with community help. We’ve got the same CR limits as before, all the same date ranges, but now we’ve bumped the Profit Factor down to 1. “Just don’t lose to SPY 60% of the time” seems like a stupidly simple, yet stupidly powerful concept.
60+ strategies to sort through…. That was a task, but a fulfilling one! I broke from the programmatic, systems based approach I had been sticking with up to this point and chose to ignore everything with Beta Baller, Baller, or literally any allusion to Beta Ballers in its name, as well as continuing to not use things that had been in BIL for the entirety of the last 2-3 years without firing in any way.
The result, as you could say, was magical.
Now full transparency, I have zero faith that these statistics would actually play out in live trading. A 20% AR with a 3% DD absolutely beggars belief. Proofing out these strategies is a huge part of this ongoing process.
Okay Jake so you threw a bunch of strategies together and made an impossible backtest, welcome to the club.
Okay, but if I’ve already come this far down the “impossible” rabbit hole, why not just turn the impossible up to 11?
Well, there it is. One of the most statistically wild things I’ve ever built. I’m still mentally parsing though how extreme the difference between the current statistics and the Out of Sample statistics will be. In discussion over on the Discord Server (where you could have gotten this strategy a day early, along with a chance to roast me for the inefficiencies with zero knowledge of the plan, process, or goal!)
Okay cool strat, thanks I’m gonna go run it!
I don’t think I’d do that yet.
As the name of the strategy implies, we’re on a multi-step journey.
Step 3
Step 3 is running all 48 substrategies through the correlation tool and making sure there are no duplicate logic branches, or anything with a correlation score of 1. Also included in this step is finding things that are -1 correlated, or completely inverse, and condensing their logic.
As I hope you’ve noticed by now, most of the strategies sit in BIL a lot of the time. Minimizing the time they sit in BIL will maximize the amount of work our money will do for us. It may/will also increase drawdown, but when we’re talking going from a drawdown of 2.5% to maybe 8%-10% when the process is all over I find that a totally acceptable change.
Step 4
Step 4 involves the incredibly daunting task of evaluating individual logic branches inside each strategy and determining things that cannot fire at the same time, 75 RSI on TQQQ and SQQQ can’t possible happen at the same time, so we condense any triggers with those two exact things, and we’ve got one block less that is going to be sitting in BIL. Boom, it’s like statistical magic.
After step 4, I’d consider running this. However, I’d also like to attempt to shrink the ticker list used in this strategy, as you’re likely going to need several thousand dollars in this strategy to even come close to having your backtest match live trading, due to the prevalence of unfractionable shares. I’d call that Step 5, but I’m honestly not sure it’s even possible.
Reply