How to Design a Fundamentals-Based Strategy That Really Works, Part Two: Applying Rules and Designing Ranking Systems

This is the second article in a series; here is the first.

I’ve been using a fundamentals- and ranking-based strategy for stock picking since 2015, and since then my compound average growth rate is 47%. So I can attest that a fundamentals-based strategy can really work. My previous article in this series discussed designing factors for multifactor strategies. In it, I advocated creating ranking systems as a good alternative or addition to traditional screening. I use Portfolio123 to do this; ranking can also be done with spreadsheets or other data management tools, but that involves a huge amount of work and is beyond the scope of this series of articles.

Exclusionary Rules and Where to Put Them

If you’ve ever screened for stocks, you’ve used exclusionary, or hard-and-fast, rules. For example, you only want to look at stocks with a market cap greater than $50 million, or a P/E below 20. Before I discuss ranking systems, I want to discuss these kinds of rules, because they definitely have a place in designing a fundamentals-based investment strategy.

The main question is where to put these rules.

Let’s go back to the analogy I used in my previous article: we are putting together a fantasy basketball team and we need to choose the players. But besides the criteria I listed there—points, rebounds, assists, blocks, 3-pointers, and steals per game; height, age, field goal percentage, and games played—we have a few rules.

  • They have to have played at least one season in the NBA.
  • They have to be on the court for an average of at least twenty minutes a game.
  • They can’t have more than ten technical fouls per season.
  • They should have an average of at least one assist per game, just to make sure they’re team players.

Now remember that we’re ranking all these players on various factors. Where do we put these rules? We have three choices. We can either apply these rules

  • before ranking the players,
  • after ranking the players, or
  • while ranking the players.

If we apply the rules first, then we reduce the roster of players we’re choosing from. If we apply them later, we pick the best players according to our ranking system and then winnow those down. As for applying the rules while we’re ranking the players, that just requires us to create new ranking factors and mix them in with the others. For example, instead of saying that players have to be on the court for at least an average of twenty minutes a game, we could just add a new factor—number of minutes played per game—and include that with the others. A few players that haven’t played as many as twenty minutes will slip in, but at least we’ve taken that into account.

Here are my guidelines. If it’s a hard-and-fast rule with no exceptions, apply it before ranking. (If you’re using Portfolio123, that means putting the rules into your stock universe.) It doesn’t make sense to rank a bunch of players that you’re never going to choose. Ranking systems will work more accurately on a delimited universe than on a universe from which you subsequently remove players/stocks. Why? Because of noise. By ranking a bunch of stocks you have no intention of buying or a bunch of players you have no intention of using, you’re introducing noise into your system.

Let’s say you’re choosing basketball players for the Nigerian national team. Do you also want to include players from Ghana and Liberia, and then discard those later? That’s what ranking extra stocks is like. Slim your selection first.

But if your rule is at least a little bit flexible—eighteen minutes a game is fine; a few players with twelve technical fouls will be OK—put it in your ranking system.

Why? With hard rules you might filter out an otherwise excellent stock just because it failed one rule by a small margin or had an N/A value for one factor. Ranking systems are more forgiving and flexible.

Why should you have any pre-ranking rules at all, then, when choosing stocks? Why not let the ranking systems do all the work?

Sometimes you just need to place limits: minimum prices, minimum liquidity levels. Maybe you want to exclude certain companies: MLPs; REITs; biotechs; banks; companies based in corrupt countries; OTC stocks; ADRs; companies with recent corporate actions that render their fundamentals irrelevant, like mergers or huge special dividend payments; stocks with statements that haven’t yet been processed by your data provider. All this depends on your preferences, of course.

Remember, though, that if you want to be a little flexible, you could insert a true/false statement into your ranking system (this is called a Boolean statement). So if a stock is, say, listed, it gets 100 on that criterion, while if it trades OTC, it gets 0.

The Whys and Hows of Exclusionary Rules

As for the reasons behind exclusionary rules, you should have three of them.

  • First, exclude stocks that are practically impossible or very expensive for you to trade profitably.
  • Second, if most of your rules are based on fundamentals, don’t include stocks for which those fundamentals don’t apply, are untrustworthy, or are terribly out of date.
  • Third, some rules do things that ranking can’t do. Maybe they pertain to your portfolio management system, maybe they reduce trading costs, maybe there’s another reason.

