# Interpretation of Fama French portfolio

I have two portfolios, one "bad" and the other "good".

I construct the portfolios by taking the average monthly returns based on some criteria each year. In any given portfolio there could be between 150 and 500 companies (depending on the year). I update the portfolio yearly based on the criteria and I run the results through a Fama French model over 158 months.

My observations are that the bad portfolio intercept is not significant and thus has no alpha (which is what I was expecting/hoping for).

Call:
lm(formula = R_excess ~ Mkt_Rf + SMB + HML, data = .)

Residuals:
Min      1Q  Median      3Q     Max
-3.0599 -0.9060 -0.1252  0.7183  6.1812

Coefficients:
Estimate Std. Error t value             Pr(>|t|)
(Intercept)  0.12280    0.11987   1.024             0.307232
Mkt_Rf       1.01738    0.03114  32.675 < 0.0000000000000002 ***
SMB          0.81318    0.06017  13.514 < 0.0000000000000002 ***
HML          0.20162    0.05227   3.857             0.000168 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.485 on 154 degrees of freedom
Multiple R-squared:  0.9302,    Adjusted R-squared:  0.9288
F-statistic:   684 on 3 and 154 DF,  p-value: < 0.00000000000000022


The second portfolio has a significant intercept and alpha of 0.33 basis points per month. The R2 on both regressions seem reasonable since I have so many companies in the portfolio. Portfolio 2 is slightly less correlated with the market with a Mkt_Rf of 0.95824

Given the outputs what else should I be looking at? Can you see any red flags based on the information I have said?

They seem a little "too good to be true" but I have been careful at each step.

The good portfolio

Call:
lm(formula = R_excess ~ Mkt_Rf + SMB + HML, data = .)

Residuals:
Min      1Q  Median      3Q     Max
-4.6116 -0.7663  0.0756  0.7980  7.4092

Coefficients:
Estimate Std. Error t value             Pr(>|t|)
(Intercept)  0.33116    0.10487   3.158              0.00191 **
Mkt_Rf       0.95824    0.02724  35.175 < 0.0000000000000002 ***
SMB          0.66303    0.05265  12.594 < 0.0000000000000002 ***
HML          0.31563    0.04574   6.901       0.000000000126 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.299 on 154 degrees of freedom
Multiple R-squared:  0.9374,    Adjusted R-squared:  0.9362
F-statistic:   769 on 3 and 154 DF,  p-value: < 0.00000000000000022

• I would like to provide an answer, but first let me please know if you are interested in a real trading scenario or if your results are the outcome of academic research. So..., are you a trader or academic researcher? Commented Oct 21, 2019 at 6:30
• Actually a PhD student! I am following some papers where the authors create quintiles of portfolios based on some criteria and quintile 1 is the "bad" portfolio and quintile 5 is the "good" portfolio. They then construct an additional portfolio "long/short" where they long portfolio 5 and short portfolio 1, and they report their regression results for all 6 portfolio scenario's. I would like to know how to correctly construct this "long/short" portfolio. Commented Oct 21, 2019 at 9:35
• I actually do not think my research would make for a decent trading strategy... I just want to prove that companies perform (as a collective) better when X' happens as opposed to X''. Commented Oct 21, 2019 at 9:35
• I just realised that I thought you were responding to another question I had about Fama French portfolios here: quant.stackexchange.com/questions/49146/… Commented Oct 21, 2019 at 12:49

This is a quite broad question, but as requested, i would like to provide you four recommendations.

First, testing any portfolio sorting-strategy, it is common in academics to account for autocorrelation and heteroscedascitiy in portfolio returns, i.e. applying Newey/West (1987) adjusted standard errors. As you seem to use the R-statistical language, this can be done by the following code:

library(sandwich)
library(lmtest)

reg <- lm(R_excess ~ Mkt_Rf + SMB + HML)
coeftest(reg, NeweyWest(reg, lag = 4, prewhite = FALSE))


It is common (see Bali/Engle/Murray (2016), p.7) to use a lag of $$4(T/100)^{2/9}$$, where $$T$$ is the total number of observations, when the Bartlett kernel (default in R) is used (i.e. 4.43 and therefore 4 for your 158 month).

Second, you seem to apply the Fama/French three-factor model (Fama/French (1992), Fama/French (1993)). It is well established to account not only for size and value effects, but also for investment and profitability, i.e. to apply the Fama/French five-factor model as an empirical asset pricing model to evaluate the alphas of your sorting strategy. If your portfolio returns are mainly driven by one of these factors, the three-factor model fails to account for their influence. In their abstract (Fama/French (2015)), they explicitly state:

A five-factor model directed at capturing the size, value, profitability, and investment patterns in average stock returns performs better than the three-factor model of Fama and French(FF, 1993). The five-factor model's main problem is its failure to capture the low average returns on small stocks whose returns behave like those of firms that invest a lot despite low profitability.

This further holds for a broad, non-US, international sample (Fama/French (2017):

A five-factor model that adds profitability and investment factors to the three-factor model of Fama and French (1993) largely absorbs the patterns in average returns

You may additionally even add a further (sixth) factor (see Fama/French(2018)); the momentum-factor (see Jegadeesh/Titman (1993)), to correct your alpha-estimates for potential captures of the momentum effect.

Third, it is not only both the economic and statistical significance of each of the "good" and "bad" portfolio, but it is necessary to look at their differences. If you assume your sorting-variable to be able to explain the cross-section of stock returns, you should see positive, significant alphas in the difference, self-financing (i.e. hedge) portfolio, where you are long your "good" stocks and short in your "bad" stocks. I assume good_ret and bad_ret your two time-series for the "good" and "bad" portfolio, so you should take a look at:

good_minus_bad_return <- good_ret - bad_ret    # calculate hedge portfolio return

reg <- lm(good_minus_bad_return ~ 1)           # apply an intercept only regression

coeftest(reg, NeweyWest(reg, lag = 4, prewhite = FALSE)) # apply Newey/West (1987) standard errors


It is common to especially reporting and testing the alpha of this hedge-portfolio return.

Fourth, there are some data-issues within (also well established) data-sources like e.g. Thomson Reuters Datastream. See e.g. Ince/Porter (2006) for useful data cleaning approaches which i described in more detailed at 1, 2, 3 or 4.

### References:

Bali/Engle/Murray (2016), Empirical Asset Pricing: The Cross Section of Stock Returns, Wiley, 1.ed.

Fama/French (1992), The Cross‐Section of Expected Stock Returns, The Journal of Finance 27(2).

Fama/French (1993), Common risk factors in the returns on stocks and bonds, Journal of Financial Economics 33(1).

Fama/French (2015), A five-factor asset pricing model, Journal of Financial Economics 116(1).

Fama/French (2017), International tests of a five-factor asset pricing model, Journal of Financial Economics 123(3)

Fama/French (2018), Choosing Factors, Journal of Financial Economics 128(2).

Ince/Porter (2006), INDIVIDUAL EQUITY RETURN DATA FROM THOMSON DATASTREAM: HANDLE WITH CARE!, Journal of Financial Research 29(4)

Jegadeesh/Titman The Journal of Finance (1993), Returns to Buying Winners and Selling Losers: Implications for Stock Market Efficiency, The Journal of Finance 48(1).

Newey/West (1987), A Simple, Positive Semi-Definite, Heteroskedasticity and Autocorrelation Consistent Covariance Matrix, Econometrica Vol. 55, No. 3