Skip to content

[ENH] Add Fama-French 3-factor and 5-factor expected return models - #733

Open
WilliamTDavies wants to merge 3 commits into
PyPortfolio:mainfrom
WilliamTDavies:ff-expected-returns
Open

[ENH] Add Fama-French 3-factor and 5-factor expected return models#733
WilliamTDavies wants to merge 3 commits into
PyPortfolio:mainfrom
WilliamTDavies:ff-expected-returns

Conversation

@WilliamTDavies

@WilliamTDavies WilliamTDavies commented Jun 8, 2026

Copy link
Copy Markdown

Closes #595
Closes #634

Summary

Adds Fama-French three-factor and five-factor expected-return estimation.

Implementation

  • Adds ff_return() with support for model="ff3" and model="ff5".
  • Estimates asset factor loadings using OLS and historical mean factor premia.
  • Uses the regression intercept when estimating loadings but does not treat it as expected abnormal return.
  • Aligns asset and factor observations by date and handles missing observations independently for each asset.
  • Requires simple factor returns expressed as decimals and rejects incompatible log returns.
  • Adds ff3_return and ff5_return dispatch through return_model().

Documentation

  • Documents the FF3 and FF5 specifications.
  • Documents required factor columns and input units.
  • Updates the expected-returns feature list.

Tests

Tests cover:

  • FF3 and FF5 estimation.
  • Recovery of known synthetic factor loadings.
  • return_model() dispatch for both models.
  • Compounding and non-compounding annualisation.
  • Missing required columns and invalid model names.
  • Non-overlapping and missing observations.
  • Independent handling of missing asset data.
  • Rejection of log returns.
  • Additional unused factor columns.

Local validation: 35 expected-return tests pass, and all relevant pre-commit hooks pass.

@WilliamTDavies WilliamTDavies changed the title Added Fama-French 3-factor and 5-factor expected return models [ENH] Added Fama-French 3-factor and 5-factor expected return models Jun 18, 2026
@WilliamTDavies WilliamTDavies changed the title [ENH] Added Fama-French 3-factor and 5-factor expected return models [ENH] Add Fama-French 3-factor and 5-factor expected return models Sep 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant