首页 > 解决方案 > 如何为非连续日期的季度 HPR 定义百分比变化函数

问题描述

我有一个大型数据框,其中包含一组 5 个债券的时间序列。我需要计算每只股票的季度持有期回报。我的日期是从 2013 年到 2021 年。有没有什么办法可以在不繁琐的工作的情况下做到这一点?

这是我的数据框中的一个片段,它显示了五个债券之一。

date,isin,asset_name,oas_bp,moody_rating,price
11/01/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,392.5617321,Baa3,88.974998
12/01/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,392.5842828,Baa3,87.367996
11/02/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,392.5617321,Baa3,88.974998
12/02/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,393.4720759,Baa3,86.835999
11/03/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,392.5617321,Baa3,88.974998
12/03/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,393.2453897,Baa3,87.073997
11/04/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,385.458694,Baa3,89.027
12/04/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,394.9549884,Baa3,86.370003
11/05/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,391.1068957,Baa3,87.774002
12/05/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,395.1016716,Baa3,86.275002
11/06/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,394.1597822,Baa3,87.648003
12/06/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,394.6755953,Baa3,86.264999
11/07/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,393.7169591,Baa3,88.099998
12/07/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,394.6755953,Baa3,86.264999
11/08/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,403.9096138,Baa3,85.853996
12/08/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,394.8397875,Baa3,86.264999
11/09/2013,US18683KAC53,CLIFFS NATURAL RESOURCES INC,403.9096138,Baa3,85.853996

我已经为每个债券单独定义了 DataFrames,并有以下代码计算其中一个债券四分之一的百分比变化。

mask = (df[cliff]['date'] >= '2013-1-1') & (df['date'] <= '2013-3-31')
 print(df.loc[mask])

print(100*(df.loc[mask].iloc[-1]['price']-df.loc[mask].iloc[0]['price'])/df.loc[mask].iloc[0]['price'])

但我在 9 年内有 5 次债券,这意味着我必须这样做 180 次。我如何定义一个函数来为我做这件事?

标签: pythonpandasdatetimestock

解决方案


推荐阅读