Newish rotation strategy

I was replying to RAMcN. Thanks for answering.

I have another basic question. Is this the part where we screen out days where BCC=0:

(some day I’ll become more familiar with GTR1)

I’m no expert myself; I neither created the timing rule nor pretend I can recreate it from scratch, but yes my understanding is when multiple signals agree you are going to cash

1 Like

No, that’s just defining BCC. The bit that actually uses it is farther down:

Close all liquid positions and hold cash on any market dates where [BCC = 0].

4 Likes

ratio(sma(1,5),tr(1,150)) bottom 1

This picks the ETF with the lowest price. That doesn’t sound useful.

1 Like

Recent price weakness is a good thing across backtests.

1 Like

I don’t think it necessarily selects recent price weakness. ratio(sma(1,5),tr(1,150)) bottom 1. For two stocks with the same tr(1,150), the one with the lowest sma(1,5) will be selected, no matter what the recent relative performance is between the two stocks.

The unit for ratio(sma(1,5),tr(1,150)) bottom 1 is “$” (sma is $ and tr is dimensionless), therefore it is not checking recent performance.

Craig

2 Likes

“A moving average is a statistic that captures the average change in a data series over time. In finance”
investopedia

So, 5 days close pricing for stock A, $5, $6, $7, $8, $9, sma (1,5) = $7.
For stock B, $9, $8, $7, $6, $5, sma (1,5) =$7.

Not sure how this captures if a stock is rising or falling.

But the question was really about selecting low price stocks.

Stock A sma(1,5) = $10, tr (1,150) =2 the ratio = $5

Stock B sma (1,5) =$100 tr (1,150)=2 the ratio is =$50

Therefore stock A is selected as it is the lower price stock.

In this example, tr(1,150) for stock B could be 10 times greater before stock B is selected.

Craig

Craig

2 Likes

I see the point; I will have to think about it. Why low price generates a good return makes no logical sense.

Its got practically nothing to do with that parameter at all.
Check between these
(1) Original : SMA(1,10)/tr(1,150) bottom 1
(2) Gprc(1)/tr(1,150) bottom 1 … just removing the price smoothing… Practically negligible impact
(3) Ratio (1, tr(1,150) ) bottom 1 — ie 1/tr(150) — almost the same
(4) Which of course is same as tr(1,150) Top 1 … ie pick the highest momentum over last 150… almost same as original

The one that DOES a bit BETTER, I think is the condition capturing the spirit of the original …

ratio(tr(1,5),tr(1,150)) bottom 1 … ie pick the short term oversold stock with best long term momentum.

5 Likes

Just to correct something I wrote. The parameter being selected is low gprc not low aprc (actual price). sma(1,5) uses gprc to calculate the moving average. I checked this by looking at the 10 lowest priced stocks in the NAS100. The lowest sma is the second lowest price. The third lowest price, INTC has a very high sma.

Stock field1=aprc:1 field2=sma:1,5 field3=gprc:1
SIRI 6.36 1.749405 1.729284
LCID 11.46 1.280741 1.216821
INTC 29.89 1453.308 1439.247
CSX 30.95 397.2033 390.9134
CMCSA 34.26 2.834605 2.845069
KDP 36.84 14.32213 14.33769
EXC 37.48 1554.074 1527.933
KHC 37.75 1.668544 1.690578
WBA 40.13 40040.61 39677.32
MRVL 43.93 4.163209 4.206491

Craig

3 Likes

Take a look at:

{QQQ}{SPY}{DCP}

Tr(1,130) top 1

With timing
CAGR 21,3 20040701 to 20221207
GSD 25.3
LDD 12.5
MDD -37.2
UI 11.5
SHARPE .88
BETA .64

The url contains wt followed by the first letter in “follow” so it won’t let me post it.

6 Likes

You can probably post it using the compressed URL.

Why DCP - this is a pipeline company? Did you mean DJP? If so, this produces a much lower CAGR from 12/31/08.

