Hi Folks,

I have implemented a quantpedia.com strategy “Momentum and Reversal Combined with Volatility Effect in Stocks”.  In one line the strategy can be explained as “Long stocks with high market capital, high momentum and high volatility keep them for six months and then Liquidate”.

According to Wei’s research paper titled “Do Momentum and Reversal Coexist?”, a large capital stock with high volatility shows Momentum if invested for a time period of around six months. This happens because momentum is generated by gradual information diffusion and/or investor under reaction. The investors under react to stocks with vague information i.e. stocks with higher volatility, so it takes time for the correct price to be found.

Implementation:

  1. Universe Selection:
    1. Select top 100 stocks based on market capital.
    2. The stock price should be more than 10 dollars to prevent this is a standard method used in various researches to exclude unexpected results.
  2. Selection Data for stocks:
    1. I have stored momentum and volatility in a separate class. And then I have created ConcurrentDictionary to store selection data corresponding to every symbol, with symbol as the key.

    2. Selection data also contains some other fields used by the program to keep momentum and volatility seven days behind the current date. This is done to avoid bias due to microstructure issues. ( I know this is against SOLID principle of object oriented programming. I will improve this next time.)
  3. Buying / Selling stocks:
    1. On the starting of every month. I liquidate all the stocks which are 6 months old.
    2. Than I look for the most volatile stocks in the current universe.
    3. Out of these stocks I choose the stock with highest momentum and invest 1/6th part of my cash into this stock.

I have implemented this algorithm using inbuilt classes Momentum and StandardDeviation. Momentum is used for quantify momentum and StandardDeviation is used to quantify volatility.


This algorithm can be further extended to short large capital stocks with high volatility and low momentum. I have tried to do that but the results were not promising, maybe I don’t understand shorting that well or maybe @StephenOehler is right in his post “Thoughts on the risk of shorting”.

https://www.quantconnect.com/forum/discussion/1012/thoughts-on-the-risks-of-shorting/p1