我有一个数据框架,由数千个股票报价组成,按符号(tic(和日期排序。
Date tic prccd
0 1-1-20 AAPL 4.00
1 2-1-20 AAPL 4.10
2 3-1-20 AAPL 4.12
3 1-1-20 MSFT 6.00
4 2-1-20 MSFT 6.15
5 3-1-20 MSFT 6.10
带
stocks_data['log_return'] = np.log(1 + stocks_data.groupby('tic')['prccd'].pct_change())
我的目标是得到这些股票的对数日回报率。numpy函数是否确认groupby tic操作?
要计算每个tic
组的每日日志回报,请使用:
stocks_data['log_return'] = df.groupby('tic').prccd.transform(lambda x: np.log(x) - np.log(x.shift(1)))
或等效公式:
stocks_data['log_return'] = df.groupby('tic').prccd.transform(lambda x: np.log(x / x.shift(1)))
结果:
Date tic prccd log_return
0 1-1-20 AAPL 4.00 NaN
1 2-1-20 AAPL 4.10 0.024693
2 3-1-20 AAPL 4.12 0.004866
3 1-1-20 MSFT 6.00 NaN
4 2-1-20 MSFT 6.15 0.024693
5 3-1-20 MSFT 6.10 -0.008163