Monday, April 11, 2016

Momentum Rotation 60 Day ROC System Results

In my last post, Yahoo Data and Momentum Rotation - Analysis of 2015 Data, the big take away was the importance of performing a full download / update of historical data before generating your signals.  This is particularly important when using dividend adjusted data, which is typical for most equities and ETFs.  The dividend adjustments need to be reflected in the entire series for a particular product, not just the most recent few months.

In this post we will look at the current performance of a momentum rotation system for AmiBroker that I showed in an earlier post here.  This momentum rotation system ranks a portfolio of products based on their 60 day rate of change.  The product with the largest positive change in the portfolio is selected for entry.  If all of the products in the portfolio have a negative rate of change...a price today that is lower than the price 60 trading days ago, then the system will move to cash.  The system runs on the last trading day of the month, and executes orders at the close - "market on close" orders in live trading.

This momentum rotation system was run against the products listed below in the March 2015 post.  We will use the same products for this post.

So how has this momentum rotation system performed since last March?  Pretty poorly!  March of 2015 was the high water mark for this system's equity curve.  Since that time, the equity curve has dropped 23.82%.

60 Day Momentum Rotation System Equity Curve 2003 - 2016
(click to enlarge)

60 Day Momentum Rotation System Profit Table 2003 - 2016
(click to enlarge)

The ETFs held by date are shown in the chart below.  Early in the life of this system, it was not uncommon to hold the same ETF for several months.  Trade duration has shortened in last few years.

60 Day Momentum Rotation System - Positions By Date - 2003 - 2016
(click to enlarge)

The score for each ETF by date can be downloaded from Google Docs: Rank By Date.  Note that the score is calculated based on the closing prices the day before the last trading day of the month.  This score is then used to rank the ETSs and determine the trade for the last day of the month (using a market on close order).

The trade log for this system can be downloaded from Google Docs: Trade Log

In my next post, I will review some metrics for this system and how they have changed over the years.

Follow my blog by email, RSS feed or Twitter (@DTRTrading).  All options are available on the top of the right hand navigation column under the headings "Subscribe To RSS Feed", "Follow By Email", and "Twitter".

Monday, April 4, 2016

Yahoo Data and Momentum Rotation - Analysis of 2015 Data

I've taken a bit of a break from posting options strategy research, but before I dive back in I'm going to revisit some material I posted on Momentum Rotation systems last year.

If you're new to my blog you may have missed my posts related to rotation system results and data.  For the last several years, I have been trading monthly Momentum Rotation strategies across six accounts.  These strategies rank portfolios containing between 10 and 30 ETFs or mutual funds by momentum.  Some of my strategies combine multiple momentum readings to derive a rank, while others go further and add filters.  All of my rotation strategies rank a basket of funds relative to each other...and this is a common approach across all Momentum Rotation systems, not just mine.

I use AmiBroker and Yahoo! end-of-data data (Yahoo Data Info 1, Yahoo Data Info 2) for my rotation strategies.  A few years ago I began to realize that the signals I was receiving (and trading on!) from my rotation strategies were occasionally inconsistent with the backtests of these same strategies.  I didn't spend much time digging into the issue at the time, but it remained in the back of my mind.

In August 2014, I decided to backtest my live rotation strategies across the same period that I had actively traded with these same rotation strategies.  I found that a number of the trades in the backtests did not match the trades I had actually executed and recorded in my spreadsheets.

I initially thought the issue was caused by using dividend adjusted data rather than actual data, but in my last Momentum Rotation post (here) I realized this was not the issue.  Dividend adjusted data does result in stable Momentum Rotation rankings as dividends are issued.  I also analyzed several ETFs to determine if their ROC values were stable across dividend issuance, and they were.

Based on these findings and some advice from Cesar Alvarez, I started taking taking snapshots of my AmiBroker database at the end of each month beginning in March of 2015.  I continued taking database snapshots through January of 2016...11 months in total.  Planning to get to the bottom of the mismatch between the actual signals and the backtest signals, I ran backtests of my live systems across each database snapshot and compared these signals with the signals I actually traded.  Surprisingly, there was no difference ... the backtest signals from all 11 database snapshots matched my live signals during those same periods.

What changed during those 11 months compared to the time prior to March of 2015?  Well, I had made one small I thought!  Prior to March, 2015 I did not perform complete historical data updates very often...and I would typically only update the last several months of historical data when I did perform an update...and this was a big mistake that I did not recognize!

Beginning in March, 2015 I started performing complete database updates on the 25th of each month.  With these updates, I re-downloaded all of my historical data from January 1st, 1900 to the present.  This corrected my signal instability problem.  The lack of complete historical updates had been a big mistake on my part and resulted in my backtest signals not matching the signals I had actually traded.

The big take away ... if you're not already doing this ... perform a complete historical data update prior to generating your live trading signals.  If your data is dividend and split adjusted, you need to update the entire series...pretty obvious now, but something I missed...hopefully others will learn from my mistake!

In my next post, I will review the 2015 results of the Momentum Rotation system that I shared in March 2015 (here).

Lastly, I just started reading Momo Traders (full disclosure, Brady Dahl sent me a copy) and it reminds me of the Market Wizards series.  I'm only on the first interview, so no book review yet, but I am enjoying it so far.

Follow my blog by email, RSS feed or Twitter (@DTRTrading).  All options are available on the top of the right hand navigation column under the headings "Subscribe To RSS Feed", "Follow By Email", and "Twitter"