def METHOD_NAME(self, df, args={}):
    """Makes forecasts with the StatsForecast Handler.
    StatsForecast is setup to predict for all groups, so it won't handle
    a dataframe that's been filtered to one group very well. Instead, we make
    the prediction for all groups then take care of the filtering after the
    forecasting. Prediction is nearly instant.
    """
    # Load model arguments
    model_args = self.model_storage.json_get("model_args")
    training_df = dill.loads(self.model_storage.file_get("training_df"))
    fitted_models = dill.loads(self.model_storage.file_get("fitted_models"))
    prediction_df = transform_to_nixtla_df(df, model_args)
    groups_to_keep = prediction_df["unique_id"].unique()
    sf = StatsForecast(models=[], freq=model_args["frequency"], df=training_df)
    sf.fitted_ = fitted_models
    forecast_df = sf.METHOD_NAME(model_args["horizon"])
    if model_args["hierarchy"]:
        hier_df = dill.loads(self.model_storage.file_get("hier_df"))
        hier_dict = dill.loads(self.model_storage.file_get("hier_dict"))
        reconciled_df = reconcile_forecasts(training_df, forecast_df, hier_df, hier_dict)
        results_df = reconciled_df[reconciled_df.index.isin(groups_to_keep)]
    else:
        results_df = forecast_df[forecast_df.index.isin(groups_to_keep)]
    result = get_results_from_nixtla_df(results_df, model_args)
    ts_col = model_args["order_by"]
    if len(result) > 0 and isinstance(result.iloc[0][ts_col], dt.date):
        result[ts_col] = result[ts_col].dt.date
    return result