rlportfolio.data.scalers module

class GroupByScaler

Bases: BaseEstimator, TransformerMixin

Sklearn-like scaler that scales considering groups of data.

In the financial setting, this scale can be used to normalize a DataFrame with time series of multiple tickers. The scaler will fit and transform data for each ticker independently.

__init__(by: str, scaler: type[~sklearn.preprocessing._data.MaxAbsScaler | ~sklearn.preprocessing._data.MinMaxScaler | ~sklearn.preprocessing._data.StandardScaler | ~sklearn.preprocessing._data.RobustScaler] = <class 'sklearn.preprocessing._data.MaxAbsScaler'>, columns: list[str] | None = None, scaler_kwargs: dict[str, ~typing.Any] = None) GroupByScaler

Initializes GoupBy scaler.

Parameters:
  • by – Name of column that will be used to group.

  • scaler – Scikit-learn scaler class to be used.

  • columns – List of columns that will be scaled.

  • scaler_kwargs – Keyword arguments for chosen scaler.

fit(X: DataFrame, y: Any = None) GroupByScaler

Fits the scaler to input data.

Parameters:
  • X – DataFrame to fit.

  • y – Not used.

Returns:

Fitted GroupBy scaler.

transform(X: DataFrame, y: Any = None) DataFrame

Transforms unscaled data.

Parameters:
  • X – DataFrame to transform.

  • y – Not used.

Returns:

Transformed DataFrame.