Building a Momentum-Based Stock Selection System

Hi everyone,

I’ve been working on implementing the Quantitative Momentum Strategy as described in the Alpha Architect whitepaper (PDF) and in the book "Quantitative Momentum" I’m trying to replicate it as accurately as possible using Portfolio123.

However, I’m running into issues with the performance, it’s much worse than expected, and I honestly don’t know what I’m doing wrong.

Does anyone see what might be going wrong here? Any feedback would be highly appreciated, I’d really love this to be my first working strategy:smiley:

Best

This is my implementation of the framework provided by Alpha Architect.
It doesn’t work well either.

https://www.portfolio123.com/app/screen/summary/313845

1 Like

Thanks for your feedback! Sad to hear :frowning: Maybe it helps if we are combining it with quality or value factors?

My model-building experience is that momentum does not work very well in the US. Ex-US things are a bit better, but you'll still end up with much higher returns if you construct a multi-factor system (quality, value, etc).

1 Like

Thanks for your reply and feedback, but what do you mean by that? Momentum in combination with quality and value or just quality, value etc?

Sorry, I meant a system that uses both momentum and all the other factors. My current US ranking system has 5% of the weights set to momentum.

1 Like

I am doing Value + Size + Technical Momentum + Fundamental Momentum. That would be an "integrated" multifactor approach (buy a concentrated portfolio of stocks at the cross-section of all factors.

Alpha architect are strong proponents of the "sleeve" approach and build (filtered) single factor strategies. While this can have advantages for institutional investors or in an ETF portfolio, for DIY retail it's suboptimal imo.

Momentum works best in combination with growth, value, size, etc. Maybe start with the P123 predefined core ranking composites in these styles and combine them. If you want a Momentum system, overweight Momentum (and accept higher turnover and noise) but keep small weightings to the other factors. Check if kicking out single factors "hurts" the returns (most likely it doesn't, accept maybe lowVol). Alpha architect also picks all-cap. Consider limiting the universe to smaller stocks which are less efficiently priced. E.g. <$10B mcap. Imo there is almost no justification for a DIY retail quant to play at the big table (large and Megacaps).

PS: Also imo in 9/10 cases using metrics in a ranking beats using them as screen filter (even with FRank("XY") > Z)... The interactions between factors are just too market-regime dependent to use strict screen rules instead of flexible multifactor ranking system. Exceptions can be factors with a strongly asymmetric return distribution across ranks (e.g. ROA or other quality factors). But even there, I prefer using Piotrosky F-score instead in the ranking system.

2 Likes

PSS: For FIP I would just use UpdDownRatio instead.

1 Like

Thank you so much for your valuable insights, I’ll definitely look into that. Maybe it’ll save me some time :smile: I’m trying to gather as much information as I can and piece everything together. My goal is to make a living from this, but before I commit any real money, I need to be confident that my strategies actually work. I run an IT company, but I’m planning to shift my business model toward developing these kinds of systems.

1 Like

You are right, looks pretty good with a few tries.

Looks good! But 10% turnover means that this simulation tells you very little about the abilities of the ranking system. I recommend "forcing" the system to have higher turnover, trying many different start times for the simulation, or using the rolling screener. (And consider using the mod(stockid,) method)

2 Likes

How do you normally do that? I tried it with dynamic weighting and I get a decent turnover here :slight_smile:

How is that done? Is there something to read? Sorry, I know to many questions :smiley:

1 Like

If I test the strategy on out-of-sample data, it sometimes underperforms the benchmark. Does that automatically mean the strategy is worthless? Or is it just good to be aware of it?

The easiest way to increase turnover (after you're happy with the sell limit using rank< or rankpos<) is simply to add something like: nobars>200 as a sell rule, and LastSellDaysLT(30)=0 as a buy rule (so that the model avoids rebuying the same stock).

Every stock in the database has a unique integer: stockid. See here for a clever way of dividing your universe into random parts (and then making sure you model outperforms in all of them):

2 Likes

It depends. Some limited underperformance is hard to avoid (months to a year-ish), but many years in a row of underperformance means that something has gone wrong.

1 Like

I’ve tried now a few strategies from well-known professionals, but even those haven’t been robust across different universes, they’ve underperformed in some cases. That really makes me wonder: if even the expert models struggle, how am I supposed to build something that holds up?

For example: https://www.portfolio123.com/port_summary.jsp?portid=1825598&st=1

if you use it with mod(StockID, 4) = 3 you get

In my opinion, "expert" models means also, they are most likely constructed to fit a certain audience. That audience in most cases are ETF providers, institutional clients or similar Other-peoples-money managers.

In this realm, you need liquidity and scalability and transparency and simplicity. All of those are things an average retail investor usually doesn't need to invest his own money. You don't have to justify your decisions in front of your boss or clients, you don't have to scale to justify costs. You don't have to market your strategy to get AUM...

Imo this is a huge advantage that you almost HAVE to exploit. Imo your only edge as retail investor.

Choose behaviorally or risk backed factor categories, build strong, robust composites around them, and apply them to illiquid names in the micro-to-midcap realm. High Liquidity (especially Megacap) is poison to market inefficiency. The lower you go, the more likely it is that an anomaly still exists. Of course pay attention to your financial situation and how liquidity YOU need.

There are never guarantees but common sense would tell you that well-known published strategies in liquid markets should produce lower returns in a world of abundance of data, low fees and seem less access... Go where others can't go.

2 Likes

“Correlation Isn’t Causation”

We often blame publication for killing a strategy’s edge—as if crowding always happens after a white paper or book goes live. But sometimes, it’s the reverse.

I think sometimes Alpha Architect holds its momentum models until they’ve already underperformed in live trading—then publishes them. In other words, decay → publish, not publish → decay. In my experience, no published Alpha Architect momentum strategy has outperformed in practice—whichever way the causation occurs. I would appreciate any counter-examples. Maybe i missed a great Alpha Architect momentum strategy in my reading.

1 Like

The forum and the blog are good resources for finding your way, maybe this is a good starting point: Factor Design: How to design a stock strategy - Portfolio123 Blog