如何使用Python中的返回计算MaximumDrawdown

2024-10-01 13:41:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有数据框final和我的投资组合的回报。我试图用返回值来计算MaxDrawdown。我尝试了下面的代码,并看到了许多stackexchange问题。但无法解决这个问题。有没有任何方法可以用投资组合的收益来计算最大的提取。在

              Returns
1/2/2009     0.030483579
1/5/2009     0.002872092
1/6/2009     0.01461333
1/7/2009    -0.032431836
1/8/2009     0.0055774
1/9/2009    -0.019844336
1/12/2009   -0.019705618
1/13/2009    0.001093185
1/14/2009   -0.032726765
1/15/2009    0.013635182
1/16/2009    0.009807648
1/20/2009   -0.044440252
1/21/2009    0.035156229
1/22/2009   -0.01460641
1/23/2009    0.007399468
1/26/2009    0.007910521
1/27/2009    0.007848472
1/28/2009    0.028944903
1/29/2009   -0.023816962
1/30/2009   -0.02550717
2/2/2009    -0.000292223
2/3/2009     0.020191091
2/4/2009    -7.93651E-06
2/5/2009     0.020070065
2/6/2009     0.026235957
2/9/2009    -0.001606124
2/10/2009   -0.03629415
2/11/2009    0.00248416
2/12/2009    0.001925152
2/13/2009   -0.00441840

代码:

^{pr2}$

有谁能帮我解决这个问题吗。谢谢!在


Tags: 数据方法代码收益returnsfinal返回值stackexchange
2条回答

IIUC在cumprod加上diff和min之后是最大下降量

(df.Returns+1).cumprod().diff().min()
Out[316]: -0.043177386133390616

基于MDD definition

^{pr2}$

您可以使用pandas.expanding()doc),然后将max应用到窗口,得到一个到目前为止最大缩进的数据帧。在

pandas.expanding将以pandas.rolling的方式应用函数,但使用一个从数据帧开始并扩展到当前行的窗口(有关窗口函数herepandas.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)放在一个数据帧中,以便比较结果:

^{pr2}$

相关问题 更多 >