1 Like

Yes DJP. So much for typing just from memory!
I liked simplicity tr(1,130) top 1 with timing
cagr 16.3 from end of 2008
sharpe .98
beta .67
ldd 10.4
mdd -29
2022 +25
2008 +8
http://gtr1.net/2013/?!!QlpoMTFBWSZTWdb4n!2FcAAkefgCIHf!2FA89!2FqgP!2B!2Fe4EACTYdLotoSUTQIYgaAABoAyaAEoEFPRqp!2BjVPJqbQxR6jBDRhqMGp5VNNAYINAyMRoA0aaaYEkmoE2hPVPRDaho0Ghp6jagPUH4GSbisooVTK!2BT7U19ydUeiFlTU99Y4PDJMcsxJkG7HFgaJYQEwjWUjeIbBaiEDM6QbBBJKNA7hCFPFTL7Dv2SMAM2yFghLrp2UmjKRbUO5U3mjPgT4nQdA5MqpVtD5WfChupDrJUUU3pr5oZoZ464e8M9bwaAGVDIxi5mo1LoLBxoFRbKwIslIUsrQUrwlOVoj0R1KVXmrCFEmCplbCsHPkIkGmj6kUBVp2XTJ2J5KBQxfEEDwcmBGxkgdREHFScnHET0BxNvH5VZYFhonBJxiPnt693ZXVGDs05O8SrOe03KY4!2BSGmwKKnAuh4CF007ybQaHecEYGSNYXiIoxJkTB8o0LTZBcUXAZEAcQmKURRxqkfE55zNKnOpSgx031HwXXllgDyivgIHAu9655Z0FKAjYE76N!2BGSYKvsILl20hrVcZjUjOp1!2BAOCPPUq!2FipqQdRoMUe1o5mBU!2FihiJobeEgcLVJBrxXHDuRGqLciNR0heX4cwTMUkAGJ4UM8zyilwQhqA3BOj8YVaJVG3SFxJ2szZGNiXA3i2VgmHuazDkzquhLXTZi1IZHlMYtKZQGu3MODIgfy2gRtC5RdBus2BOSYLwS5Kl8z4F3JFOFCQ1vif9w!3D

3 Likes

First of all Excellent follow up - which to me opened up a bunch of questions. In fact there are multiple themes/dimensions to them - so I will (hopefully with Fool’s allowance) break them up into multiple posts - so that they are bit easier to follow

(1) Theme/Observation 1
Tr(1,130) as the Momentum sort : This is nothing but RS26W ( ie very very similar) … This actually is very good - because although it might seem like groupthink - but on parameters like these - a convergence is better from a stability standpoint. ie

What’s worked in the past before - seems to be applicable!

NET MSG:
(a) The screen is a GTTA category. Trades 3 asset classes - SP500 (LC) , NDX100 ( LC Tech) and Commodities (DJP)
(b) Uses a criteria similar to RS26W - simpler here, its simply Price momentum
I am tagging FC (@FlyingCircus ) here who’s the resident expert in Asset Class Momentum screens.

1 Like

(2) Theme Observation 2: Extending the timeframe and an alternative ( variant of the original from @musselmant and @brian304 )

Key assumption : The basic stumbling block here is the Commodity Index fund … so what I did was to actually use the old Goldman Sachs Commodity Index (SPGSCI) itself. Its not tradeable of course - so what I did was to compare the screen from the 2006 period when DJP and the other ETF variants all have data - and added a friction parameter to equalize the returns. This is between 0.2% to 0.25% - at .25 it underperforms the ETFs screen. I went with 0.2% - which is roughly 2x friction of most MI screens - ie seems to have intuitive justification

Using this the test goes back to 1981 ( I am using the Fidelity Tech fund - because for some reason the Yahoo NDX Index data starts at 1987 - I wanted to get close to the LAST TIME INFLATION was an issue as much as possible. Basic guesstimate would be this would have done decently because of the commodity mix in the 1970s). If any of the GTR experts can extend the NDX100 - that should be the correct benchmark.

