Fama French Five Factors (2024)

Table of Contents
Introduction Method Results Reference

Introduction

The relationship between return and risk has long been a popular topic for research. Investors have been seeking financial models that quantify risk and use it to estimate the expected return on equity. The Fama French five-factor model, improved from the Fama French three-factor model, is one of the most classic models (Fama and French, 2015). In this post, we will discuss this model and develop a stock-picking strategy based on it.

Method

The Fama French five-factor model was proposed in 2014 and is adapted from the Fama French three-factor model (Fama and French, 2015). It builds upon the dividend discount model which states that the value of stocks today is dependent upon future dividends. Fama and French add two factors, investment and profitability, to the dividend discount model to better capture the relationship between risk and return. The model is as follows

\[\begin{equation} \begin{aligned} R = \alpha & + \beta_m MKT + \beta_s SMB \\ & + \beta_h HML + \beta_r RMW \\ & + \beta_c CMA \end{aligned}\end{equation}\]

where

  • \(MKT\) is the excess return of the market. It is the return on the value-weighted market portfolio.
  • \(SMB\) is the return on a diversified portfolio of small-cap stocks minus the return on a diversified portfolio of big-cap stocks.
  • \(HML\) is the difference between the returns on diversified portfolios of stocks with high and low Book-to-Market ratios.
  • \(RMW\) is the difference between the returns on diversified portfolios of stocks with robust (high and steady) and weak (low) profitability.
  • \(CMA\) is the difference between the returns on diversified portfolios of the stocks of low and high investment firms, which we call conservative and aggressive. Here, low/high investment means reinvestment ratio is low/high.

Taking inspiration from the Fama French five-factor model, we can develop a multi-factor stock selection strategy that focuses on five factors: size, value, quality, profitability, and investment pattern.

First, we run a Coarse Selection to drop Equities which have no fundamental data or have too low prices. Then we select those with the highest dollar volume. Note that a useful technique is used here: we can use Universe.UNCHANGED to remain the same universe when there is no necessary change, which greatly speeds up the backtest.

def coarse_selection_function(self, coarse): '''Drop securities which have no fundamental data or have too low prices. Select those with highest by dollar volume''' if self.time < self.next_liquidate: return Universe.UNCHANGED selected = sorted([x for x in coarse if x.has_fundamental_data and x.price > 5], key=lambda x: x.dollar_volume, reverse=True) return [x.symbol for x in selected[:self.num_coarse]]

Secondly, in Fine Selection, we use the terms TotalEquity, BookValuePerShare, OperationProfitMargin, ROE, and TotalAssetsGrowth to account for the five factors, respectively. We then calculate a custom ranking metric for each stock using these five terms. Our algorithm will go long in the five stocks with the highest scores and short the five stocks with the lowest scores.

def fine_selection_function(self, fine): '''Select securities with highest score on Fama French 5 factors''' # Select stocks with these 5 factors: # MKT -- Book value per share: Value # SMB -- TotalEquity: Size # HML -- Operation profit margin: Quality # RMW -- ROE: Profitability # CMA -- TotalAssetsGrowth: Investment Pattern filtered = [x for x in fine if x.valuation_ratios.book_value_per_share and x.financial_statements.balance_sheet.total_equity and x.operation_ratios.operation_margin.value and x.operation_ratios.ROE and x.operation_ratios.total_assets_growth] # Sort by factors sorted_by_mkt = sorted(filtered, key=lambda x: x.valuation_ratios.book_value_per_share, reverse=True) sorted_by_smb = sorted(filtered, key=lambda x: x.financial_statements.balance_sheet.total_equity.value, reverse=True) sorted_by_hml = sorted(filtered, key=lambda x: x.operation_ratios.operation_margin.value, reverse=True) sorted_by_rmw = sorted(filtered, key=lambda x: x.operation_ratios.ROE.value, reverse=True) sorted_by_cma = sorted(filtered, key=lambda x: x.operation_ratios.total_assets_growth.value, reverse=False) stock_by_symbol = {} # Get the rank based on 5 factors for every stock for index, stock in enumerate(sorted_by_mkt): mkt_rank = self.beta_m * index smb_rank = self.beta_s * sorted_by_smb.index(stock) hml_rank = self.beta_h * sorted_by_hml.index(stock) rmw_rank = self.beta_r * sorted_by_rmw.index(stock) cma_rank = self.beta_c * sorted_by_cma.index(stock) avg_rank = np.mean([mkt_rank,smb_rank,hml_rank,rmw_rank,cma_rank]) stock_by_symbol[stock.symbol] = avg_rank sorted_dict = sorted(stock_by_symbol.items(), key = lambda x: x[1], reverse = True) symbols = [x[0] for x in sorted_dict] # Pick the stocks with the highest scores to long self.long_symbols= symbols[:self.num_long] # Pick the stocks with the lowest scores to short self.short_symbols = symbols[-self.num_short:] return self.long_symbols + self.short_symbols

