Regression Analysis for Financial Relationships › Multiple Regression and Factor Models

Michael BrenndoerferDecember 11, 20256 min read
Quantitative FinanceAll chapters
Part 8 of 15Econometrics and Statistical Modeling
Chapter 43Regression Analysis for Financial Relationships › Multiple Regression and Factor Models
Reading section 7 of 12 · Multiple Regression and Factor Models · 6 minSection 7 of 12 · 6 min

Book contents

Section 7 of 12 · 6 min read

Regression Analysis for Financial Relationships › Multiple Regression and Factor ModelsOne section · Sections in this chapter7 / 12 ↓

While the market model uses a single factor, financial research has established that multiple factors explain cross-sectional return variation. The single-factor CAPM leaves significant patterns unexplained: small stocks earn higher average returns than large stocks, and value stocks (high book-to-market) earn more than growth stocks. These patterns motivated the development of multi-factor models that better capture the systematic risks in equity markets.

The Fama-French three-factor model adds size (SMB: Small Minus Big) and value (HML: High Minus Low) factors:

ri,t−rf,t=αi+βi,m(rm,t−rf,t)+βi,sSMBt+βi,hHMLt+εi,tr_{i,t} - r_{f,t} = \alpha_i + \beta_{i,m}(r_{m,t} - r_{f,t}) + \beta_{i,s}SMB_t + \beta_{i,h}HML_t + \varepsilon_{i,t}

where:

  • ri,t−rf,tr_{i,t} - r_{f,t}: excess return on asset ii
  • rm,t−rf,tr_{m,t} - r_{f,t}: excess return on the market portfolio
  • SMBtSMB_t: Small Minus Big size factor, capturing the return premium of small stocks over large stocks
  • HMLtHML_t: High Minus Low value factor, capturing the return premium of value stocks over growth stocks
  • αi\alpha_i: intercept (abnormal return)
  • βi,m\beta_{i,m}: market beta
  • βi,s\beta_{i,s}: stock's sensitivity to the size factor
  • βi,h\beta_{i,h}: stock's sensitivity to the value factor
  • εi,t\varepsilon_{i,t}: error term

Each coefficient represents exposure to a different systematic risk factor. The market beta captures overall equity market risk. The SMB loading indicates whether the stock behaves more like a small-cap or large-cap stock, regardless of its actual size. The HML loading reveals whether the stock exhibits value or growth characteristics in its return behavior. We'll explore these multi-factor models thoroughly in Part IV when we cover Arbitrage Pricing Theory.

Implementing Multi-Factor Regression

In[29]:
Code
# Generate stock return with multiple factor exposures
np.random.seed(101)
n = 504

# Generate factor returns
mkt_factor = np.random.normal(0.0004, 0.012, n)  # Market excess return
smb_factor = np.random.normal(0.0001, 0.008, n)  # Size factor
hml_factor = np.random.normal(0.0001, 0.007, n)  # Value factor

# True exposures: high market beta, positive size tilt, negative value tilt
true_betas = {"market": 1.15, "smb": 0.4, "hml": -0.25}
true_alpha_ff = 0.0001  # Small positive alpha

stock_ff = (
    true_alpha_ff
    + true_betas["market"] * mkt_factor
    + true_betas["smb"] * smb_factor
    + true_betas["hml"] * hml_factor
    + np.random.normal(0, 0.012, n)
)

# Create DataFrame
ff_df = pd.DataFrame(
    {
        "excess_return": stock_ff,
        "MKT": mkt_factor,
        "SMB": smb_factor,
        "HML": hml_factor,
    }
)

# Fit three-factor model
X_ff = sm.add_constant(ff_df[["MKT", "SMB", "HML"]])
model_ff = sm.OLS(ff_df["excess_return"], X_ff).fit(
    cov_type="HAC", cov_kwds={"maxlags": 4}
)
Out[30]:
Console
Fama-French Three-Factor Model Results
============================================================

Factor       True β     Estimate     Std Err    t-stat     p-value   
------------------------------------------------------------
Alpha        0.0001     0.001172     0.000554   2.12       0.0344    
Market       1.1500     1.0826       0.0458     23.62      2.3307e-123
SMB          0.4000     0.3942       0.0684     5.76       0.0000    
HML          -0.2500    -0.3324      0.0726     -4.58      0.0000    
------------------------------------------------------------

R-squared: 0.5526
Adjusted R-squared: 0.5499
F-statistic: 204.16 (p-value: 1.97e-86)

The results show significant exposure to all three factors. The stock has a market beta of approximately 1.15, meaning it's more volatile than the market. The positive SMB loading indicates a tilt toward small-cap characteristics, while the negative HML loading suggests growth rather than value exposure. Adding factors improves the model's explanatory power, as shown by the higher R-squared compared to a single-factor model.

Out[31]:
Visualization
Horizontal coefficient plot for Market, SMB, and HML. Colored circles mark estimates, horizontal whiskers mark 95% confidence intervals, and hollow squares mark the simulated true values.
Estimated Fama-French factor loadings with 95% confidence intervals and the simulated true values. The stock has positive market and size exposure and negative value exposure; none of the intervals crosses zero.

Comparing Single and Multi-Factor Models

In[32]:
Code
# Fit single-factor (CAPM) model for comparison
X_capm = sm.add_constant(ff_df["MKT"])
model_capm = sm.OLS(ff_df["excess_return"], X_capm).fit(
    cov_type="HAC", cov_kwds={"maxlags": 4}
)
Out[33]:
Console
Model Comparison: CAPM vs. Three-Factor
---------------------------------------------
Metric                    CAPM       3-Factor  
---------------------------------------------
R-squared                 0.5060     0.5526    
Adjusted R-squared        0.5050     0.5499    
Residual Std Err          0.013374   0.012752  
Alpha (annualized)        31.81%     29.53%

The three-factor model explains more variance (higher R-squared) and has smaller residual standard errors. Importantly, the alpha estimate often changes when additional factors are included: what appeared as "alpha" in the CAPM might be explained by exposure to size or value factors.

Out[34]:
Visualization
Bar chart comparing R-squared values for CAPM and Three-Factor models, with the Three-Factor bar reaching a higher value.
Comparison of explanatory power ($R^2$) between CAPM and Three-Factor models. The Three-Factor model explains a larger proportion of return variance.
Bar chart comparing residual standard error for CAPM and Three-Factor models, with the Three-Factor bar showing a lower value.
Comparison of residual standard error. The Three-Factor model reduces unexplained volatility compared to the single-factor CAPM.