Расчет ежемесячной и годовой доходности акций для многих фирм в Pandas - PullRequest
0 голосов
/ 01 апреля 2020

В настоящее время я работаю над проектом для своей диссертации и работаю с панелью данных Pandas, содержащей данные о нескольких фирмах, цены на которые варьируются в течение нескольких месяцев.

Что я хотел бы сделать, это:

  1. Чтобы рассчитать ежемесячную прибыль для каждой акции,
  2. Ежегодно эти ежемесячные доходы, чтобы для каждой акции мы могли видеть Ежегодная коммутационная производительность.

Данные панели на данный момент выглядят примерно так:

Date       Ticker       Price 
03/2003    AAPL         30.214 
04/2003    AAPL         32.456 
05/2003    AAPL         38.002
06/2003    AAPL         37.328 
...        ...           ...   
08/2010    TSLA         238.421 
09/2010    TSLA         245.332 
10/2010    TSLA         239.713
...        ...           ...  

Таким образом, я хотел бы создать столбец на стороне, показывающий ежемесячные изменения цены акций ([t2 / t1] -1). Учитывая это, создайте новый фрейм данных pandas с годовыми доходами и соответствующим тикером.

Заранее благодарю за помощь :)

1 Ответ

0 голосов
/ 01 апреля 2020

вот решение годовой доходности, с 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...