【发布时间】:2015-05-19 00:17:26
【问题描述】:
我有以下数据框:
Date RunningTotal
01-05-2015 100
02-05-2015 150
03_05-2015 140
04-05-2015 130
05_05_2015 140
06-05-2015 170
07-05-2015 180
我需要确定运行总数的最大值drawdown 的开始和结束。到目前为止,我能够确定最大回撤的起始索引位置和最大回撤的索引位置,如下所示:
df.set_index(['RunningTotal'], inplace=True)
max_drawdown_ix = np.argmax(np.maximum.accumulate(df.index) - df.index)+1
start_drawdown_ix = np.argmax(df.index[:max_drawdown_ix])
我无法确定回撤结束时的索引位置(即:运行总和何时高于回撤开始时的位置)。在上面的示例中,结果如下:
max_drawdown_ix occurs on 04_05_2015 which is index position 3
start_drawdown_ix occurs on 02_05_2015 which is index position 1
end_drawdown_ix occurs on 06_05_2015 which is index position 5
关于如何确定最大/最大回撤何时结束有什么建议吗? (即:如何判断第一次出现是runningtotal大于start_drawdown_ix,出现在max_drawdown_ix之后)
【问题讨论】:
-
数据可能包含多个回撤?如果是,您是否只需要最大的一个?
-
我只需要最大的一个。我发布的代码正确识别了最大回撤的开始,以及最大回撤位置。我需要知道的是最大的回撤何时结束。 (即:运行总额何时会大于缩编开始前。)谢谢。