вот решение годовой доходности, с pandas есть много способов сделать то же самое. Это одна из версий. Пожалуйста, дайте мне знать, если вам нужны дополнительные разъяснения. Где df
- ваш фрейм данных с данными панели
dfYearly = df.groupby(["Ticker", "Year"])["Date"].agg(["min", "max"]).reset_index()
dfYearly = dfYearly.merge(df[["Ticker", "Date", "Price"]], how="left", left_on=["Ticker", "min"], right_on=["Ticker","Date"])
dfYearly.rename(columns={"Price": "Price-Begin"}, inplace=True)
dfYearly.drop("Date", axis=1, inplace=True)
dfYearly = dfYearly.merge(df[["Ticker", "Date", "Price"]], how="left", left_on=["Ticker", "max"], right_on=["Ticker","Date"])
dfYearly.rename(columns={"Price": "Price-End"}, inplace=True)
dfYearly.drop(["Date", "min", "max"], axis=1, inplace=True)
dfYearly["Annual Return"] = np.round(dfYearly["Price-End"].values / dfYearly["Price-Begin"].values - 1, 3)