The momentum style of trading is one of the most natural investing styles around and yet it lacks a lot of the things that make value and quality investing popular. First and foremost, momentum investing is based on the popular philosophy that the trend is your friend. If certain stocks are having a good run and increasing significantly in price, there must be a reason for it and all else being equal they will most likely keep increasing in value.
Secondly, momentum investing is not based on company financials explicitly - unlike value and quality factors which tend to take into account multiple balance sheet or cashflow statement items. Instead momentum is purely a price-based signal where the underlying hypothesis from momentum believers is that the price of the stock contains all the relevant financial balance sheet items and other market sensitive information.
Given its reliance on price alone, it is therefore logical that all we need to construct a momentum signal is stock price data. Some investors may augment this price data with the underlying volume data and as a result, may weight certain price moves that occurred with large volume as stronger signals.
For someone who wants to start investigating momentum investing strategies themselves, they can easily use python to start downloading yahoo stock price data and start constructing their own strategies (and we give some sample code at the end of this article). However, at STRATxAI we make all this easily available to you so you don't have to, our platform handles it all for you and you can run instant backtests for your strategies.
Momentum strategies in the factor investing world are mainly based on recent stock returns and constructing portfolios that are rebalanced at a frequency that . One well-known academic paper on this subject is "Returns to Buying Winners and Selling Losers: Implications for Stock Market Efficiency" by Jegadeesh and Titman.
Their paper showed that stocks that have outperformed over the previous year, have then outperformed again over the subsequent 3m and 6m periods. Since the release of that paper, quantitative hedge funds and asset managers have embraced the concept of momentum and it is an active component of most portfolios. Each implementation is different with some firms focusing on
For our purposes and for this article it is ideal to focus on the simplest form of momentum, that is using the trailing 12 month return to rank our stocks to identify the stocks most likely to keep outperforming for the next 3 - 6 months.
If someone is not interested in the large universe of stocks (i.e thousands) but instead interested in designing and investing in a momentum strategy that focuses on one particular sector - what can you do ?
You can certainly still design an overall strategy based on the method of trailing returns we discussed in the previous section. However given the smaller universe size, potentially just 10-15 stocks, an investor could now start to add other momentum indicators to their strategy builder.
This would most likely be in the form of technical indicators. By utilising the extra information from these additional indicators, it could potentially lead to extra outperformance for your strategy, especially for fast moving sectors. The reason extra indicators can be used is mainly because of the smaller universe. This universe size is critical, especially if an investor wants to visually inspect the technical indicators. Some examples of some indicators may be
We will be providing all these technical indicators and tools to our users in upcoming product releases.
In case anyone wants to start downloading and building their own toy strategies, here is some sample python code to try. The code uses yahoo finance to download historical stock price data for the ticker of our choice, in this case Apple. For our pre-packaged strategies at STRATxAI, to make things really easy for our users, we calculate our momentum strategies over thousands of stocks, using our premium data provider Factset.
1# Import libraries 2import pandas as pd 3import numpy as np 4import matplotlib.pyplot as plt 5import yfinance as yf 6 7# Download stock prices for Apple, ticker = AAPL 8stock_data = yf.download('AAPL', start='2010-01-01') 9# Take the adjusted close price to account for any corporate actions 10stock_data = stock_data['Adj Close'] 11# Calculate the daily stock returns 12stock_rets = stock_data.pct_change() 13 14# Calculate the rolling 12-month trailing return using 252 trading days 15rets_12m = (1 + stock_rets).cumprod().pct_change(252)
Using data to build factors