import numpy as np
def MaxDrawdown1(Asset):
i = np.argmax((np.maximum.accumulate(Asset) - Asset) / np.maximum.accumulate(Asset))
if i == 0:
return 0
j = np.argmax(Asset[:i])
return (Asset[j] - Asset[i]) / (Asset[j])
def MaxDrawdown2(Asset):
flag = Asset[0]
bottom = Asset[0]
drawdown = [0]
d = 0
for v in Asset:
if v>=flag:
flag = v
bottom = v
drawdown.append(d)
elif v<=bottom:
bottom = v
d = (bottom-flag)/flag
drawdown.append(d)
maxdrawdown = -min(drawdown)
return maxdrawdown
最大回撤计算
最新推荐文章于 2025-06-05 16:32:10 发布