Вы можете получить фрейм данных с максимальной просадкой до даты, используя pandas.expanding()
( doc ) и затем применив к окну max
.
pandas.expanding
будет применятьсяфункция в порядке pandas.rolling , но с окном, которое начинается в начале информационного кадра и расширяется до текущей строки (больше информации о функциях окна здесь и pandas.expanding ):
>> cum_returns = (1 + final).cumprod()
>> drawdown = 1 - final.div(final.cummax())
>> drawdown.expanding().max()
Returns
1/2/2009 0.000000
1/5/2009 0.000000
1/6/2009 0.000000
1/7/2009 0.032432
1/8/2009 0.032432
1/9/2009 0.046343
1/12/2009 0.065136
1/13/2009 0.065136
1/14/2009 0.094742
1/15/2009 0.094742
1/16/2009 0.094742
1/20/2009 0.114578
1/21/2009 0.114578
1/22/2009 0.114578
1/23/2009 0.114578
1/26/2009 0.114578
1/27/2009 0.114578
1/28/2009 0.114578
1/29/2009 0.114578
1/30/2009 0.114578
2/2/2009 0.114578
2/3/2009 0.114578
2/4/2009 0.114578
2/5/2009 0.114578
2/6/2009 0.114578
2/9/2009 0.114578
2/10/2009 0.114578
2/11/2009 0.114578
2/12/2009 0.114578
2/13/2009 0.114578
Объединение просадок и максимальной просадки (MDD) вместе в кадре данных, чтобы вы могли сравнить результат:
>> df_dd = pd.concat([drawdown, drawdown.expanding().max()], axis=1)
>> df_dd.columns = ['drawdown', 'MDD']
>> df_dd
drawdown MDD
1/2/2009 0.000000 0.000000
1/5/2009 0.000000 0.000000
1/6/2009 0.000000 0.000000
1/7/2009 0.032432 0.032432
1/8/2009 0.027035 0.032432
1/9/2009 0.046343 0.046343
1/12/2009 0.065136 0.065136
1/13/2009 0.064114 0.065136
1/14/2009 0.094742 0.094742
1/15/2009 0.082399 0.094742
1/16/2009 0.073399 0.094742
1/20/2009 0.114578 0.114578
1/21/2009 0.083450 0.114578
1/22/2009 0.096837 0.114578
1/23/2009 0.090154 0.114578
1/26/2009 0.082957 0.114578
1/27/2009 0.075759 0.114578
1/28/2009 0.049007 0.114578
1/29/2009 0.071657 0.114578
1/30/2009 0.095336 0.114578
2/2/2009 0.095601 0.114578
2/3/2009 0.077340 0.114578
2/4/2009 0.077347 0.114578
2/5/2009 0.058830 0.114578
2/6/2009 0.034137 0.114578
2/9/2009 0.035688 0.114578
2/10/2009 0.070687 0.114578
2/11/2009 0.068379 0.114578
2/12/2009 0.066585 0.114578
2/13/2009 0.070709 0.114578