The S3 "Super Simple Strategy"

Home Forums Logical Invest Forum The S3 "Super Simple Strategy"

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
  • #70972
    Tom Gnade

    I’ve decided I no longer want to use any leveraged ETFs in my investment strategies. The premise that they actually hedge market risk works, but only sometimes. Their inherent volatility can give you “shock and awe” moments – usually to the downside. ZIV was a trainwreck when the vol trade exploded, and hasn’t been much help since. I have done a lot of thinking about this, and here’s what I think will work best: a “super simple strategy”. It’s similar in premise to the BUG, in that the primary drivers are few, and we stick to the basics – no leveraged funds, SPY/QQQ/CWB as risk assets, GLD, TLT, SHY, and perhaps a few other symbols as “hedges”. The real trick here is that the strategy uses every single cash stop method available, separately, on each and every symbol and sub-strategy, to try to limit drawdowns, which I’ve found to be the real confidence killer.

    I begin by making a strategy for each of the foundational symbols that will be used as the primary drivers. These single-symbol strategies are only used to implement volatility limits and cash Sharpe limits, when they make a difference. For example:

    TLT 428.44% {CAGR:7.558, SR:0.586, V:12.896, DD:-26.59}
    TLT (with stops) 427.41% {CAGR:7.546, SR:0.617, V:12.232, DD:-20.26}

    Even a tiny “break” on the volatility does make a long-term difference. Sub-strategies are cheap, so let’s go with it. Every symbol we use for the S3 strategy will therefore be “stopped” using a combination of vol and Sharpe limits. So, where to go from here? One idea I’ve had for quite some time is that it might be great to pair bull and bear ETFs for the same symbol. I tested it dozens of ways, and it does work, but only for certain volatility profiles, and you have to use the bear symbols carefully. So, I use this approach for the Treasury and Gold hedges in a simple SRE rotation. To control utilization of the bear strategies, which often have terrible return curves, I increase their volatility multiplier, so the algorithm strongly prefers the bull side. By combining the bull and bear symbols for long-term treasuries (TLT, TBF), I obtain the following results over a 20-year lookback period:

    TLT/TBF 698.98% {CAGR:10.228, SR:0.873, V:11.714, DD:-19.32}

    Now we’re getting somewhere – this is a good result based upon simple rules. Remember, the goal here is to retain the shape of the treasury curve, so we still retain its “risk off” profile, but to improve upon it as a long-term holding in every possible way. I use the same approach for every symbol in the strategy, and the end result is quite surprising.

    In my quest to limit drawdowns, I’ve frequently observed that there are “magical sweet spots” in the optima that produce the best results, but that may be surrounded by poor results. Since we’re playing a statistical game with the future, I will steer clear of those “one off” results on the grid, often choosing lower optima that are surrounded by similar results. If I can find a range of lookback periods that all produce a similar range of results, then I conclude it is a statistically higher probability those lookback periods will be continue to function well in the future. Just a guiding principle. It would be nice to somehow code that as an option in QT, as well as optimizing on other criteria rather than Sharpe – for example the maximum drawdown, which is often much larger than the Sharpe ratio.

    Returning to the S3 strategy implementation, my next advancement was to think of ways I could develop a sensible set of “cash stops” that leverage the SR strategy. I’ve observed that combining several similar strategies in a simple SRE rotation can produce better results than any one of them alone. So, we begin with the “base” TLT-TBF rotation strategy, and then implement 2 variants that each use the “CASH” sub-strategy as the only other investment option. One of them is a “low cash” version, where it is limited to 30% allocation, the other is a “high cash” version, limited to 70% allocation. Here are the results:

    TLT/TBF low-cash 640.60% {CAGR:9.747, SR:0.905, V:10.774, DD:-17.62}
    TLT/TBF high-cash 562.66% {CAGR:9.037, SR:0.910, V:9.935, DD:-17.26}

    Notice the returns are lower, Sharpe ratios are higher, and the max draw-down in slightly lower than the base strategy without the cash stop rules. Combining the three together in a “Treasury Rotator” (SRE 1 rotation with its own volatility and cash Sharpe limits), the result is:

    TLT/TBF rotator 674.58% {CAGR:10.032, SR:0.916, V:10.952, DD:-20.00}

    It turns out the SRE strategy really only uses the basic TLT/TBF and TLT/TBF high-cash variants. Also, the results are good but not great compared to the simple TLT/TBF rotator, so you might think it’s not worth all the effort. However, other symbols respond better to this approach. Also, let’s compare the end result to a simple TLT holding, and to the built-in “Treasury Hedge” strategy in QT:

    TLT 428.44% {CAGR:7.558, SR:0.586, V:12.896, DD:-26.59}
    Treasury Hedge 420.39% {CAGR:7.456, SR:0.792, V:9.417, DD:-18.49}
    TLT/TBF rotator 674.58% {CAGR:10.032, SR:0.916, V:10.952, DD:-20.00}

    Since we’re using this strategy as a hedge, and we’re hoping the “rotations” we apply at higher levels of the S3 strategy eliminate some of the draw-down, I’m generally happy with this result. Here’s the results for Gold (GLD/DGZ):

    GLD 552.83% {CAGR:8.94, SR:0.509, V:17.568, DD:-45.56}
    GLD-USD (QT built-in Gold strategy) 595.31% {CAGR:9.345, SR:0.732, V:12.774, DD:-28.22}
    GLD/DGZ Rotator 988.69% {CAGR:12.158, SR:0.871, V:13.957, DD:-18.53}

    Not too shabby. Let’s see what happens when we simply combine the Treasury and Gold rotators into a simple SR2 strategy with minimum allocation 40%. Since these two strategies move in very different ways, the SR strategy can make quite effective use of the two by varying their allocations between 40-60%. Compare this to the QT built-in “Hedge” strategy, which uses a similar combination of Gold and Treasuries:

    QT Hedge 543.39% {CAGR:8.846, SR:0.771, V:11.481, DD:-24.04}
    S3 Hedge 897.16% {CAGR:11.614, SR:1.284, V:9.044, DD:-10.05}

    Wow, that’s a hell of a good result, isn’t it?

    Let’s see what happens when we do the same thing for QQQ, the Nasdaq-100 index fund from PowerShares. There is a Nasdaq bear ETF (PSQ), but I didn’t bother with it. In this case, all I do is take QQQ and implement the various cash stops to it directly. There is a base strategy for QQQ alone, and then one that uses a 30% cash stop, and a third that uses a 70% cash stop. Optimized over a 20-year timeframe, here are the results:

    QQQ 345.27% {CAGR:6.402, SR:0.232, V:27.548, DD:-82.97} Holy sh%t that’s a serious drawdown! If only we had simple cash stops in place…
    S3 QQQ with simple cash stops 819.14% {CAGR:11.107, SR:0.529, V:21.008, DD:-56.16}
    S3 QQQ Rotator with full cash stops 1447.55% {CAGR:14.320, SR:0.865, V:16.551, DD:-21.99}

    Wow! That’s something else, isn’t it? I happen to like the SPLV S&P 500 low-volatility symbol as well, so using the same approach with that symbol:

    S3 SPLV Rotator 2164.61% {CAGR:17.468, SR:0.889, V:19.644, DD:-29.09}

    Why not just flip-flop those 2 strategies against each other in a simple SRE?

    S3 QQQ-SPLV Rotator 3981.46% {CAGR:20.302, SR:1.151, V:17.634, DD:-18.63}

    Sweet result. I’ll cross my fingers and hope it comes true. Lol. Anyhow, back to reality. Let’s combine the S3 TLT/GLD and QQQ/SPLV strategies into a single S3 Risk strategy:

    S3 1475.39% {CAGR:14.522, SR:1.650, V:8.8, DD:-11.66}

    Comparing this result to the underlying symbols:
    TLT 428.44% {CAGR:7.558, SR:0.586, V:12.896, DD:-26.59}
    GLD 552.83% {CAGR:8.94, SR:0.509, V:17.568, DD:-45.56}
    QQQ 345.27% {CAGR:6.402, SR:0.232, V:27.548, DD:-82.97}
    SHY 140.33% {CAGR:1.998, SR:1.425, V:1.403, DD:-2.23}

    You would never think you could do that with those ingredients, would you? Let’s see what a simple SR3 rotation with a 60% maximum allocation would yield, without all the fuss of the cash stops and limits and such:

    TLT/GLD/QQQ/SHY (SR3, 60% max, SHY 20% max, 102d LB) 699.68% {CAGR:10.343, SR:1.188, V:8.703, DD:-10.92}

    Eliminating SHY:

    TLT/GLD/QQQ (SR3, 60% max, 98d LB, -150%MR, 25d MRP) 945.16% {CAGR:11.906, SR:1.435, V:8.298, DD:-12.41}

    And the QT Permanent Portfolio (TLT, SPY, GLD) for reference:

    QT Permanent Portfolio 748.29% {CAGR:10.605, SR:1.381, V:7.679, DD:-13.37}

    Overall, very similar results, though the QQQ variant is an improvement. I would suggest that change to the Permanent Portfolio in QT. Not too bad overall, considering we’re only using 3 symbols, with no cash stops at all. The “dumb” S3 plows right through the 2000 and 2009 meltdowns with aplomb. Wouldn’t you have killed for that back then?

    Still, implementing some cash stop-out rules and using a few extra rotation strategies, here is the result:

    S3 with stops: 1475.39% {CAGR:14.522, SR:1.650, V:8.8, DD:-11.66}
    S3 without stops: 945.16% {CAGR:11.906, SR:1.435, V:8.298, DD:-12.41}

    It’s been a worthy exercise, I’d say. A definitive improvement to the Permanent Portfolio that nearly keeps parity with a simple QQQ investment since 2009 (albeit trading costs would drag performance), but with less than half the volatility and a third the maximum draw-down. Here are the 10-year results compared to QQQ:

    S3 482.23% {CAGR:17.060, SR:2.103, V:8.112, DD:-7.33}
    QQQ 502.18% {CAGR:17.536, SR1.010, V:17.355, DD:-22.79}

    Of course, we know it’s not too easy to keep up with QQQ during it’s best rip in decades while maintaining a hedged portfolio with full cash stops. And, those stops are going to come in extremely handy the next time the market decides to go into nuclear meltdown mode, which will come sooner or later.

    Interestingly, we can improve upon these results still. If I add a similar strategy based upon the impressive CWB fund, and then also include one based upon the Global Markets Rotation Strategy (after giving it the old “S3” treatment) to improve upon the GMRS Hedged strategy results, an S3 Risk Rotator returns the following:

    S3 Risk Rotator 1422.32% {CAGR:14.569, SR:1.871, V:7.785, DD:-7.52}

    It’s an ok improvement I guess, it does cut the vol and draw-down a bit by incorporating CWB and GMRS. How about the real deal though? Starting in October, I’ll be using the S3 strategy, but I will combine it with the granddaddy of them all, the Nasdaq 100 top 4 “N4” strategy. The issue with N4 is of course the volatility. Also, since it picks 4 stocks, it poses a very focal risk. Therefore, I never allocate more than 20% of my total portfolio to N4, since any single stock should never really comprise more than 5% of your total holdings. Also, I will examine the individual symbols and often choose ones further down on the list if their returns look a bit more stable. I also like to avoid holding stocks if they are going to announce earnings during that monthly investment period. Earnings can often deliver a wicked down-side surprise, and I just don’t need any of that nonsense. So, what does this thing look like in an S3-N4 combination? We’ll call this the “real” S3 strategy, so here it is:

    S3 3244.38% {CAGR:21.315, SR:2.253, V:9.462, DD:-8.74}

    Hell yah, that’s what I’m talking about. Now, my personal implementation of this also includes one more little secret surprise that I don’t feel like sharing right now, but if you follow this same recipe, you will arrive at similar results. Happy QT’ing y’all!



    Mark Vincent

    Thank you for sharing Tom,

    Is there anyway you can post the .ini files for these strategies?

    For example here is the US Market Strategy with UIS QQQ (UIS QQQ is the same as UIS SPY using QQQ)

    0 UIS QQQ US Market Strategy TLT GLD
    #UIS QQQ-hedged=#UIS QQQ-hedged,2,1,1,0.00
    QQQ=PowerShares Nasdaq-100 Index,2,1,1
    SPY=SPDR S&P 500 Index,2,1,1
    TLT=Barclays long term treasury (10 years),2,2,1
    StockSet18=0 UIS QQQ US Market Strategy TLT GLD,1,3,StockSetStrategy18,2019-08-12,2019-08-18,#UIS QQQ-hedged@1,DIA@1,GLD@1,QQQ@1,SPLV@1,SPY@1,TLT@1


    Could you post what this would look like for October so we can see what it actually entails?

    The Leverage strategy hasn’t had a single losing month since October last year.

    Tom Gnade

    I’ll try to post some more info soon, not trying to ignore your comments.


    Tom, I really like your thought process here with the S3, I’m also trying to implement a simple strategy that avoids leveraged ETFs. However, I was curious why you would include inverse ETFs like TBF, as they tend to present similar risks as leveraged ETFs in terms of potential liquidity events and operational risk with the process of using derivatives to try to match daily moves. What happens to the numbers if you remove TBF?



    Hi Tom

    I note your comment: ‘I also like to avoid holding stocks if they are going to announce earnings during that monthly investment period’.

    Is your final result based upon manually having to filter out those stocks about to announce earnings in that month or did you just take QT’s recommendation (without filtering for earnings)?



    I’m attempting to replicate your ‘cash stop’ approach by introducing the #CASH strategy against SPLV (only). I get pretty unhelpful results:

    – QT doesn’t even select SPLV and only chooses #CASH.
    – I entered ‘1’ into the ‘Cash Sharpe Limit’ box but this didn’t do much good.

    Can you please explain how to program up your ‘Cash Stop’ approach?



    Tom, you say in your post above:

    “Optimized over a 20-year timeframe, here are the results:

    QQQ 345.27% {CAGR:6.402, SR:0.232, V:27.548, DD:-82.97} Holy sh%t that’s a serious drawdown! If only we had simple cash stops in place…
    S3 QQQ with simple cash stops 819.14% {CAGR:11.107, SR:0.529, V:21.008, DD:-56.16}
    S3 QQQ Rotator with full cash stops 1447.55% {CAGR:14.320, SR:0.865, V:16.551, DD:-21.99}”

    Well, I tried to replicate your results, using a Static Rank algo with QQQ and #CASH, max 70% allocation, optimised over 20 years and these are the results:

    CAGR: 5.592%
    Sharpe Ratio: 0.294
    Volatility: 19.019
    Drawdown: 67.51%

    Like Tom’s previous posts on his ‘Beast’ algorithm, I find it impossible to replicate his results.

    Unless we see a post of the .ini file for Tom’s strategies, I remain highly skeptical that anything like these results can be achieved.

    Tom Gnade

    @StefanM if you use the CASH strategy, it’s ultra-low volatility will act like a “lightning rod”. Try setting the volatility multiplier for CASH to about 25x in the Strategy Manager and observe the results. I’ve found using extreme settings like that causes instability in QT, so the cash stops in S3 are instead implemented using the volatility and cash Sharpe limits. I apply those limits only when they benefit the overall returns or reduce volatility/drawdowns, and only after the initial strategy is optimized. To answer your other question about holding stocks through earnings, yes, you can just manually inspect the list of stocks and check their recent performance. It’s perfectly fine to substitute a highly-ranked symbol for another. I sometimes choose alternatives just so I’m not all-in on tech stocks for example, or so I can avoid stocks with freaky looking charts.

    Overall, S3 is just a typical combination of hedge and risk sub-strategies, with a dash of Nasdaq-100 top 4 to boost returns.

    The hedge is constructed mostly of a mix of GLD and TLT, along with a few other symbols. I’ve been back and forth on using the inverse ETFs, but I’ve decided they are useful because they level out the hedge over time. Even if treasuries and gold are going down, the hedging sub-strategy is still able to move up. The inverse ETFs are used sparingly, because I don’t like their decay, but there are some periods of time when hedges are misbehaving when they prove useful.

    The risk sub-strategies are mostly based upon QQQ and SPLV, although I use a few other alternate symbols that have good long-term behavior. I hedge each individual risk symbol, apply the cash stops when they’re useful, then rotate between them using the SRE method. I’m not really inclined to share the .ini files because of the amount of work I’ve done on it. To get similar returns, you could just use the Maximum Sharpe LI strategy. Of course, I prefer my own QT strategy, which sits at around Sharpe ratio 2.3 over long and short timeframes, consistently returning about 16%. It plows straight through the 2000 and 2009 markets with solid returns. It’s a thing of beauty.

    If you have a higher risk appetite, just use any degree of leverage you’re comfortable with in your investment account.


    @Tom Gnade

    Thanks for your reply. Following your comment, I have been experimenting with the ‘Cash Sharpe Lim.’ box under ‘Advanced’/’Strategy Parameters’ and am getting useful results against risk strategies, so thanks for this tip. It doesn’t appear to work using DR rank, however is fine for SR, SRE etc. You have to experiment to get an equity curve with the right level of risk on/risk off but I agree that it may have some capacity to go through downturns. Time will tell whether the reality follows backtest…

    I agree with your point on the earnings volatility in the Nasdaq100, and I have developed a single ETF tech strategy around VGT which doesn’t have the smooth equity curve of Nasdaq100 but captures a fair return in the tech market. If you go to ETFdb (, VGT comes off well in comparison to QQQ and XLF.

    I also agree that one should apply the Volatility Limit and Cash Sharpe Limit once you’ve optimised the initial strategy i.e. you’ve got the right mix of risk and hedge etc.

Viewing 10 posts - 1 through 10 (of 10 total)
  • You must be logged in to reply to this topic.