What is the simplest way (process) to develop a factor-based investing strategy with STOCKS?

1) How to rank stocks based on one factor (or multiple factors)?
2) Do I have to pick the top 10% of the stocks in each rank?
3) Create different portfolios for each factor?
4) How to combine the factor-portfolios in case of multiple factors?
   Can I have an overlap of stock in the consolidated portfolio?

I'd appreciate external sources also.

  • 1
    $\begingroup$ See for example this investor.vanguard.com/etf/profile/VFMF for a brief overview of a 3 factor long only single portfolio fund. There are many other more detailed descriptions. $\endgroup$ – Alex C May 29 '19 at 13:49

Lots of different ways to do it that typically involve the following:

(1) Identify starting universe.

(2) Source and process underlying attribute data for each holding (for instance, for a low vol factor, possibly ST and LT vol for each security).

(3) At this point, there is tons of variability. Once you have your factor data, some simply use it for selection (eg, pick top 200 based on low vol score) and use any variety of weighting schematics (market cap, equal-weighting, fundamental weighting, etc) thereafter.

Others, use the factor scores in some way to determine weighting and don't explicitly consider selection (eg, over/under-weight security relative to its benchmark weight based on its factor score--stocks with 'high' low vol scores get overweighted, 'low' get underweighted).

Still others use a combination. For instance, start with an equal-weighted portfolio and multiply by a normalized factor S score (0-1). Resulting weights are then scaled to sum to 1. Only securities with a factor score > 0 are kept, and weighting is a combination of EW with a factor tilt.

Beyond that, if you're able to go long/short, AQR creates fractiles based the factor scores, then goes long/short the top and bottom buckets. Various index providers create factor portfolios in the long-only space as well.

(4) Multi-factor portfolios represent another level of complexity as they include some or all of the above in combination with others (multiplicative, additive, blend, etc).

In short (or not), once you get past step 2, you can take it any number of ways and there isn't really a 'right' way to approach things. Once you have the data portion set up, probably best to just read some papers and do some testing on your own.



First you need to start with an investible universe of securities that can be used to retrieve data on. From there, you'll need to compile a list of each individual factor that you'd like to screen for (Momentum, Value, Growth, Div Payers, High Multiple, Asset Quality etc...) and create a metric of measurement for each factor. Enter into some sort of database each data point of each factor for every stock in your universe. From there you can create new fields for each factor to rank (From highest to lowest) your factors for a single stock relative to all other stocks in your universe. After that you can either take the top 5%, top 10%, or even break the data into deciles, quartiles, etc.

If you want to keep track of them you can create indexes of each factor and take the top and bottom 10% of stocks and time stamp them. This way you can have a historical record of names within those factors on a point-in-time basis.

You asked an extremely hard question to answer in just a few sentences but I hope this helps. This is what I do for my firm currently.

  • $\begingroup$ For the sake of my curiosity, do you just apply percentiles to such panel of data or have you ever applied other unsupervised machine learning techniques, such as clustering? $\endgroup$ – Lisa Ann May 30 '19 at 11:16
  • $\begingroup$ We apply relative percentile ranks, yes. I'm just beginning a 6-month data science course to "level-up" our analysis, so we have not experimented with clustering or any type of machine learning techniques. We are still rather "old-school" in our analysis. $\endgroup$ – Anthony C May 31 '19 at 13:22

Not the answer you're looking for? Browse other questions tagged or ask your own question.