如何在 Python 中使用 Returns 计算 MaximumDrawdown

Ale*_*_MN 2 python finance quantitative-finance pandas

我有 DataFramefinal与我的投资组合的回报。我正在尝试使用回报来计算 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
Run Code Online (Sandbox Code Playgroud)

代码:

cum_returns = (1 + final).cumprod()
drawdown =  1 - final.div(final.cummax())
Run Code Online (Sandbox Code Playgroud)

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

WeN*_*Ben 5

IIUC后cumprod添加diff和最小值是最大拉降

(df.Returns+1).cumprod().diff().min()
Out[316]: -0.043177386133390616
Run Code Online (Sandbox Code Playgroud)

基于 MDD定义

s=(df.Returns+1).cumprod()
np.ptp(s)/s.max()
Out[319]: 0.11457761692384323
Run Code Online (Sandbox Code Playgroud)