计算熊猫公司中许多公司的月度和年度股票收益

时间:2020-04-01 10:49:01

标签: python pandas numpy finance panel-data

我目前正在为我的论文开展项目,并且正在使用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)。鉴于此,请创建一个具有年化收益率和相应行情自动收录器的新熊猫数据框。

在此先感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

这是年收益的一种解决方案,对于熊猫来说,有很多方法可以做同样的事情。这是版本之一。如果您需要进一步说明,请告诉我。其中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)