关于 max_drawdown(networth) 的疑问
Closed this issue · 0 comments
onshek commented
在这个函数中,我注意到 duration[t] = 0 if drawdown[t] <= 0 else duration[t-1] + 1
,这计算出来的是新高到下一个新高中的天数,而不是“最大回撤”的天数,不知是我理解有误还是特意为之?
def max_drawdown(networth):
""" 统计最大回测和相应的回测周期。
networth: 历史净值
"""
hwm = [0] # 历史最大值序列变量
eq_idx = networth.index
drawdown = pd.Series(index=eq_idx)
duration = pd.Series(index=eq_idx)
for t in range(1, len(eq_idx)):
cur_hwm = max(hwm[t-1], networth[t])
hwm.append(cur_hwm)
drawdown[t] = hwm[t] - networth[t]
# <=0 新高,计数0
duration[t] = 0 if drawdown[t] <= 0 else duration[t-1] + 1
return drawdown.max(), duration.max()