First the results comparison

Period 1981 Onwards
Full criteria Avg Min Max SD Tr(130) Momentum Avg Min Max SD
CAGR: 17.36 16.09 18.48 0.63 CAGR: 14.88 14.10 15.92 0.51
SAWR(20; 0.95): 9.39 7.98 10.39 0.57 SAWR(20; 0.95): 6.93 5.13 9.42 1.25
LDDD3: 8.43 7.75 10.09 0.62 LDDD3: 10.02 8.43 11.86 0.86
MDD: -41.86 -52.49 -40.43 3.03 MDD: -50.73 -60.56 -40.43 5.91

As is obvious the Full Criteria beats out the simple 130 day momentum over longer periods. Why?

(a) Well I had tested each and every piece of the initial criteria before - to know that ALL had value
(i) TR (1,130) Top 3 : This is REDUNDANT here. One of the classes tested before was Bonds. That to me makes little sense - why?

The KEY DIFFERENCE between this screen and standard Asset Class Momentum Switchers is the use of BCC timing - that’s an equity indicator - specifically Nasdaq and SP500 - so perfectly suited for this test!

So essentially the concept of rotating into an alternative asset class ( neg or partially correlated with equity indices) like Bonds, Gold, Commodities etc is not fully applicable.

Adding BONDS reduces returns with BCC… ie if BCC is active no point into defensive rotation

(ii) TR (1,270) Top 2 : This is the one - it helps in the long term and reduces risk to a certain extent. Actually its more or less consistent between 270 to 300. And you can extend it between 300 to 500 - for a few decimals in return - but that’s data mining.

I chose 270 - because its roughly 2x of the shorter momentum period. 250 dont work - it just has to be longer than 1year in my observation.

(iii) tr(1,5)/tr(1,130) ratio: ST Oversold. Does just a bit better and reduces MDD by about a few points. Anything between 5 to 10 works

And here’s the screen criteria ( My alternative - you can just drop most of the others to come to the 1,130 momentum)

http://gtr1.net/2013/?!!QlpoMTFBWSZTWSAKLe4AAzDfgBAAIgd!2F8D!2FnT!2BA!2F797hQAL9lFGWNZgkUpNNptFPNFNqHpqaNNABpp6mgASIRTJT9E9GpPU9TTah6gNAGmjTQGA0AAA0AAAAAASSjE00JqbU00aDQGgGRo8p6T1FtEWt8Vht9a!2FzJ473WDYmDL4YgwpoPTowGLyKnyZUEndEDefLdvVh7LGh64ioiCITDrJRykKphTfLURavQtIGDbjtk7KgMvYWndZYoIhcxsnGITKVltBQh4ZgmmIjQCjNaEH9wXBcDg1BizGNSmjGdcnG9S7FySVKagnmHgjajSjg9LT1FQTjspmMNEtZtLMo25cttUYGj6ESiJMTFjTHk4QMaYU0YjMnFLByubtJs12fb1oiuDQkIsJBEG72GRZTOag4MEzxAlsismHfvuLWZ7s8LrHUi7ROaRhINhGnTsBK0WCwChi6mkKB!2B9gDaFQNBheXaH02AuMR3BdQzjzywh1TpyKpOyuN!2BHL04eOrTEFR3zB0GXhjPwUDwn58zy7kFs6!2Fn6I9yrHEYxwRuFvpVm1UEVNe22McyPnGnWV!2FCCrfBB9BJFKrkGqVKQ0R26kXtdw4ffMypNuXhYtnuRyDb7Vu8L!2Fo!2BKRrxU!2FKrtwEr95fECO8FJicC7HBVloETkyHxKUKx8JQH67wI!2B06M5lupDOFehwaEbqKXCmQGyrQqo4lATquAUyRjYOHRn2iGKilmCoCAHffaci2rGBNsTjEgNrRJFppSsK!2BvmMMLwr2V3DgHKpXAdLgLNTihSrOzy07KgcrkZGlFhxK6knQOlK3kTM0NKDimah7ANw!2FEMgMcA1l7xGBgYtb5jzUcJRVz!2FEDOvoMd8DymjlJYGKDJ7JgUcSM95kA1nkqaiqGkM5YNLQumQZoyuuNU7!2FxdyRThQkCAKLe4A!3D!3D

