ticker lb\n1737 NWE 0.500076\n2425 TWI 0.500204\n1980 QDEL 0.500584\n1045 GNMK 0.500591\n1758 OCN 0.501020\n1779 OLN 0.501156\n1043 GMLP 0.501563\n2069 RPT 0.501908\n980 FUN 0.502247\n188 ARR 0.502382\n1474 MAIN 0.502526\n1 AAL 0.502562\n1167 HSC 0.503028\n1275 IRM 0.503185\n838 ET 0.503230\n2407 TRTN 0.503478\n2346 TGI 0.503570\n1772 OHI 0.504286\n508 CLMT 0.504529\n1155 HOV 0.504783\n2071 RRD 0.504903\n320 BIP 0.505364\n403 CAP 0.506590\n2322 TCP 0.507743\n1706 NSH 0.507784\n1823 PAA 0.508233\n207 ATCO 0.509246\n1350 KKR 0.509387\n1687 NNBR 0.510040\n683 DCP 0.510314\n1800 ORBC 0.510368\n2038 RIG 0.510560\n1745 NXST 0.511846\n1007 GEL 0.520256\n382 BX 0.523700<\/code><\/pre>\n\n\n\nSo it looks like there are a few stocks that actually exhibit momentum on a daily basis, and their lower bounds are only very slightly above 50%.<\/p>\n\n\n\n
Sorting portfolios by momentum<\/h2>\n\n\n\n
Let’s try a different approach: most researchers, when performing analyses like this, create grouped portfolios to determine whether they can achieve outsized returns based on the variable in question.<\/p>\n\n\n\n
In this section, we will try to group stocks by momentum and see if we find any statistically significant differences in the cross section of returns. We define our momentum variable as the total percentage return of a stock over the past 12 months. This gives a number which can be compared over all stocks, allowing us to perform a sort.<\/p>\n\n\n\n
Let’s change the code a bit to divide the previous 12 months into quintiles.<\/p>\n\n\n\n
mv = pd.DataFrame(columns = ['date', 'q1return', 'q2return', 'q3return', 'q4return', 'q5return'])\n\nfor i in range(12, len(table.index)):\n d = table.loc[table.index[i]]\n d1 = table.loc[table.index[i-1]] \n d2 = table.loc[table.index[i-2]] \n d12 = table.loc[table.index[i-12]]\n \n m12return = (d2-d12)\/d12\n curreturn = (d-d1)\/d1\n \n r = np.array_split(m12return.sort_values(), 5)\n mv.loc[i-12] = [\n table.index[i],\n curreturn.loc[r[0].index].mean(),\n curreturn.loc[r[1].index].mean(),\n curreturn.loc[r[2].index].mean(),\n curreturn.loc[r[3].index].mean(),\n curreturn.loc[r[4].index].mean(),\n ]<\/pre>\n\n\n\nNow, we can run this code and get average returns. Let’s start by testing it on old data (1960s to 2000) to see if we see the expected momentum:<\/p>\n\n\n\n
q1return 0.008605\nq2return 0.012372\nq3return 0.018795\nq4return 0.014145\nq5return 0.016277<\/code><\/pre>\n\n\n\nThere’s a reasonably strong correlation between quantile and returns. In fact, if you invested in Q5 stocks for the duration of the period, you would see almost a 1% per month greater return than you would have with Q1 stocks.<\/p>\n\n\n\n
However, that seems to have changed. Let’s run the numbers from 2010 to today:<\/p>\n\n\n\n
q1return 0.013495\nq2return 0.011013\nq3return 0.009778\nq4return 0.009727\nq5return 0.012298<\/code><\/pre>\n\n\n\nThat shows a better return with Q1 stocks than Q5. If you picked stocks by momentum, you would actually do slightly worse off than not.<\/p>\n\n\n\n
What if we filter out certain stocks?<\/h2>\n\n\n\n
Prior literature shows that there was momentum for the market as a whole, as well as specifically for most groups of stocks. However, we have found that’s no longer the case. The question remains: is there a certain subset of stocks that do exhibit momentum?<\/p>\n\n\n\n
If we change our filter to only give us top 50 market cap stocks, we get these results:<\/p>\n\n\n\n
q1return 0.003904\nq2return 0.008318\nq3return 0.009299\nq4return 0.012628\nq5return 0.015866<\/code><\/pre>\n\n\n\nHowever, these may be affected by outliers, so let’s drop the top and bottom percentile. We still see reasonably strong momentum:<\/p>\n\n\n\n
q1return 0.004868\nq2return 0.009519\nq3return 0.008828\nq4return 0.013255\nq5return 0.013416<\/code><\/pre>\n\n\n\nLet’s look at the smallest stocks and their returns:<\/p>\n\n\n\n
q1return 0.302399\nq2return -0.006149\nq3return 0.005664\nq4return -0.003950\nq5return -0.001966<\/code><\/pre>\n\n\n\nAnd here are the returns for micro cap stocks: <\/p>\n\n\n\n
q1return 0.031270\nq2return 0.030559\nq3return 0.004018\nq4return 0.004052\nq5return 0.007646<\/code><\/pre>\n\n\n\nSo it definitely appears that there is an exploitable momentum component to returns for the largest stocks. <\/p>\n\n\n\n
Do the prior month’s returns tell us anything? <\/h2>\n\n\n\n
It turns out that the prior month’s returns do tell us something. Let’s run the code above, and change the 12 month return to just look at the previous month’s returns. Here’s what we get:<\/p>\n\n\n\n
q1return 0.016625\nq2return 0.011384\nq3return 0.011978\nq4return 0.008397\nq5return 0.007921<\/code><\/pre>\n\n\n\nIf we try different time periods, the results are equally pronounced. There is nearly a 1% average difference in monthly returns between the Q1 stocks and the Q5 stocks. This holds for many different timescales as well.<\/p>\n\n\n\n
As soon as you try a longer lookback horizon beyond one month, the differences disappear. Here, we compared this month to the two prior months:<\/p>\n\n\n\n
q1return 0.014810\nq2return 0.011204\nq3return 0.012287\nq4return 0.011534\nq5return 0.010064<\/code><\/pre>\n\n\n\nConclusion<\/h2>\n\n\n\n
Unfortunately, the strong momentum relations of the past mostly seem to be gone. However, there are some things we can correlate with past movement. For instance, there does appear to be a statistically significant negative correlation between the previous month’s returns and this month’s returns. And for the largest large-cap stocks, there does appear to be an exploitable momentum component to returns. <\/p>\n\n\n\n
The question is: can we actually use momentum to beat a benchmark? We will look at that in our next article.<\/p>\n","protected":false},"excerpt":{"rendered":"
Past studies have found momentum in the movement of stock prices. We perform a statistical analysis to determine if this is still true in 2021.<\/p>\n","protected":false},"author":1,"featured_media":184,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[22,21],"_links":{"self":[{"href":"https:\/\/firemymoneymanager.com\/wp-json\/wp\/v2\/posts\/504"}],"collection":[{"href":"https:\/\/firemymoneymanager.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/firemymoneymanager.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/firemymoneymanager.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/firemymoneymanager.com\/wp-json\/wp\/v2\/comments?post=504"}],"version-history":[{"count":1,"href":"https:\/\/firemymoneymanager.com\/wp-json\/wp\/v2\/posts\/504\/revisions"}],"predecessor-version":[{"id":1127,"href":"https:\/\/firemymoneymanager.com\/wp-json\/wp\/v2\/posts\/504\/revisions\/1127"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/firemymoneymanager.com\/wp-json\/wp\/v2\/media\/184"}],"wp:attachment":[{"href":"https:\/\/firemymoneymanager.com\/wp-json\/wp\/v2\/media?parent=504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/firemymoneymanager.com\/wp-json\/wp\/v2\/categories?post=504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/firemymoneymanager.com\/wp-json\/wp\/v2\/tags?post=504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}