在python中如何在包含30只股票的数据集中找到年化收益率

2024-06-08 16:24:44 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个包含30只股票收盘价的数据集。我必须找出每只股票的平均年化收益率和波动率。我对这个公式没有问题,我似乎无法计算出如何迭代每个股票,然后找到它的收盘价,然后将每个收盘价保存在不同的列中。你知道吗

我尝试过:

我尝试遍历这些列,然后返回这些列,然后将函数赋给如下变量:

def get_columns(df):
    for columns in df:
        return columns

namesOfColumn = get_columns(df)

当我检查namesOfColumn的类型时,它返回str,当我检查字符串的内容时,它是数据集中第一列的标题。你知道吗

我也试过了

def get_columns(df):
    for columns in df:
        column = df[columns]
        for column in df[columns]:
            stock = column
            returns = df[stock].pct_change()

我当前的数据帧看起来像

  A Close  B Close 
0 823.45   201.9
1 824.90   198.9
2 823.60   198.3

A&B是公司的名称。你知道吗

这样总共有30列,每列大约有240个值。你知道吗

  A Return  B Return 
0 xxxx.xx   xxxx.xx

我希望我的输出像这样 我想找到每只股票的年回报率,然后将回报率保存在字典中,然后将字典转换为数据帧。你知道吗


Tags: columns数据indfforclosegetreturn
1条回答
网友
1楼 · 发布于 2024-06-08 16:24:44

假设您的数据帧的索引是datetime格式,您可以只使用pandas重采样(下面我每年重采样一次-请参阅pandas重采样文档了解更多信息),然后执行以下操作:

(1 + df.pct_change()).resample('Y').prod() - 1

由于您的数据帧似乎没有使用datetime编制索引,因此必须首先重新编制索引(然后应用上面显示的代码),如下所示:

import pandas as pd
initial_date = '20XX-XX-XX' #set here the initial date of your dataframe   
end_date = '20XX-XX-XX' #set here the end date of your dataframe
df.set_index(pd.date_range(start=initial_date, end=end_date) inplace=True)

相关问题 更多 >