4 Likes

(3) Asset Class contribution: The next test is the sequential test of adding each asset class in the ,mix ( To replicate - just drop each symbol and add and ensure the criteria has Top 2 , 3 etc. )

SP-500 Avg Min Max S&P500 and NDX Avg Min Max ALL 3 ( with Comm) Min Max
CAGR: 12.2 12.2 12.2 CAGR: 16.1 15.2 17.5 CAGR: 17.4 16.1 18.5
SAWR(20; 0.95): 7.9 7.9 7.9 SAWR(20; 0.95): 9.4 8.2 10.0 SAWR(20; 0.95): 9.4 8.0 10.4
LDDD3: 6.8 6.8 6.8 LDDD3: 9.6 8.8 11.4 LDDD3: 8.4 7.7 10.1
MDD: -33.8 -33.8 -33.8 MDD: -50.0 -60.3 -42.4 MDD: -41.9 -52.5 -40.4

KEY MSG: NDX is needed for the returns … Technology is the equity class to own - but it increases MDD substantially inspite of BCC. And this is where the addition of the slightly negatively correlated Commodities shines thru … it increases return a bit while decreasing both LDDD3 (Jims metric) and MDD.

Net : If you are risk averse SP500 is best - else all 3.

The following table shows the holds by year for each iteration

