To estimate a model, you need two primary inputs:
portfolios: A $T imes P$ array of portfolio returns.factors: A $T imes K$ array of factor returns or shocks.
Note: Portfolios should be transformed into excess returns (subtracting the risk-free rate) prior to estimation.
Example using LinearFactorModel with kernel-based covariance:
from linearmodels.datasets import french
from linearmodels.asset_pricing import LinearFactorModel
# Load data
data = french.load()
# Prepare factors (e.g., Market, Size, Value)
factors = data[['MktRF', 'SMB', 'HML']]
# Prepare portfolios and transform to excess returns
portfolios = data[['S1V1','S1V3','S1V5','S5V1','S5V3','S5V5']].copy()
portfolios.loc[:,:] = portfolios.values - data[['RF']].values
# Initialize and fit the model
mod = LinearFactorModel(portfolios, factors)
res = mod.fit(cov_type='kernel')
print(res)
from linearmodels.datasets import french
data = french.load()
factors = data[['MktRF', 'SMB', 'HML']]
portfolios = data[['S1V1','S1V3','S1V5','S5V1','S5V3','S5V5']].copy()
portfolios.loc[:,:] = portfolios.values - data[['RF']].values
from linearmodels.asset_pricing import LinearFactorModel
mod = LinearFactorModel(portfolios, factors)
res = mod.fit(cov_type='kernel')
print(res)