diff --git a/numerblox/evaluation.py b/numerblox/evaluation.py index af761e5a..7ae841db 100644 --- a/numerblox/evaluation.py +++ b/numerblox/evaluation.py @@ -148,7 +148,8 @@ def per_era_corrs( return dataf.groupby(dataf[self.era_col]).apply( lambda d: self._normalize_uniform(d[pred_col].fillna(0.5)).corr( d[target_col] - ) + ), + include_groups=False, ) def mean_std_sharpe( @@ -207,7 +208,8 @@ def max_feature_exposure( ) -> np.float64: """Maximum exposure over all features.""" max_per_era = dataf.groupby(self.era_col).apply( - lambda d: d[dataf.feature_cols].corrwith(d[pred_col]).abs().max() + lambda d: d[dataf.feature_cols].corrwith(d[pred_col]).abs().max(), + include_groups=False, ) max_feature_exposure = max_per_era.mean(skipna=True) return max_feature_exposure diff --git a/numerblox/postprocessing.py b/numerblox/postprocessing.py index 1960b3b7..285831bc 100644 --- a/numerblox/postprocessing.py +++ b/numerblox/postprocessing.py @@ -184,7 +184,8 @@ def __init__( def transform(self, dataf: NumerFrame) -> NumerFrame: feature_names = self.feature_names if self.feature_names else dataf.feature_cols neutralized_preds = dataf.groupby(dataf.meta.era_col).apply( - lambda x: self.normalize_and_neutralize(x, [self.pred_name], feature_names) + lambda x: self.normalize_and_neutralize(x, [self.pred_name], feature_names), + include_groups=False, ) dataf.loc[:, self.new_col_name] = MinMaxScaler().fit_transform( neutralized_preds