繁体   English   中英

我们如何根据每日股票收盘价获得每周和每月的回报? 我所有的数据都在 dataframe

[英]How can we get weekly and monthly returns based on daily stock closing prices? All my data is in a dataframe

我的dataframe原来是这样的

            index ticker   Adj Close
Date                                
2022-01-03  0      AXP    166.056259
2022-01-04  1      AXP    171.387100
2022-01-05  2      AXP    169.560791
2022-01-06  3      AXP    171.114563
2022-01-07  4      AXP    172.579315

或者,如果我重置索引,它看起来像这样。

        Date ticker   Adj Close
0 2022-01-03  AXP    166.056229
1 2022-01-04  AXP    171.387100
2 2022-01-05  AXP    169.560791
3 2022-01-06  AXP    171.114563
4 2022-01-07  AXP    172.579300

我有 30 只股票的收盘价,DF 的形状是 (1769, 3)。 我可以轻松获得回报和平均回报:

returns = table.pct_change()
mean_returns = returns.mean()

获得每周和每月回报的最简单方法是什么? 一定有某种 df.groupby 'W' 或 'M',然后自动计算收益,但是当我谷歌时,我没有找到很多。 关于如何让它工作数周和数月的任何想法?

您可以将月份和星期提取为单独的列,如下所示,然后您可以将 groupby 与聚合一起使用 first 和 last 这将允许您计算整周的收益(如果您持有股票)

import random
import pandas as pd

value = random.sample(range(1, 80), 79)
begin_date = '2019-10-16'

df = pd.DataFrame({'value': value,
                   'ticker':'tst',
                   'date':pd.date_range(begin_date, periods=len(value))})

df['year'] = df['date'].dt.isocalendar().year
df['week'] = df['date'].dt.isocalendar().week
df['month'] = df['date'].dt.month

weekly_increase = df.groupby(['year', 'week']).agg(['first','last'])
weekly_increase['increase'] = (weekly_increase[('value','last')] - weekly_increase[('value','first')]) / weekly_increase[('value','first')]

print(weekly_increase)

结果是

          value      ticker            date            month        increase
          first last  first last      first       last first last           
year week                                                                   
2019 42       5   59    tst  tst 2019-10-16 2019-10-20    10   10  10.800000
     43      79    3    tst  tst 2019-10-21 2019-10-27    10   10  -0.962025
     44      58   26    tst  tst 2019-10-28 2019-11-03    10   11  -0.551724
     45      70   31    tst  tst 2019-11-04 2019-11-10    11   11  -0.557143
     46      78   62    tst  tst 2019-11-11 2019-11-17    11   11  -0.205128

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM