我对Python,Pandas和一般的投资组合统计数据都很陌生。我有一个包含不同资产和超过4000行返回数字的大型投资组合。我正在尝试计算每个资产(列)的最高N max下降的开始,结束和持续时间。我正在使用Pandas库,我在我的下拉列表中应用nsmallest()来找出最大n个最小值,即最大下降值,然后我遍历列并将每个资产的最大下拉值添加到ndrawdown列表中。但是,我很难找到这些下降和持续时间的开始。这就是我到目前为止所做的:
def max_drawdown(self, ddcount):
returns = self.df
maxd = returns.cummax()
dd = returns/maxd - 1.0
def finddrawdowns(n, count=ddcount):
dd1 = dd.nsmallest(count, dd.columns[n])
d = dd1[dd1.columns[n]]
return d
ndrawdowns = []
for a in range(0, length):
values = finddrawdowns(a)
ndrawdowns.append(values)
return ndrawdowns
欢迎任何建议!谢谢!