Results

In this example, the portfolio is rebalanced every 30 days and the backtest period runs from Jan 2010 to Aug 2019. You can improve upon this strategy by changing the fundamental factors, the weight of each factor, and the rebalance frequency.

The Fama French five-factor model provides a scientific way to measure asset pricing. For the five aspects that Fama and French mentioned, we used one possible combination in our backtest. We can see from the results that it achieves an annual rate of return around 6.8% with a max drawdown of 19.8% over 8 years. These factors perhaps cannot capture a sufficient amount of information on the assets' pricing, and therefore, there are still many aspects can be improved (e.g. the weights of factors, a different set of factors for different kinds of Equities,etc.) We encourage you to explore and create better algorithms upon this tutorial!


Reference

  1. A five-factor asset pricing model
Fama French Five Factors (2024)
Top Articles
Is Coinbase Safe?
How to Get a $3,000 Personal Loan (July 2024 Guide)
Ohio Houses With Land for Sale - 1,591 Properties
Wizard Build Season 28
Google Jobs Denver
Miss Carramello
Songkick Detroit
27 Places With The Absolute Best Pizza In NYC
Best Cheap Action Camera
Needle Nose Peterbilt For Sale Craigslist
Texas (TX) Powerball - Winning Numbers & Results
Grand Park Baseball Tournaments
Oriellys St James Mn
Regular Clear vs Low Iron Glass for Shower Doors
Lima Crime Stoppers
OpenXR support for IL-2 and DCS for Windows Mixed Reality VR headsets
Jesus Calling Oct 27
House Of Budz Michigan
Wizard Build Season 28
Straight Talk Phones With 7 Inch Screen
Tamilrockers Movies 2023 Download
Kürtçe Doğum Günü Sözleri
Richland Ecampus
Nine Perfect Strangers (Miniserie, 2021)
Race Karts For Sale Near Me
Mccain Agportal
Ge-Tracker Bond
Nz Herald Obituary Notices
Filthy Rich Boys (Rich Boys Of Burberry Prep #1) - C.M. Stunich [PDF] | Online Book Share
8000 Cranberry Springs Drive Suite 2M600
Boise Craigslist Cars And Trucks - By Owner
پنل کاربری سایت همسریابی هلو
Mta Bus Forums
Keshi with Mac Ayres and Starfall (Rescheduled from 11/1/2024) (POSTPONED) Tickets Thu, Nov 1, 2029 8:00 pm at Pechanga Arena - San Diego in San Diego, CA
Play It Again Sports Forsyth Photos
Vlocity Clm
2430 Research Parkway
Http://N14.Ultipro.com
Max 80 Orl
Orangetheory Northville Michigan
Agematch Com Member Login
Skip The Games Ventura
Best Restaurants In Blacksburg
Final Jeopardy July 25 2023
Trivago Sf
Lucyave Boutique Reviews
Dickdrainersx Jessica Marie
[Teen Titans] Starfire In Heat - Chapter 1 - Umbrelloid - Teen Titans
Zeeks Pizza Calories
A Man Called Otto Showtimes Near Cinemark Greeley Mall
Iron Drop Cafe
Brutus Bites Back Answer Key
Latest Posts
Article information

Author: Msgr. Benton Quitzon

Last Updated:

Views: 5633

Rating: 4.2 / 5 (63 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Msgr. Benton Quitzon

Birthday: 2001-08-13

Address: 96487 Kris Cliff, Teresiafurt, WI 95201

Phone: +9418513585781

Job: Senior Designer

Hobby: Calligraphy, Rowing, Vacation, Geocaching, Web surfing, Electronics, Electronics

Introduction: My name is Msgr. Benton Quitzon, I am a comfortable, charming, thankful, happy, adventurous, handsome, precious person who loves writing and wants to share my knowledge and understanding with you.