DTAYS Weekly Breakout Strategy

After my interview on ‘Don’t Talk About Your Stocks,’ Andrew pointed me to a strategy he is trading called the DTAYS Quantitative Growth Fund. He was curious to see back tested results. Always looking for new ideas to write and tested, I jumped on it.

Unfortunately, the results will not be exactly as he trades it. Andrew uses the IBD50 as his trading universe. As is the bane to stock researchers, I do not have historical data on the IBD50. One could create some great models using that data. Instead, the test will be on the standard stock universe

Even though I am changing the universe, if the concept works on my general stock universe then it should work on the IBD50. One should be worried if it does not work on a general stock universe.

Rules

When I tested several parameters, I bolded, italicized and underlined the parameter that DTAYS uses. Testing timeframe 1/1/2004 to 12/31/2013. Maximum number of open positions (10, 20). When have multiple signals, they are ranked from highest NWEEK return to lowest.

Buy

  • End of trading week
  • NWEEK values of (10,20,30)
  • Stock closes at a new NWEEK high of closes. (using weekly bars)
  • The return for the last NWEEKs is greater than (20, 30, 40.) (using weekly bars)
  • The 21 day moving average of Close*Volume is greater than $15 million. This is used instead of the IBD50. (using daily bars)
  • SPY closes above its 100 day MA. (using dailybars)

Stops

Stops are evaluated at the close.

  • Maximum loss stop of (8, 12)%. (using daily bars)
  • Trailing ATR(100)*(3, 5) stop based on highest close since in position. (using daily bars)

 

Base Results

140306A

The results are pleasantly surprising. For such a simple system, the base system almost matches Buy and Hold but with only 69% exposure. The surprise was a maximum drawdown of only 24%. Drawdowns are usually larger for longer term strategies. The main reason for matching buy and hold is the market timing filter but there appears to be potential here.

 

Variations

To improve the results, we focus on two things. One, larger position sizes because I find 20 positions too many. Two, larger stops because we want to give the stocks some breathing room.

140306B

This gives us some better numbers. So far, the rules have a small edge. The average hold is about 1 to 2 months for the variations.

Low Volatility

From my work with Connors Research and a research paper we produced, Historical Volatility: The Holy Grail Found? I know that one should focus on lower volatility stocks when having longer hold periods. We now add that the 100 day Historical Volatility is less than 40.

140306C

Now are we getting some good looking numbers from a simple breakout system.

Spreadsheet

If you’re interested in a spreadsheet of my testing results, enter your information below, and I will send you a link to the spreadsheet. The spreadsheet contains more variations tested along with yearly returns.

Final Thoughts

Once we added larger stops, the strategy has some promise and I would expect even better results using the IBD50 because IBD has applied their own fundamental and technical filters to them. Adding the rule HV100 < 40, starts making this a viable strategy.

I will be investing this more in future post. Definitely looking for suggestions on what to add to this to improve the results. Thank you Andrew Selby for sharing.

Backtesting platform used: AmiBroker. Data provider:Norgate Data (referral link)

 

 

Click Here to Leave a Comment Below

Max - March 7, 2014 Reply

Hi!
I try to repeat your backtest, but I can’t!
1. I would like to make a few clarifications. Do you use Daily or Weekly for backtests? The DTAYS system (or Weekend Trend Trader system) uses only weekly data, but you use both (“The 21 day moving average of Close*Volume” or “SPY closes above its 100 day MA”). Or I am wrong
2.I’ve made tests in Amibroker and there were not so many trades like in your table (1590) – I’ve got >8000)
3.And 8% stop is very narrow for weekly – i got only 30% winner trades with this stop
My code for Ami is:
set=Foreign(“SPY”, “C” );
set_1=HHV(h,20);
set_2=C>Ref(set_1,-1);
set_3=ROC(C,20)>30;
set_4=set>MA(set,20);
set_5=MA(C*V,21)>15000000;

stop=8;
Profit=ATR(20)*3;
ApplyStop(stopTypeLoss, stopModePercent, Stop, 0);
ApplyStop(stopTypeTrailing, stopModePercent, Profit, 0);

Can you show my mistake….
Thanks!
Max

    Cesar Alvarez - March 7, 2014 Reply

    Max, I have clarified in the post which rules are using daily bars and which rules are using weekly bars. Hopefully this will help.

Is the IBD 50 Universe a Fatal Flaw in the QG Fund? - Don't Talk About Your Stocks - March 9, 2014 Reply

[…] you have not read the backtesting analysis that Cesar Alvarez posted regarding the DTAYS Quantitative Growth Fund, you should absolutely check it out. What Cesar found […]

Introducing a Volatility Filter to the QG Fund - Don't Talk About Your Stocks - March 16, 2014 Reply

[…] the results of the QG Fund rules could be dramatically improved by introducing a volatility filter. His backtesting results showed that limiting entries to stocks with 100-day historical volatility values below 40 would […]

Blake - May 12, 2014 Reply

Hello
I don’t have the IBD 50 lists but I do have the stock twits 50 list archives going back for about 3 and a half years or so. Is that a big enough sample size to see if these type of stocks do indeed produce better returns.

    Cesar Alvarez - May 12, 2014 Reply

    Yes, that amount of data is good enough to test on. The only caveat being that we have been in a strong bull market during that time.

DTAYS Weekly Breakout Strategy With Time Stops » Alvarez Quant Trading - September 22, 2014 Reply

[…] make way for other stocks that may do better. Will this idea improve the results from the original DTAYS Weekly Breakout Strategy? This reminded me of research I did while working for Larry Connors. On a mean reversion strategy […]

Marco - September 29, 2014 Reply

The SPY 100SMA filter should avoid bear markets, am I right? So we shouldn’t worry about it.
http://nightlypatterns.wordpress.com

Blaine - November 17, 2014 Reply

Can you provide the Amibroker code for the ATR Stop? Thanks.

    Cesar Alvarez - November 17, 2014 Reply

    I coded up the ATR stop in the CustomBackTester. I very rarely use the ApplyStop funciton because I like to make sure I have full control of what is happening. Giving you the code for the stop would not make sense without the entire file. I am not giving away that file.

    Sorry,
    Cesar

      Blaine - November 18, 2014 Reply

      OK. I was just curious what your code looks like for calculating a ATR stop. I have my own code but was wanting to look to make it more efficient. I do have another question:

      Above you state: Trailing ATR(100)*(3, 5) stop based on highest close since in position. (using daily bars)

      I assume that the 100 represents the number of days used to compute ATR and 3 and 5 represent the ATR multiple. Is that correct?

        Cesar Alvarez - November 18, 2014 Reply

        That is correct.

Joao - February 24, 2015 Reply

Hi Cesar,

about the point: ranked from highest NWEEK return to lowest, what you mean with NWEEK? Could you post the formula? I am looking for a Sacore system to my AFL and I didn’t found one that works ok.

Thanks,

Joao

    Cesar Alvarez - February 24, 2015 Reply

    Here is simplified version. In the actual code, I used weekly bars for the calculation but the code is much more complicated. This should give nearly the same results.

    nWeek = 20;
    PositionScore = 100+ROC(C, 5*nWeek);

    Cesar

Leave a Reply: