def METHOD_NAME(
    vol: pd.Series,
    floor_min_quant: float = 0.05,
    floor_min_periods: int = 100,
    floor_days: int = 500,
) -> pd.Series:
    # Find the rolling 5% quantile point to set as a minimum
    vol_min = vol.rolling(min_periods=floor_min_periods, window=floor_days).quantile(
        quantile=floor_min_quant
    )
    # set this to zero for the first value then propagate forward, ensures
    # we always have a value
    vol_min.iloc[0] = 0.0
    vol_min.ffill(inplace=True)
    # apply the vol floor
    vol_floored = np.maximum(vol, vol_min)
    return vol_floored