Using the usual on-off market timing gtr test, pick the 1 of commodities, treasuries, S&P 500 or Nasdaq 100 each month during “on” times using
product(-1,tr(1,10),1,tr(1,130)) bottom 3
tr(1,500) top 2
ratio(sma(1,5),tr(1,150)) bottom 1
Thanks for sharing. Nice, steady returns. I have a few questions, as I’m not very fluent in GRT1.
Is “product(-1,tr(1,10),1,tr(1,130))” actually the product of 4 numbers?
Does tr(1,10) = return from close 10 days ago to close yesterday?
Would “product(-1,tr(1,10),1,tr(1,130)) bottom 3” be the same as
“product(1,tr(1,10),1,tr(1,130)) top 3”?
You say this is “newish”. Have you reported on this strategy previously?
Product multiplies the numbers together so that’s the same as … - Total Return 10-days x Total Return 130-days
… so the interpretation seems correct. Making the change to… product(tr(1,10),tr(1,130)) top 3
… returns the same output.
One interesting thing to note: The strategy begins on 20081231 but the most recent start of the underlying securities is 20061030. Changing the start date to the end of 2006 to reflect the full data series results in the following:
Avg
Min
Max
SD
CAGR:
12.724566
7.950213
16.626196
2.313169
TR:
597.992676
235.66571
1041.142944
212.520294
Log2TR:
2.730507
1.747025
3.512408
0.470846
SAWR(20; 0.95):
9.085665
5.095499
12.025226
1.845686
GSD(20):
20.414476
19.389374
21.547913
0.698941
DIGSD(20; 0%):
23.528812
21.202877
25.688318
1.217742
LDD(20; 0%):
13.110363
11.438633
14.620325
0.938091
LDDD3:
10.903118
6.874348
17.088968
2.430211
MDD:
-48.570343
-62.288918
-29.773438
7.120934
UI(20):
11.152803
6.390105
21.760799
3.503123
Sharpe(20):
0.704676
0.46283
0.891625
0.120703
Beta(20):
0.71289
0.575599
0.84019
0.078566
TI(20):
18.530024
11.38798
26.310253
4.623498
AT:
1.542857
1.263158
1.768421
0.142659
Also fine but not quite as good as from end-2008. I’d love to know the rationale behind that adjustment.
OK. Given the current market environment there’s potentially value in testing the strategy throughout a bear market though.
So here’s an interesting alternative version: Original strategy from @musselmant (all credit to him), extended back to end-2006, standard BCC bear catcher evaluated every day (and so would create a little extra work), 0.1% transaction friction added (previous formulation with no friction was slightly unrealistic, this version uses friction suitable for trading at close via broker MOC orders).
Avg
Min
Max
SD
CAGR:
16.046114
13.657186
18.408564
1.300555
TR:
970.825806
659.074219
1351.774902
190.395111
Log2TR:
3.397954
2.924241
3.859746
0.255946
SAWR(20; 0.95):
12.659236
10.425286
14.862438
1.073369
GSD(20):
16.108643
15.270206
17.509771
0.589908
DIGSD(20; 0%):
17.50329
16.105982
20.430813
1.090351
LDD(20; 0%):
9.18203
8.194964
11.056284
0.759492
LDDD3:
5.051101
3.440473
7.070497
0.977931
MDD:
-25.235233
-37.147564
-19.007826
4.183702
UI(20):
5.805642
4.338057
8.324664
1.07479
Sharpe(20):
1.018084
0.844344
1.165329
0.092069
Beta(20):
0.454774
0.351481
0.570132
0.0693
TI(20):
34.505146
23.878233
48.131031
6.89669
AT:
1.94237
1.704836
2.273115
0.144387
Longer backtest period that includes the 2007-2009 bear market, includes transaction friction, near-to-original 16% CAGR (direction-ally in-line of original strategy backtest with minimal friction added) & slightly more work at about the times the BCC changes to & from zero (0) indicating a bear market.
One interesting thing to note: The strategy begins on 20081231 but the most recent start of the underlying securities is 20061030. Changing the start date to the end of 2006 to reflect the full data series results in the following:
On GTR1, the most recent start of pricing is “Pricing Starts: 20061030”
With tr(1,500) Shouldn’t the backtest results be from about 20081030, rather than your date of 20061229?
Here is fun: add APPL to the picks (of course this is 20-20 hindsight!)
cagr 32
gsd 27.7
ldd 14.5
mdd -37.5
sharpe 1.23
beta .7
Not letting me post link
A fantastic question that prompted a bit more digging and could perhaps explain the @musselmant start date. Looking into it a bit further it’s the ETF DJP that has the late pricing start date. If that ETF is removed 2007 return remains the same indicating that DJP either wasn’t selected or couldn’t be (likely the latter) but 2008 was substantially worse. DJP is a commodities ETF and so is an interesting pick in times when equities are struggling (2007-2009).
So overall I think you’re correct - the earliest date it makes sense to start testing is 20081030 with the following results (which are very nice):
Avg
Min
Max
SD
CAGR:
17.297781
14.875784
20.181833
1.45992
TR:
846.702576
596.945496
1211.425171
166.972824
Log2TR:
3.220898
2.801046
3.713063
0.251126
SAWR(20; 0.95):
13.1644
11.215743
15.715501
1.062328
GSD(20):
15.94001
15.015563
17.696981
0.685726
DIGSD(20; 0%):
17.314957
15.759528
20.939642
1.305874
LDD(20; 0%):
8.921022
7.793042
11.309499
0.909809
LDDD3:
4.683995
2.906514
7.059584
1.030936
MDD:
-24.399649
-37.147564
-15.727716
5.124485
UI(20):
5.291617
3.583658
8.860886
1.195447
Sharpe(20):
1.120674
0.933163
1.307157
0.108649
Beta(20):
0.486584
0.357929
0.639724
0.088039
TI(20):
35.572922
23.367495
50.948719
8.253773
AT:
1.931425
1.642392
2.285067
0.159638
Total Return for Year Ending:
20081231
0.020285
0.020278
0.020301
0.000007
20091231
42.039227
42.039215
42.039238
0.000008
20101231
19.875237
17.341089
20.896471
0.809338
20111230
-8.001419
-17.229408
-2.000415
3.952205
20121231
18.482719
6.882668
26.719952
3.896724
20131231
28.214334
17.484224
39.692211
7.050459
20141231
14.795821
6.392694
19.180214
4.052636
20151231
8.641837
8.641827
8.641851
0.000007
20161230
6.675462
3.834772
9.994232
1.858836
20171229
32.663548
32.663536
32.663559
0.000008
20181231
1.826456
-5.560875
16.47644
5.271453
20191231
21.11801
7.056344
34.475945
7.359011
20201231
20.013285
-8.233565
46.047962
18.737349
20211231
28.080055
15.989947
38.126862
4.039348
20221104
19.483124
11.890554
24.392282
3.349899
Having said that … understanding that the strategy did well without DJP in the last bear market is perhaps a worthwhile learning to boost confidence a little further, and it’s probably worth going into a further review after this current bear is resolved (did the BCC addition add value if used etc.). Note: The version with BCC offers a 0.8% higher average CAGR once friction is added.
And I’d personally explore the tr(1,500) top 2 line to see if that 500 could be reduced with equivalent or better results or is that 2-year total return necessary (GTR1 was having issues supplying other timeframes when I was preparing this).
I’ve extended this with a bit of financial creativity. The Pimpco TR commodity fund, PCRIX, that has high correlations to the DJP and starts in 2002 IIRC. The GSG index starts in the 80s and could be used to extend the test further but I am not sure it is a total return fund. I used the US Treasury mutual fund, CPTNX with ~6 year duration as a proxy for TLT. The fund, KTCAX, or the Fidelity Select fund, FSPTX, are tech funds with high correlations to Qs, in the .97-.98 range. I had to use the compressed link option because the regular one used “w” “t” “f” so the post was not allowed.
I think you need to report results from about 20040701 due to tr(1,500). My guess is that gprc is =0 for dates prior to its listing, so tr(1,500) will give incorrect results.
Still has a CAGR of 14+ with a 20040701 start date.
Impressive Results! Musselmant’s newish rotation strategy historically extended by using commodities data and adding BCC to reduce drawdown from as aussi suggested gives a CAGR of 14.8 and a perpetual SAWR of 11.4%.
I compared this to Wouter Keller’s Bold Asset Allocation – Aggressive TAA strategy (the highest performing TAA strategy I’m aware of). Over the same period this equaled the Bold Asset Allocation Aggressive’s 14.9 CAGR, don’t know how the SAWR’s would compare.
RAM
here is a tuned version
cagr 16
gsd 16.1
ldd 8.8
mdd -25…4
ui 5.4
sharpe .989
beta .37
worst average year 2006 -4.7
second worst ave yr 2011 -1.9
third worst ave year 2018 .2
worst any start date year -15.6
up 18% this year
{PCRIX}{TLT}{SPY}{QQQ}
product(tr(1,10),tr(1,150)) top 3
tr(1,500) top 2
ratio(sma(1,20),tr(1,140)) bottom 1
Outstanding, I’m defiantly going to spend some time playing with this to verify how robust it appears to be. At this point it comes across as a straight forward concept of long time momentum and short term reversal. My best overall profit maker was based on only 3 funds moving between them based on long time momentum and inverse short time momentum. Worked best by reviewing just before closing to see if a predicted gain vs trading cost justified a trade. Worked very well for 4 years even in a down market.
I like! I did a few quick looks using the SPGSCI as a proxy for commodities and it has some pretty large DDs. It seems we need a Trend/Managed Futures Fund not just commodities. I’ll post anything interesting.
Thanks Musselmant.
Here is a chart of our PCRIX commodity fund and the GS commodity index. I’d say pretty well correlated the linear regression of returns shows an adjusted r^2 of .7474.
I built this in an effort to extend the backtest. The commodities asset is the hardest to replicate of the 4 funds. IF we use the SPGSCI and go back the DDs are too severe and the returns fall.
Take a look and tell me where I might be wrong, I’d like to be. ;-]
I’m using the tech fund as a proxy for the Qs and the SPGSCI as a proxy for commodities. Given the high level of correlation I think my backtest has merit and I’d be cautious. Having said that I like the idea of the screen. Just trying to find potholes. ;-]