已知本金100,在10天交易了6段,下面是6段交易的回报,(每次交易的本金是100).
rt = [10,12,15,18,-6,-9]
最大回撤率
def MaxDrawdown(rt):
'''最大回撤率'''
i = np.argmax((np.maximum.accumulate(rt) - rt)/np.maximum.accumulate(rt)) # 结束位置
if i == 0:
return 0
j = np.argmax(rt[:i]) # 开始位置
return (rt[j] - rt[i])/rt[j]
rt 表示的是现在钱包的总净值,则
先将6段交易rt = [10,12,15,18,-6,-9]转化成净利润 [10,22,37,55,49,40],再加上本金100元,rt为
[110, 122, 137, 155, 149, 140]
其中的最大回撤为(155-140)/155 = 0.097
python如下所示:
rt = np.cumsum(li)
rt = [x+100 for x in rt]
print(rt) #[110, 122, 137, 155, 149, 140]
print(MaxDrawdown(rt)) # 0.0967741935483871
如果把前面几段交易拿掉,当rt = [18,-6,-9]时,最大回撤为 (118-103)/118 = 0.127
这与上述结果不一致,说明最大回撤与所有的交易段有关