sf_quant.research.run_quantile_ff_regression#
- sf_quant.research.run_quantile_ff_regression(portfolio_returns: DataFrame) DataFrame#
Run Fama-French 5-factor regressions on portfolio returns.
This function performs ordinary least squares regression of portfolio excess returns against the Fama-French 5 factors (market, size, value, profitability, and investment). It computes alphas, betas, t-statistics, and other regression statistics for each portfolio.
Parameters#
- portfolio_returnspl.DataFrame
Portfolio returns data containing:
date(date): The observation date.Portfolio return columns (e.g.,
p_1,p_2, …,spread).
Returns#
- pl.DataFrame
Regression results with rows as statistics and columns as portfolios:
feature_names(str): Statistic name (alpha, alpha_t, beta_mkt, mkt_t, beta_smb, smb_t, beta_hml, hml_t, beta_rmw, rmw_t, beta_cma, cma_t).Portfolio columns (e.g.,
p_1,p_2, …,spread): Values for each coefficient or t-statistic.
Notes#
Fama-French factors are automatically loaded based on date range in portfolio_returns.
Portfolio excess returns are computed as portfolio return minus risk-free rate.
Regressions use OLS with intercept.
Results are transposed so rows are statistics and columns are portfolios.
Examples#
>>> import polars as pl >>> import sf_quant.research as sfr >>> import datetime as dt >>> ports = pl.DataFrame({ ... 'date': [dt.date(2024, 1, i) for i in range(1, 100)], ... 'p_1': [0.01] * 99, ... 'p_10': [0.02] * 99, ... 'spread': [0.01] * 99 ... }) >>> results = sfr.run_quantile_ff_regression(ports) >>> results shape: (12, 4) ┌───────────────┬──────────┬──────────┬──────────┐ │ feature_names ┆ p_1 ┆ p_10 ┆ spread │ │ --- ┆ --- ┆ --- ┆ --- │ │ str ┆ f64 ┆ f64 ┆ f64 │ ╞═══════════════╪══════════╪══════════╪══════════╡ │ alpha ┆ 0.0023 ┆ 0.0045 ┆ 0.0078 │ │ alpha_t ┆ 2.134 ┆ 3.421 ┆ 4.532 │ │ beta_mkt ┆ 1.123 ┆ 0.987 ┆ 0.854 │ │ mkt_t ┆ 15.234 ┆ 14.123 ┆ 12.456 │ │ beta_smb ┆ 0.234 ┆ -0.123 ┆ -0.345 │ │ smb_t ┆ 3.456 ┆ -2.134 ┆ -4.567 │ │ beta_hml ┆ -0.145 ┆ 0.234 ┆ 0.456 │ │ hml_t ┆ -2.345 ┆ 3.456 ┆ 5.678 │ │ beta_rmw ┆ 0.123 ┆ 0.234 ┆ 0.345 │ │ rmw_t ┆ 2.345 ┆ 3.456 ┆ 4.567 │ │ beta_cma ┆ -0.234 ┆ -0.345 ┆ -0.456 │ │ cma_t ┆ -3.456 ┆ -4.567 ┆ -5.678 │ └───────────────┴──────────┴──────────┴──────────┘