VFINX Avg VFINX, FSPTX Avg Min Max Usage With Commodities Avg Min Max Usage Neg Correlation
19811231 2.5 19811231 2.1 -2.9 9.2 S&P 19811231 2.1 -2.9 9.2 S&P Align
19821231 27.9 19821231 71.1 53.4 91.8 NDX 19821231 71.1 53.4 91.8 NDX Align
19831230 17.1 19831230 45.3 39.2 48.2 NDX 19831230 45.3 39.2 48.2 NDX Align
19841231 3.8 19841231 -2.7 -15.7 3.8 NDX 19841231 1.1 -12.2 3.8 With Comm Inverse
19851231 22.6 19851231 20.8 10.7 30.5 NDX 19851231 19.0 10.7 32.4 With Comm Align
19861231 9.3 19861231 -5.0 -9.5 0.6 NDX 19861231 -5.0 -9.5 0.6 NDX Align
19871231 4.7 19871231 -5.2 -24.7 -1.8 NDX 19871231 -4.6 -18.3 5.9 NDX Align
19881230 17.2 19881230 5.2 -1.2 15.2 NDX 19881230 13.4 4.4 21.9 With Comm Align
19891229 31.4 19891229 20.5 15.6 24.7 NDX 19891229 2.9 -7.0 14.9 With Comm Align
19901231 -3.3 19901231 -7.9 -13.3 -4.0 NDX 19901231 -16.9 -29.0 -6.5 With Comm Align
19911231 30.2 19911231 45.6 40.2 49.0 NDX 19911231 45.6 40.2 49.0 NDX Align
19921231 8.2 19921231 3.1 -9.0 9.3 NDX 19921231 3.1 -9.0 9.3 NDX Align
19931231 9.1 19931231 27.3 22.2 28.7 NDX 19931231 25.9 21.1 28.7 With Comm Align
19941230 -1.9 19941230 -2.2 -4.3 -0.3 S&P 19941230 -3.2 -10.1 -0.3 S&P Align
19951229 37.4 19951229 44.1 42.8 45.5 NDX 19951229 43.1 36.1 45.5 NDX Align
19961231 22.9 19961231 16.1 3.4 26.4 NDX 19961231 15.4 6.7 24.8 NDX Align
19971231 33.2 19971231 5.7 1.3 15.9 NDX 19971231 1.3 -10.6 17.1 With Comm Align
19981231 28.6 19981231 62.7 43.1 76.5 NDX 19981231 62.7 43.1 76.5 NDX Align
19991231 21.1 19991231 133.4 133.4 133.4 NDX 19991231 126.0 100.6 151.2 With Comm Align
20001229 -9.1 20001229 -4.0 -18.4 7.5 NDX 20001229 21.2 9.7 30.5 With Comm Inverse
20011231 -4.5 20011231 -4.5 -4.5 -4.5 S&P 20011231 -12.8 -16.0 -9.0 With Comm Align
20021231 -7.2 20021231 -16.6 -25.2 -11.6 NDX 20021231 1.8 -5.8 10.4 With Comm Inverse
20031231 22.7 20031231 49.6 46.7 51.9 NDX 20031231 45.0 30.8 59.9 With Comm Align
20041231 10.7 20041231 8.0 5.3 11.7 NDX 20041231 0.6 -9.2 17.0 With Comm Align
20051230 4.8 20051230 0.3 -2.9 3.2 NDX 20051230 25.1 7.5 40.3 With Comm Align
20061229 15.6 20061229 6.1 2.0 8.4 NDX 20061229 -13.2 -20.4 -5.0 With Comm Inverse
20071231 5.4 20071231 12.3 7.8 19.8 NDX 20071231 17.7 7.3 33.1 With Comm Align
20081231 -10.1 20081231 -20.8 -23.0 -18.0 NDX 20081231 10.8 10.8 10.8 With Comm Inverse
20091231 34.6 20091231 65.0 65.0 65.0 NDX 20091231 65.0 65.0 65.0 NDX Align
20101231 14.9 20101231 26.7 26.7 26.7 NDX 20101231 26.0 16.4 26.7 NDX Align
20111230 -7.0 20111230 -9.7 -12.8 -6.9 NDX 20111230 -9.1 -14.0 -5.0 NDX Align
20121231 14.0 20121231 11.4 6.1 14.7 NDX 20121231 9.8 4.0 14.7 With Comm Align
20131231 32.2 20131231 32.6 30.9 34.5 S&P 20131231 32.6 30.9 34.5 S&P Align
20141231 13.5 20141231 10.5 6.8 14.0 NDX 20141231 10.5 6.8 14.0 NDX Align
20151231 0.2 20151231 -1.3 -2.6 0.8 NDX 20151231 -1.3 -2.6 0.8 NDX Align
20161230 9.1 20161230 5.0 2.7 11.0 NDX 20161230 5.0 2.7 11.0 NDX Align
20171229 21.7 20171229 49.8 49.8 49.8 NDX 20171229 38.7 31.2 49.8 With Comm Align
20181231 -4.5 20181231 -0.7 -6.5 2.2 NDX 20181231 -10.5 -21.8 3.8 With Comm Align
20191231 31.3 20191231 39.6 34.9 42.8 NDX 20191231 39.6 34.9 42.8 NDX Align
20201231 18.2 20201231 63.9 63.9 63.9 NDX 20201231 63.9 63.9 63.9 NDX Align
20211231 28.5 20211231 17.7 9.7 25.6 NDX 20211231 6.8 -14.2 25.9 With Comm Align
20221208 -13.6 20221208 -16.2 -19.3 -13.6 NDX 20221208 23.8 12.3 31.1 With Comm Inverse
% times Positive year 78.6% 69.0% 78.6%
6 Likes

@anchak
Why does substituting QQQ for FSPTX produce such inferior results?
Initially, I attributed it to its shortened history. But, recent yearly returns are significantly lower as well.

Here’s what I used: GTR1 Backtester - Good Musselmant with QQQ - With Commdities

2 Likes

Its got International exposure - the benchmark is slightly different. It closely matched NDX till 2019 - but then it diverged a bit looks like