Let’s look at the first reason for a moment. We’re talking about liquidity here.

  • Price. Do you really want to buy $0.25 stocks? (I know some people who do, and do very well with them too, but I’m not one of them.)
  • Volume. Two stocks move 50,000 shares a day. One has a price of $1 and one has a price of $100. Are they equally liquid? No. Use average or median daily dollar volume (volume times price) to estimate liquidity.
  • Market cap. This is a poor proxy for liquidity, but some people like it for its cleanliness and simplicity. Watch out, though: you might have companies appearing and disappearing from your screens as they cross the market cap threshold, and they’ll likely be doing so at the worst possible time, appearing when they’re expensive and disappearing when they’re cheap. It might be better to use a stock’s average market cap over a distant time period.
  • Bid-Ask Spread. This is denominated in dollars, not percentage, so get the average or median of recent spreads divided by the price.

Sometimes it’s better to base your limits on something that moves. For example, if you set a $100 million limit on your market cap, you’re going to be excluding a lot more companies the further back in time you go. Instead, you can denote hard-and-fast limits like these by making them multiples of a stock-market index or the CPI. For example, $100 million today is a limit of about 43,000 times the index price of the Russell 1000. So instead of excluding all stocks with a market cap less than $100 million, you can exclude all stocks with a market cap less than 43,000 times the Russell 1000.

Another way to accomplish this is to set your limits by using a percentile of the market. For example, $100 million might be all stocks with a market cap in the top two-thirds of the stocks available from your data provider.

Advanced Ranking Systems

Most of the time, a ranking system simply consists of a list of factors, each with a certain weight. These factors can favor high or low values, and you can compare stocks on each factor to other stocks in the same industry, subindustry, industry group, sector, or the universe of stocks you’re choosing from.

But you can get a lot more complex than that by using composite, conditional, and industry/sector factors.

  • A composite factor is a collection of several factors whose ranks are then combined. For example, you might prefer to give a stock an overall “value” rank rather than ranking it on seven different value ratios and just throwing those ranks in there with the rest. Or you might want to combine a factor for yield with a factor for payout ratio, since stocks with high yields but high payout ratios can be dangerous.
  • A conditional factor will first apply a true/false factor, known as a Boolean factor, and then apply different factors depending on the result. For example, to measure earnings yield, you might want to first ask whether the stock has any analyst estimates; if so, you’ll want to use the current fiscal year’s EPS estimate, and if not, you’ll want to use the trailing twelve-month reported EPS. You can then compare each of these factors to other companies that also answer true or false to the main question, and assign ranks accordingly. Another example would be if you are ranking on an enterprise-value-based ratio but want to make an exception for stocks in the financial industry and rank those on a market-cap or price-based ratio.
  • An industry or sector factor will look not at the numbers for the individual stock but the numbers for the industry, subindustry, industry group, or sector to which it belongs. For example, I favor stocks in industries and subindustries that have strong price momentum. I have also noticed that stocks in certain industry groups tend to respond to the other factors I use better than those in other industry groups, so I favor the former.

Another aspect of ranking systems that is important to consider is how to treat missing data (or data that’s inconsistent with your aims). Personally, I like to give a score of 50 to factors for which data is missing or makes no sense. But you might prefer to give a score of 0. At any rate, these things must be thought through. For example, if P/E is one of your factors, you’re looking for companies with a low ratio of price to earnings. If earnings are negative, most of the time the P/E is reported as N/A. But if you give all companies with a P/E of N/A a score of 50, then companies with negative earnings will rank higher than companies with high P/Es. That’s probably not what you want.


Multifactor ranking is, in my experience, by far the most powerful way to pick stocks that are primed to outperform. But it is a very complex and intricate procedure. Luckily, there’s a great deal of forgiveness built in here: you can throw in factors that don’t work along with factors that do, you can vary the weights and the rules, and you’ll still come up with something that, on the whole, works pretty well.

I’ve been using ranking systems to choose stocks for more than six years now, and am constantly tinkering with the procedure. What I’ve tried to do in this series of articles is to impart some lessons from my experience. I hope you can find a level of success in ranking stocks similar to what I’ve found.

This series will conclude shortly with two more articles, one about backtesting and simulating a strategy and the second about actually implementing it with real trades.

Leave a Reply

Your email address will not be published. Required fields are marked *