gpt4 book ai didi

python - 计算 Pandas 的累积复合返回

转载 作者:太空狗 更新时间:2023-10-30 00:59:21 26 4
gpt4 key购买 nike

我有一系列每日百分比返回返回:

                   Returns
Date
2003-03-03 0.0332
2003-03-04 0.0216
2003-03-05 0.0134
...
2010-12-29 0.0134
2010-12-30 0.0133
2010-12-31 -0.0297

我可以通过将初始值的值设置为 1 并使用 cumprod()

来计算返回索引
ret_index = (1 + returns).cumprod()

ret_index[0] = 1

这给了我这样的东西:

Date
2003-03-03 1.0000
2003-03-04 1.0123
2003-03-05 1.1334
...
2010-12-29 2.3344
2010-12-30 2.3544
2010-12-31 2.3643

所以我整个系列的累计复合百分比返回率约为 236%。

我的问题:我想计算系列(2003 年、2004 年...2010 年)中每一年的累计复合百分比返回。

我能想到的唯一方法是遍历我的初始系列,按年对其进行切片,将第一个元素设置为 1,然后计算每年的返回。我认为使用 datetime(索引是 Datetimeindex)和重采样有更简单的方法。

有人能帮忙吗?

最佳答案

对我来说它返回了一些不同的结果,但我认为你需要 groupby:

a = df.add(1).cumprod()
a.Returns.iat[0] = 1
print (a)
Returns
Date
2003-03-03 1.000000
2003-03-04 1.055517
2003-03-05 1.069661
2010-12-29 1.083995
2010-12-30 1.098412
2010-12-31 1.065789

def f(x):
#print (x)
a = x.add(1).cumprod()
a.Returns.iat[0] = 1
return a

print (df.groupby(df.index.year).apply(f))

Returns
Date
2003-03-03 1.000000
2003-03-04 1.055517
2003-03-05 1.069661
2010-12-29 1.000000
2010-12-30 1.026878
2010-12-31 0.996380

关于python - 计算 Pandas 的累积复合返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42671418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com