There are three estimators for linear factor asset pricing models:
TradedFactorModelimplements an estimator which is appropriate when all factors are traded assets. When this is the case, the model can be estimated using regressions as a SUR.
LinearFactorModelimplements a general purpose estimator based on the 2-step strategy where the first step estimated the factor loadings and the second step estimates the risk premia using the estimates from the first step. This model is appropriate for both traded and non-traded factors.
LinearFactorModelGMMimplements a version of the 2-step model using GMM. The GMM estimator is relatively efficient and so should be preferred. The continuously updating version can is available using an options when fitting the model (
All estimators implement both standard heteroskedasticity robust inference (the default) as well as kernel-based HAC estimators using eights based on the Bartlett kernel (Newey-West), the Parzen kernel or the Quadratic-Spectral kernel.
The basic usage is the same for all three estimators. Two inputs are required:
portfolios- The test portfolios. A T by P array of portfolio returns.
factors- The priced factors. A T by K array of factor returns or shocks.
This example makes use of some data from Ken French’s data library. The factors are the market, the size factor and the value factor. Sis test portfolios are used with both small and large firm size (S1 and S5) and low and high value (V1 and V5). The portfolios are transformed into excess returns prior to estimation.
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)
LinearFactorModel Estimation Summary ================================================================================ No. Test Portfolios: 6 R-squared: 0.8879 No. Factors: 3 J-statistic: 39.109 No. Observations: 819 P-value 0.0000 Date: Sun, May 21 2017 Distribution: chi2(3) Time: 21:18:56 Cov. Estimator: kernel Risk Premia Estimates ============================================================================== Parameter Std. Err. T-stat P-value Lower CI Upper CI ------------------------------------------------------------------------------ MktRF 0.0060 0.0016 3.7381 0.0002 0.0029 0.0092 SMB 0.0001 0.0011 0.1281 0.8980 -0.0021 0.0023 HML 0.0045 0.0012 3.7904 0.0002 0.0022 0.0068 ============================================================================== Covariance estimator: KernelCovariance, Kernel: bartlett, Bandwidth: 4 See full_summary for complete results