1111from formulaic .materializers .types import NAAction
1212import numpy as np
1313from numpy .linalg import lstsq
14- import pandas
1514from pandas import DataFrame
1615from scipy .optimize import minimize
1716
@@ -99,7 +98,7 @@ def __repr__(self) -> str:
9998 def _drop_missing (self ) -> linearmodels .typing .data .BoolArray :
10099 data = (self .portfolios , self .factors )
101100 missing = cast (
102- linearmodels .typing .data .BoolArray ,
101+ " linearmodels.typing.data.BoolArray" ,
103102 np .any (np .c_ [[dh .isnull for dh in data ]], 0 ),
104103 )
105104 if any (missing ):
@@ -123,11 +122,11 @@ def _validate_data(self) -> None:
123122 )
124123 self ._drop_missing ()
125124
126- p = cast (linearmodels .typing .data .Float64Array , self .portfolios .ndarray )
127- f = cast (linearmodels .typing .data .Float64Array , self .factors .ndarray )
125+ p = cast (" linearmodels.typing.data.Float64Array" , self .portfolios .ndarray )
126+ f = cast (" linearmodels.typing.data.Float64Array" , self .factors .ndarray )
128127 if has_constant (p )[0 ]:
129128 raise ValueError (
130- "portfolios must not contains a constant or "
129+ "portfolios must not contain a constant or "
131130 "equivalent and must not have rank\n "
132131 "less than the dimension of the smaller shape."
133132 )
@@ -153,7 +152,7 @@ def formula(self, value: str | None) -> None:
153152
154153 @staticmethod
155154 def _prepare_data_from_formula (
156- formula : str , data : pandas . DataFrame , portfolios : pandas . DataFrame | None
155+ formula : str , data : DataFrame , portfolios : DataFrame | None
157156 ) -> tuple [DataFrame , DataFrame , str ]:
158157 orig_formula = formula
159158 na_action = NAAction ("raise" )
@@ -224,9 +223,9 @@ def __init__(self, portfolios: IVDataLike, factors: IVDataLike):
224223 def from_formula (
225224 cls ,
226225 formula : str ,
227- data : pandas . DataFrame ,
226+ data : DataFrame ,
228227 * ,
229- portfolios : pandas . DataFrame | None = None ,
228+ portfolios : DataFrame | None = None ,
230229 ) -> TradedFactorModel :
231230 """
232231 Parameters
@@ -349,7 +348,7 @@ def fit(
349348 kernel = kernel ,
350349 )
351350 bw = cov_est .bandwidth
352- _cov_config = { k : v for k , v in cov_config .items ()}
351+ _cov_config = dict ( cov_config .items ())
353352 _cov_config ["bandwidth" ] = bw
354353 rp_cov_est = KernelCovariance (
355354 fe ,
@@ -388,10 +387,10 @@ def fit(
388387 param_names = []
389388 for portfolio in self .portfolios .cols :
390389 param_names .append (f"alpha-{ portfolio } " )
391- for factor in self . factors . cols :
392- param_names . append ( f"beta-{ portfolio } -{ factor } " )
393- for factor in self . factors . cols :
394- param_names .append ( f"lambda-{ factor } " )
390+ param_names . extend (
391+ [ f"beta-{ portfolio } -{ factor } " for factor in self . factors . cols ]
392+ )
393+ param_names .extend ([ f"lambda-{ factor } " for factor in self . factors . cols ] )
395394
396395 res = AttrDict (
397396 params = params ,
@@ -540,9 +539,9 @@ def __init__(
540539 def from_formula (
541540 cls ,
542541 formula : str ,
543- data : pandas . DataFrame ,
542+ data : DataFrame ,
544543 * ,
545- portfolios : pandas . DataFrame | None = None ,
544+ portfolios : DataFrame | None = None ,
546545 risk_free : bool = False ,
547546 sigma : linearmodels .typing .data .ArrayLike | None = None ,
548547 ) -> LinearFactorModel :
@@ -693,12 +692,12 @@ def fit(
693692 param_names = []
694693 for portfolio in self .portfolios .cols :
695694 param_names .append (f"alpha-{ portfolio } " )
696- for factor in self .factors .cols :
697- param_names .append (f"beta-{ portfolio } -{ factor } " )
695+ param_names .extend (
696+ [f"beta-{ portfolio } -{ factor } " for factor in self .factors .cols ]
697+ )
698698 if not excess_returns :
699699 param_names .append ("lambda-risk_free" )
700- for factor in self .factors .cols :
701- param_names .append (f"lambda-{ factor } " )
700+ param_names .extend ([f"lambda-{ factor } " for factor in self .factors .cols ])
702701
703702 # Pivot vcv to remove unnecessary and have correct order
704703 order = np .reshape (np .arange (s1 ), (nport , nf + 1 ))
@@ -777,7 +776,7 @@ def _moments(
777776 sigma_inv = self ._sigma_inv
778777
779778 f = self .factors .ndarray
780- nobs , nf , nport , _ , s1 , s2 , s3 = self ._boundaries ()
779+ nobs , nf , nport , _ , _ , _ , _ = self ._boundaries ()
781780 fc = np .c_ [np .ones ((nobs , 1 )), f ]
782781 f_rep = np .tile (fc , (1 , nport ))
783782 eps_rep = np .tile (eps , (nf + 1 , 1 ))
@@ -844,9 +843,9 @@ def __init__(
844843 def from_formula (
845844 cls ,
846845 formula : str ,
847- data : pandas . DataFrame ,
846+ data : DataFrame ,
848847 * ,
849- portfolios : pandas . DataFrame | None = None ,
848+ portfolios : DataFrame | None = None ,
850849 risk_free : bool = False ,
851850 ) -> LinearFactorModelGMM :
852851 """
@@ -1098,8 +1097,9 @@ def fit(
10981097 r2 = 1.0 - residual_ss / total_ss
10991098 param_names = []
11001099 for portfolio in self .portfolios .cols :
1101- for factor in self .factors .cols :
1102- param_names .append (f"beta-{ portfolio } -{ factor } " )
1100+ param_names .extend (
1101+ [f"beta-{ portfolio } -{ factor } " for factor in self .factors .cols ]
1102+ )
11031103 if not excess_returns :
11041104 param_names .append ("lambda-risk_free" )
11051105 param_names .extend ([f"lambda-{ f } " for f in self .factors .cols ])
0 commit comments