def METHOD_NAME(
    df: pd.DataFrame, rate: int = 30, sigma: float = 2.0, dropna=True
) -> pd.DataFrame:
    """Compute Bollinger bands for a single stock over time. The dataframe passed in here should be
    represent a single timeseries.
    """
    price = df["close"]
    rma = price.rolling(window=rate).mean()
    rstd = price.rolling(window=rate).std()
    upper = rma + sigma * rstd
    lower = rma - sigma * rstd
    odf = pd.DataFrame({"name": df["name"], "date": df["date"], "upper": upper, "lower": lower})
    if dropna:
        odf = odf.dropna()
    return odf