首页 > 解决方案 > 在 Python 中计算回报和波动率的更有效方法

问题描述

如果我在 CSV 中有多个时间序列并且想使用 Python 来计算收益和波动率,那么最有效的方法是什么?数据集将如下所示,不同的文件包含多个时间序列。

在此处输入图像描述

1)存储数据(即直接将整个表加载为数据框或将每个时间序列加载到字典中更有效(键是股票名称,值是价格)

2) 计算收益和波动率

我知道我可以使用 numpy 和 pandas 来执行以下操作:

xls = pd.ExcelFile(filepath) # load the file
df = xls.parse(xls.sheet_names[sheetNo]) # now the file content is in the dataframe
df[‘A_ret’] = np.log(df[‘A’] / df[‘A’].shift(1)) # 1day log return for time series A
df[‘A_volatility’] = pd.rolling_std(df[‘A_ret’],window=252) * np.sqrt(252) # 1y volatility for time series A

但由于我有很多列和很多文件要处理,我想知道是否有更好的方法。我读到 Python 可以编译部分代码以使用 Numba 使代码非常快。但是,如果我使用 for 循环不确定我是否可以在某些方面利用它来使代码更快地计算回报和波动率,那效果很好。

标签: pythonpandasnumpy

解决方案


推荐阅读